unit FDLGCLIENTEAUX;

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  StdCtrls, Buttons, ExtCtrls, Grids, DBGrids, Db, DBCtrls;

type
  TDLGCLIENTEAUX = class(TForm)
    Panel1: TPanel;
    Panel2: TPanel;
    bcancelar: TBitBtn;
    bok: TBitBtn;
    DBGrid1: TDBGrid;
    DsfdlgCLIENTE: TDataSource;
    DBNavigator1: TDBNavigator;
    Panel3: TPanel;
    Label1: TLabel;
    Edit1: TEdit;
    procedure DBGrid1DblClick(Sender: TObject);
    procedure FormShow(Sender: TObject);
    procedure DBGrid1KeyPress(Sender: TObject; var Key: Char);
    procedure FormCreate(Sender: TObject);
    procedure FormDestroy(Sender: TObject);
    procedure DBNavigator1Click(Sender: TObject; Button: TNavigateBtn);
    procedure DsfdlgCLIENTEDataChange(Sender: TObject; Field: TField);
    procedure Edit1Exit(Sender: TObject);
    procedure Edit1KeyPress(Sender: TObject; var Key: Char);
    procedure Edit1Enter(Sender: TObject);
    procedure bcancelarClick(Sender: TObject);
    procedure DBGrid1TitleClick(Column: TColumn);
    procedure DBGrid1MouseMove(Sender: TObject; Shift: TShiftState; X,
      Y: Integer);
  private
    { Private declarations }
    ANTERIOR:STRING;
    function GetCLIENTE:string;
    procedure SetCLIENTE(nif:string);
    function getnombre:string;
  public
    { Public declarations }
     CerrarDataset:boolean;
     VER:STRING;
    // la uso para cerrar fdlCLIENTEes, pq esto lo utilizo en otros que
    // no son fdlCLIENTEes, y se queda abierto.
    // lo cierro por defecto, al menos que desde fdlgCLIENTEes le diga que
    // no.

    property codigo:string read GetCLIENTE write SetCLIENTE;
    property nombre:string read GetNombre;
  end;

var
  DLGCLIENTEAUX: TDLGCLIENTEAUX;


implementation

uses UDMGS, menu;

{$R *.DFM}
function TDLGCLIENTEAUX.GetNombre:string;
begin
  result := DMGS.CDSQ_CLIENTEAUXnombre.AsString;
end;

procedure TDLGCLIENTEAUX.FormCreate(Sender: TObject);
begin
  try
    dbgrid1.Columns.loadfromfile(FMENU.PATHDBGRID +'\'+SELF.Name);
  except
  end;


  if DMGS.CDSQ_CLIENTEAUX.active then
     DMGS.CDSQ_CLIENTEAUX.close;
  dsfdlgCLIENTE.DataSet := DMGS.CDSQ_CLIENTEAUX;
  BOK.Enabled:=false;
//  son_datosexteriores:=false;
  CerrarDataset := true;
  VER :='0'; // SOLO MUESTRA LOS NO BORRADOS.

   with DMGS.CDSQ_CLIENTEAUX do
   BEGIN
      Close;
      DMGS.CLABGRNOMBRE :='%';
      DMGS.CLABGRBORRADO := VER;
      DMGS.CLABGRTIPO := '1';
      Open;
   END;
   ANTERIOR:='%';

end;
procedure TDLGCLIENTEAUX.FormDestroy(Sender: TObject);
begin
// esto hace falta pq uso cdsq_fdlgCLIENTEes en fCLIENTEes
// y si dsfdlgCLIENTEes apunta a cdsq_fdlgCLIENTEes cuando cambia
// de datos llama a la funcion que hay en el formulario fdlgCLIENTE
 dsfdlgCLIENTE.DataSet := nil;
// si lo llamo de fCLIENTE hay que poner esta variable a false
 if CerrarDataset then
    DMGS.CDSQ_CLIENTEAUX.close;

  try
    dbgrid1.Columns.SAVETOfile(FMENU.PATHDBGRID +'\'+SELF.Name);
  except
  end;
    

end;


procedure TDLGCLIENTEAUX.DBNavigator1Click(Sender: TObject;
  Button: TNavigateBtn);
begin
if button = nbNext then
 if edit1.Focused then
 BEGIN
    DBGRID1.SetFocus;
    DMGS.CDSQ_CLIENTEAUX.FIRST;    
 END;
IF DMGS.CDSQ_CLIENTEAUX.EOF  THEN
try // para evitar el error de memoria bloqueada en el server.
    DMGS.CDSQ_CLIENTEAUX.GetNextPacket;
except
end;
end;

procedure TDLGCLIENTEAUX.DsfdlgCLIENTEDataChange(Sender: TObject;
  Field: TField);
begin
if ((DMGS.CDSQ_CLIENTEAUX.Eof)AND (NOT (DMGS.CDSQ_CLIENTEAUX.STATE IN [DSEDIT,DSINSERT]))) then
try // para evitar el error de memoria bloqueada en el server.
    DMGS.CDSQ_CLIENTEAUX.GetNextPacket;
except
end;
end;
procedure TDLGCLIENTEAUX.DBGrid1DblClick(Sender: TObject);
begin
    bok.click;
end;

procedure TDLGCLIENTEAUX.Edit1Exit(Sender: TObject);
begin
      with DMGS.CDSQ_CLIENTEAUX do
       IF NOT(TRIM(EDIT1.Text)='')
       AND (ANTERIOR<>TRIM(EDIT1.Text))
       THEN
       BEGIN
        Close;
        DMGS.CLABGRNOMBRE :=TRIM(EDIT1.Text);
        DMGS.CLABGRBORRADO := VER;
        DMGS.CLABGRTIPO := '1';
        Open;
       END;
     ANTERIOR:=TRIM(EDIT1.Text);
  BOK.Enabled := TRUE;
end;

procedure TDLGCLIENTEAUX.Edit1KeyPress(Sender: TObject; var Key: Char);
begin
  if key = #13 then
    BEGIN
        Perform(WM_NextDLGCtl, 0, 0);
        key:=#0;
    END;
end;
procedure TDLGCLIENTEAUX.FormShow(Sender: TObject);
begin
   EDIT1.SetFocus;
end;

procedure TDLGCLIENTEAUX.Edit1Enter(Sender: TObject);
begin
    BOK.Enabled := FALSE;
end;

procedure TDLGCLIENTEAUX.bcancelarClick(Sender: TObject);
begin
  if DMGS.CDSQ_CLIENTEAUX.active then
     DMGS.CDSQ_CLIENTEAUX.Close;
//  SI CLIENTEES USA ALGUN CDSDATASET, CERRARLO AQUI.
  modalresult:= mrCancel;
end;
function TDLGCLIENTEAUX.GetCLIENTE:string;
begin
    result:=DMGS.CDSQ_CLIENTEAUXid_cliente.asstring;
end;

//***********************************************************
//***********************************************************
procedure TDLGCLIENTEAUX.SetCLIENTE(nif:string);
begin
end;
procedure TDLGCLIENTEAUX.DBGrid1KeyPress(Sender: TObject; var Key: Char);
begin
end;
//************************************************************************


procedure TDLGCLIENTEAUX.DBGrid1TitleClick(Column: TColumn);
var aux:string;
begin
// CON ESTA FUNCION ORDENO ASCENDENTE Y DESCENDENTE LAS COLUMNAS
// AL PULSAR SOBRE EL TITULO
 aux := uppercase(column.Field.Name);
 IF AUX = 'CDSQ_CLIENTEAUXID_CLIENTE' THEN
    IF dmgs.CDSQ_CLIENTEAUX.IndexFIELDNameS = '' THEN
       dmgs.CDSQ_CLIENTEAUX.IndexFIELDNameS := 'ID_CLIENTE' // ORDENA ASCENDENTE
    ELSE
       DMGS.CDSQ_CLIENTEAUX.IndexName := 'ID_CLIENTEINDEX'; // ORDENA DESCENDENTE

 IF AUX = 'CDSQ_CLIENTEAUXNOMBRE' THEN
    IF dmgs.CDSQ_CLIENTEAUX.IndexFIELDNameS = '' THEN
       dmgs.CDSQ_CLIENTEAUX.IndexFIELDNameS := 'NOMBRE' // ORDENA ASCENDENTE
    ELSE
       DMGS.CDSQ_CLIENTEAUX.IndexName := 'NOMBREINDEX'; // ORDENA DESCENDENTE

 IF AUX = 'CDSQ_CLIENTEAUXNIF' THEN
    IF dmgs.CDSQ_CLIENTEAUX.IndexFIELDNameS = '' THEN
       dmgs.CDSQ_CLIENTEAUX.IndexFIELDNameS := 'NIF' // ORDENA ASCENDENTE
    ELSE
       DMGS.CDSQ_CLIENTEAUX.IndexName := 'NIFINDEX'; // ORDENA DESCENDENTE

 IF AUX = 'CDSQ_CLIENTEAUXBORRADOS' THEN
    IF dmgs.CDSQ_CLIENTEAUX.IndexFIELDNameS = '' THEN
       dmgs.CDSQ_CLIENTEAUX.IndexFIELDNameS := 'BORRADO' // ORDENA ASCENDENTE
    ELSE
       DMGS.CDSQ_CLIENTEAUX.IndexName := 'BORRADOINDEX'; // ORDENA DESCENDENTE

 END;

procedure TDLGCLIENTEAUX.DBGrid1MouseMove(Sender: TObject;
  Shift: TShiftState; X, Y: Integer);
VAR
  PT :TGRIDCOORD;
begin
  PT := DBGRID1.MouseCoord(X,Y);
  IF PT.Y=0 THEN
     DBGRID1.Cursor := CRHANDPOINT
  ELSE
     DBGRID1.Cursor := CRDEFAULT;
END;

end.
