unit fdlgalbaran;

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  StdCtrls, Buttons, ExtCtrls, Grids, DBGrids, Db, DBCtrls, ImgList,
  ComCtrls, ToolWin, Menus,TIPOSDEFINIDOS, Mask;

type
  TDLGALBARAN = class(TForm)
    Panel1: TPanel;
    Panel2: TPanel;
    bcancelar: TBitBtn;
    bok: TBitBtn;
    DBGrid1: TDBGrid;
    DSALBARAN: TDataSource;
    DBNavigator1: TDBNavigator;
    MainMenu1: TMainMenu;
    VER1: TMenuItem;
    TODOS1: TMenuItem;
    NOCOBRADOS1: TMenuItem;
    COBRADOS1: TMenuItem;
    Label2: TLabel;
    Panel4: TPanel;
    Label3: TLabel;
    Label4: TLabel;
    SpeedButton1: TSpeedButton;
    SpeedButton3: TSpeedButton;
    Label7: TLabel;
    SpeedButton2: TSpeedButton;
    SpeedButton5: TSpeedButton;
    Edit2: TEdit;
    Edit3: TEdit;
    Edit5: TEdit;
    Label5: TLabel;
    MaskEdit1: TMaskEdit;
    Label1: TLabel;
    MaskEdit2: TMaskEdit;
    SpeedButton6: TSpeedButton;
    SpeedButton7: TSpeedButton;
    Label6: TLabel;
    Edit4: TEdit;
    SpeedButton4: TSpeedButton;
    SpeedButton8: TSpeedButton;
    SpeedButton10: TSpeedButton;
    SpeedButton9: TSpeedButton;
    procedure DBGrid1DblClick(Sender: TObject);
    procedure FormShow(Sender: TObject);
    procedure FormCreate(Sender: TObject);
    procedure FormDestroy(Sender: TObject);
    procedure DBNavigator1Click(Sender: TObject; Button: TNavigateBtn);
    procedure DSALBARANDataChange(Sender: TObject; Field: TField);
    procedure Edit1KeyPress(Sender: TObject; var Key: Char);
    procedure Edit1Enter(Sender: TObject);
    procedure bcancelarClick(Sender: TObject);
    procedure TODOS1Click(Sender: TObject);
    procedure NOCOBRADOS1Click(Sender: TObject);
    procedure COBRADOS1Click(Sender: TObject);
    procedure FormKeyPress(Sender: TObject; var Key: Char);
    procedure FormKeyDown(Sender: TObject; var Key: Word;
      Shift: TShiftState);
    procedure DSALBARANStateChange(Sender: TObject);
    procedure SpeedButton2Click(Sender: TObject);
    procedure SpeedButton5Click(Sender: TObject);
    procedure SpeedButton1Click(Sender: TObject);
    procedure SpeedButton3Click(Sender: TObject);
    procedure SpeedButton6Click(Sender: TObject);
    procedure SpeedButton7Click(Sender: TObject);
    procedure SpeedButton4Click(Sender: TObject);
    procedure SpeedButton8Click(Sender: TObject);
    procedure Edit4Exit(Sender: TObject);
    procedure MaskEdit1KeyPress(Sender: TObject; var Key: Char);
    procedure MaskEdit1Exit(Sender: TObject);
    procedure DBGrid1Enter(Sender: TObject);
    procedure DBGrid1TitleClick(Column: TColumn);
    procedure DBGrid1MouseMove(Sender: TObject; Shift: TShiftState; X,
      Y: Integer);
    procedure SpeedButton10Click(Sender: TObject);
    procedure SpeedButton9Click(Sender: TObject);
    procedure MaskEdit2Exit(Sender: TObject);
  private
   { Private declarations }
    CADENA :STRING;
    entra:boolean;
    ANTERIOR:STRING;
    oid,onombre,ofecha,ofechafin,obase,oserie :string;
    function GetFAMILIA:string;
    procedure SetFAMILIA(nif:string);
    function getnombre:string;
    function obtenercadena:string;
    FUNCTION COMPROBARFECHA:BOOLEAN;
    function comprobarfecha2:boolean;

  public
    { Public declarations }
     CerrarDataset:boolean;
     ORDEN:STRING;
     VER:STRING;
    // la uso para cerrar fdlconductoes, pq esto lo utilizo en otros que
    // no son fdlconductores, y se queda abierto.
    // lo cierro por defecto, al menos que desde fdlgconductores le diga que
    // no.
    property codigo:string read GetFAMILIA write SetFAMILIA;
    property nombre:string read GetNombre;
  end;
var
  DLGALBARAN: TDLGALBARAN;


implementation

uses UDMGS, menu;

{$R *.DFM}
function TDLGALBARAN.GetNombre:string;
begin
  result := DMGS.CDSQ_MDALBARANID_ALBARAN.AsString;
end;

procedure TDLGALBARAN.FormCreate(Sender: TObject);
begin

  try
    dbgrid1.Columns.loadfromfile(FMENU.PATHDBGRID +'\'+SELF.Name);
  except
  end;


  CerrarDataset := true;
  ORDEN:=''; // SOLO MUESTRA LOS NO BORRADOS.
  CADENA := '';
  obtenercadena;
  if DMGS.CDSQ_MDALBARAN.active then
     DMGS.CDSQ_MDALBARAN.close;
  DSALBARAN.DataSet := DMGS.CDSQ_MDALBARAN;
  BOK.Enabled:=false;
//  son_datosexteriores:=false;
  CerrarDataset := true;

  entra := false;
  oid:='DESC';
  oserie:='DESC';
  onombre:='DESC';
  ofecha:='DESC';
  ofechafin:='DESC';  
  obase :='DESC';
  SpeedButton1.ENABLED := TRUE;
  SpeedButton2.ENABLED := true;
  SpeedButton6.ENABLED := TRUE;
  SpeedButton4.ENABLED := TRUE;
  VER:='';
  obtenercadena;
end;
procedure TDLGALBARAN.FormDestroy(Sender: TObject);
begin
// esto hace falta pq uso cdsq_fdlgconductores en fconductores
// y si dsfdlgconductores apunta a cdsq_fdlgconductores cuando cambia
// de datos llama a la funcion que hay en el formulario fdlgconductor
 dsALBARAN.DataSet := nil;
// si lo llamo de fconductor hay que poner esta variable a false
 if CerrarDataset then
    DMGS.CDSQ_MDALBARAN.close;


  try
    dbgrid1.Columns.SAVETOfile(FMENU.PATHDBGRID +'\'+SELF.Name);
  except
  end;
    

end;


procedure TDLGALBARAN.DBNavigator1Click(Sender: TObject;
  Button: TNavigateBtn);
begin
IF DMGS.CDSQ_MDALBARAN.EOF  THEN
try // para evitar el error de memoria bloqueada en el server.
    DMGS.CDSQ_MDALBARAN.GetNextPacket;
except
end;
end;

procedure TDLGALBARAN.DSALBARANDataChange(Sender: TObject;
  Field: TField);
begin
if ((DMGS.CDSQ_MDALBARAN.Eof)AND (NOT (DMGS.CDSQ_MDALBARAN.STATE IN [DSEDIT,DSINSERT]))) then
try // para evitar el error de memoria bloqueada en el server.
  DMGS.CDSQ_MDALBARAN.GetNextPacket;
except
end;
end;
procedure TDLGALBARAN.DBGrid1DblClick(Sender: TObject);
begin
    bok.click;
end;


procedure TDLGALBARAN.Edit1KeyPress(Sender: TObject; var Key: Char);
begin
  if key = #13 then
    BEGIN
        Perform(WM_NextDLGCtl, 0, 0);
        key:=#0;
    END;
end;
procedure TDLGALBARAN.FormShow(Sender: TObject);
begin
   EDIT2.SetFocus;
end;

procedure TDLGALBARAN.Edit1Enter(Sender: TObject);
begin
    BOK.Enabled := FALSE;
end;

procedure TDLGALBARAN.bcancelarClick(Sender: TObject);
begin
  if DMGS.CDSQ_MDALBARAN.active then
     DMGS.CDSQ_MDALBARAN.Close;
//  SI CONDUCTORES USA ALGUN CDSDATASET, CERRARLO AQUI.
  modalresult:= mrCancel;
end;
function TDLGALBARAN.GetFAMILIA:string;
begin
    result:=DMGS.CDSQ_MDALBARANID_ALBARAN.asstring;
end;

procedure TDLGALBARAN.TODOS1Click(Sender: TObject);
begin
   TODOS1.Checked := TRUE;
   NOCOBRADOS1.Checked := FALSE;
   COBRADOS1.Checked := FALSE;
   if ver <> '' then
   BEGIN
      ver := '';
//      EDIT1EXIT(SENDER);
      OBTENERCADENA;
   END;
end;

procedure TDLGALBARAN.NOCOBRADOS1Click(Sender: TObject);
begin
   TODOS1.Checked := FALSE;
   NOCOBRADOS1.Checked := TRUE;
   COBRADOS1.Checked := FALSE;
   if ver <> ' AND TOTAL_COBRADO<BASE_ALBARAN ' THEN // AND TOTAL_COBRADO<>0 ' then
   BEGIN
      ver := ' AND TOTAL_COBRADO<BASE_ALBARAN ';// AND TOTAL_COBRADO<>0 ';
      OBTENERCADENA;
//      EDIT1EXIT(SENDER);
   END
end;

procedure TDLGALBARAN.COBRADOS1Click(Sender: TObject);
begin
   TODOS1.Checked := FALSE;
   NOCOBRADOS1.Checked := FALSE;
   COBRADOS1.Checked := TRUE;
   if ver <> ' AND BASE_ALBARAN<=TOTAL_COBRADO AND TOTAL_COBRADO<>0 ' then
   BEGIN
      ver := ' AND BASE_ALBARAN<=TOTAL_COBRADO AND TOTAL_COBRADO<>0 ';
//      EDIT1EXIT(SENDER);
      OBTENERCADENA;
   END;
end;

procedure TDLGALBARAN.FormKeyPress(Sender: TObject; var Key: Char);
begin
  if (key ='.')
    and (DMGS.CDSQ_mdalbaran.State in [dsedit,dsinsert])
    and (activecontrol is tdbedit)
    then
      if (dmgs.cdsq_mdalbaran.FieldByName ((activecontrol as tdbedit).DataField).DataType
       in [ftFloat, ftCurrency, ftBCD, ftFMTBcd]) then
          key := ',';
{   IF ((NOT (DMGS.CDSQ_MDALBARAN.State IN [DSEDIT,DSINSERT]))
   AND (DMGS.CDSQ_MDALBARAN.ACTIVE)) THEN
   BEGIN
//       AUXI := ORD(KEY);
       IF (ORD(KEY)) > 20 THEN
          CADENA := CADENA + KEY;
       LABEL2.Caption := CADENA;
       IF CADENA <> '' THEN
       BEGIN
        WHILE (NOT (DMGS.CDSQ_MDALBARAN.Locate('NOMBRECLIENTE',CADENA,[loPartialKey])))
           AND (NOT(DMGS.CDSQ_MDALBARAN.EOF))
        DO
        BEGIN
         DMGS.CDSQ_MDALBARAN.LAST;
         IF DMGS.CDSQ_MDALBARAN.Eof THEN
          try // para evitar el error de memoria bloqueada en el server.
            DMGS.CDSQ_MDALBARAN.GetNextPacket ;
          except
          end;
        END;
       END;
//       BOK.Enabled := TRUE;
    END
    ELSE
      CADENA:= '';

      if key = #13 then
    BEGIN
        Perform(WM_NextDLGCtl, 0, 0);
        key:=#0;
    END
}
end;

procedure TDLGALBARAN.FormKeyDown(Sender: TObject; var Key: Word;
  Shift: TShiftState);
begin
{    IF NOT ( DMGS.CDSQ_MDALBARAN.STATE IN [DSEDIT,DSINSERT]) THEN
       IF (KEY = 8) THEN
        BEGIN
           IF LENGTH(CADENA) > 0 THEN
             CADENA := COPY(CADENA,1,LENGTH(CADENA)-1);
           LABEL2.Caption := CADENA;
        END;
       }
end;

procedure TDLGALBARAN.DSALBARANStateChange(Sender: TObject);
begin
   CADENA:='';
end;
procedure tDLGALBARAN.SetFAMILIA(nif:string);
begin
end;
function tDLGALBARAN.obtenercadena:string;
var cad,cado:string;
begin
  cad:='';
  if trim(edit2.Text) <> '' then
    CAD := ' AND char(AL.id_ALBARAN) like ('''+trim(edit2.text)+'%'') ';

  if trim(EDIT5.text) <> '/  /' then
     if cad='' then
       CAD := ' AND char(AL.ID_SERIE) LIKE ('''+EDIT5.text+'%'') '
     else
       CAD := cad + ' and char(AL.ID_SERIE) LIKE ('''+EDIT5.text+'%'') ' ;


  if trim(edit3.text) <> '' then
     if cad='' then
       CAD := ' AND CL.nombre like ('''+trim(edit3.text)+'%'') '
     else
        CAD := CAD + ' AND CL.nombre like ('''+trim(edit3.text)+'%'') ';

{     if cad='' then
       CAD := ' AND AL.id_cliente in (select cl.id_cliente from clientes cl AND '+
       ' nombre like ('''+trim(edit3.text)+'%'') and cl.id_empresa = AL.id_empresa order by nombre '+onombre+' ) ' //voy a probar ordenandolo por nombre
     else
       CAD := cad + ' and AL.id_cliente in (select cl.id_cliente from clientes cl AND '+
       ' nombre like ('''+trim(edit3.text)+'%'') and cl.id_empresa = AL.id_empresa order by nombre '+onombre+' ) ' ;// voy a probar ordenandolo por nombre
}
  if trim(maskedit1.text) <> '/  /' then
     if cad='' then
       CAD := ' AND AL.fecha >='''+obtenerfecha(maskedit1.text)+''' '
     else
       CAD := cad + ' and AL.fecha >='''+obtenerfecha(maskedit1.text)+''' ' ;

  if trim(maskedit2.text) <> '/  /' then
     if cad='' then
       CAD := ' AND AL.fecha <='''+obtenerfecha(maskedit2.text)+''' '
     else
       CAD := cad + ' and AL.fecha <='''+obtenerfecha(maskedit2.text)+''' ' ;

  if trim(edit4.text) <> '' then
     if cad='' then
       CAD := ' AND AL.base_ALBARAN = ' + edit4.text
     else
       CAD := cad + ' and AL.base_ALBARAN = ' + edit4.text ;


  if cad <> '' then
  begin
      CAD :=  CAD + VER;
      cado := '';
      if speedbutton1.Enabled and speedbutton2.Enabled and speedbutton3.Enabled and
         speedbutton4.Enabled and speedbutton5.Enabled and speedbutton6.Enabled and
         speedbutton7.Enabled and speedbutton8.Enabled AND
         speedbutton10.Enabled and speedbutton9.Enabled
      then
        cado := ' order by id_albaran desc '
      else
      begin
        if (not speedbutton1.Enabled) or
           (not speedbutton3.Enabled)
        then
           cado := ' order by id_ALBARAN '+oid;
        if (not speedbutton9.Enabled) or
           (not speedbutton10.Enabled)
        then
          if cado='' then
             cado := ' order by CL.NOMBRE '+oNOMBRE
          else
             cado := cado +',CL.NOMBRE '+ONOMBRE;

        if (not speedbutton6.Enabled) or
           (not speedbutton7.Enabled)
        then
          if cado='' then
             cado := ' order by fecha '+ofecha
          else
             cado := cado +',fecha '+ofecha;


        if (not speedbutton4.Enabled) or
           (not speedbutton8.Enabled)
        then
          if cado='' then
             cado := ' order by base_ALBARAN '+obase
          else
             cado := cado +' ,base_ALBARAN '+obase;
        if (not speedbutton2.Enabled) or
           (not speedbutton5.Enabled)
        then
          if cado='' then
             cado := ' order by id_serie '+oserie
          else
             cado := cado +' ,id_serie '+oserie;
      end;


//      cad := cad + cado;

      with DMGS.CDSQ_MDalbaran do
      BEGIN
        Close;
        DMGS.Valbaran.ID :=cad ;
        DMGS.Valbaran.TIPO := '7';
        DMGS.Valbaran.ORDEN := CADO;
{        IF TRIM(ORDEN) = '' THEN
          DMGS.Valbaran.ORDEN := ordenALBARAN//' ORDER BY ID_CLIENTE,FECHA,ID_ALBARAN '
        ELSE
          DMGS.Valbaran.ORDEN := ORDEN;
}
        DMGS.Valbaran.ORDENLINEA := ordenlinEAALBARAN;
        Open;
       END;
     BOK.Enabled := TRUE;
  end;
  result:= cad; // de momento no lo utilizo
  entra:= true;
end;



procedure TDLGALBARAN.SpeedButton1Click(Sender: TObject);
begin
  SPEEDBUTTON3.ENABLED := true;
  SPEEDBUTTON1.ENABLED := false;
  OID:= 'ASC';
  edit2.setfocus;
end;

procedure TDLGALBARAN.SpeedButton3Click(Sender: TObject);
begin
  SPEEDBUTTON3.ENABLED := false;
  SPEEDBUTTON1.ENABLED := true;
  OID:= 'DESC';
  edit2.setfocus;
end;

procedure TDLGALBARAN.SpeedButton6Click(Sender: TObject);
begin
  SPEEDBUTTON6.ENABLED := FALSE;
  SPEEDBUTTON7.ENABLED := TRUE;
  OFECHA:= 'ASC';
  maskedit1.SetFocus;
end;
procedure TDLGALBARAN.SpeedButton7Click(Sender: TObject);
begin
  SPEEDBUTTON6.ENABLED := TRUE;
  SPEEDBUTTON7.ENABLED := FALSE;
  OFECHA:= 'DESC';
  maskedit1.SetFocus;
end;

procedure TDLGALBARAN.SpeedButton4Click(Sender: TObject);
begin
  SPEEDBUTTON4.ENABLED := FALSE;
  SPEEDBUTTON8.ENABLED := TRUE;
  OBASE:= 'ASC';
  maskedit2.setfocus;
end;

procedure TDLGALBARAN.SpeedButton8Click(Sender: TObject);
begin
  SPEEDBUTTON4.ENABLED := TRUE;
  SPEEDBUTTON8.ENABLED := FALSE;
  OBASE:= 'DESC';
  maskedit2.setfocus;
end;
procedure TDLGALBARAN.SpeedButton2Click(Sender: TObject);
begin
  SPEEDBUTTON2.ENABLED := FALSE;
  SPEEDBUTTON5.ENABLED := TRUE;
  Oserie:= 'ASC';
  edit5.setfocus;
end;

procedure TDLGALBARAN.SpeedButton5Click(Sender: TObject);
begin
  SPEEDBUTTON2.ENABLED := TRUE;
  SPEEDBUTTON5.ENABLED := FALSE;
  Oserie:= 'DESC';
  edit5.setfocus;
end;
procedure TDLGALBARAN.Edit4Exit(Sender: TObject);
begin
  obtenercadena;
  bok.Enabled := true;
end;

procedure TDLGALBARAN.MaskEdit1KeyPress(Sender: TObject; var Key: Char);
begin
  if key = #13 then
    BEGIN
        IF COMPROBARFECHA THEN
        BEGIN
          Perform(WM_NextDLGCtl, 0, 0);
          key:=#0;
        END;
    END;
end;
FUNCTION TDLGALBARAN.COMPROBARFECHA:BOOLEAN;
VAR FECHA:TDATE;
BEGIN
// EL MASKEDIT NO FUNCIONA CON EL TABULADOR
        RESULT:=TRUE;
        if trim(maskedit1.text) = '/  /' then
        begin
           try
             maskedit1.EditText:= '  /  /  ';
           except;
           end;
        end
        else
        BEGIN
           try
             FECHA :=  STRTODATE(MASKEDIT1.Text);
           except
           BEGIN
            showmessage('LA FECHA NO ES VALIDA');
            MASKEDIT1.SetFocus;
            RESULT := FALSE;
           END
           end
        END;
END;

procedure TDLGALBARAN.MaskEdit1Exit(Sender: TObject);
// NO FUNCIONA CON EL TABULADOR
begin
  COMPROBARFECHA;
end;

procedure TDLGALBARAN.DBGrid1Enter(Sender: TObject);
begin
//  if not entra then
   obtenercadena;
  entra := false;
  oid:='DESC';
  oserie:='DESC';
  onombre:='DESC';
  ofecha:='DESC';
  obase :='DESC';
  SpeedButton1.ENABLED := TRUE;
  SpeedButton3.ENABLED := TRUE;
  SpeedButton2.ENABLED := TRUE;
  SpeedButton5.ENABLED := TRUE;
  SpeedButton6.ENABLED := TRUE;
  SpeedButton7.ENABLED := TRUE;
  SpeedButton8.ENABLED := TRUE;
  SpeedButton4.ENABLED := TRUE;
  SpeedButton9.ENABLED := TRUE;
  SpeedButton10.ENABLED := TRUE;
   bok.Enabled := true;
end;

procedure TDLGALBARAN.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_MDALBARANID_ALBARAN' THEN
    IF dmgs.CDSQ_MDALBARAN.IndexFIELDNameS = '' THEN
       dmgs.CDSQ_MDALBARAN.IndexFIELDNameS := 'ID_ALBARAN' // ORDENA ASCENDENTE
    ELSE
       DMGS.CDSQ_MDALBARAN.IndexName := 'ID_ALBARANINDEX'; // ORDENA DESCENDENTE

 IF AUX = 'CDSQ_MDALBARANID_EMPRESA' THEN
    IF dmgs.CDSQ_MDALBARAN.IndexFIELDNameS = '' THEN
       dmgs.CDSQ_MDALBARAN.IndexFIELDNameS := 'ID_EMPRESA' // ORDENA ASCENDENTE
    ELSE
       DMGS.CDSQ_MDALBARAN.IndexName := 'ID_EMPRESAINDEX'; // ORDENA DESCENDENTE

 IF AUX = 'CDSQ_MDALBARANID_SERIE' THEN
    IF dmgs.CDSQ_MDALBARAN.IndexFIELDNameS = '' THEN
       dmgs.CDSQ_MDALBARAN.IndexFIELDNameS := 'ID_SERIE' // ORDENA ASCENDENTE
    ELSE
       DMGS.CDSQ_MDALBARAN.IndexName := 'ID_SERIEINDEX'; // ORDENA DESCENDENTE


 IF AUX = 'CDSQ_MDALBARANNOMBRECLIENTE' THEN
    IF dmgs.CDSQ_MDALBARAN.IndexFIELDNameS = '' THEN
       dmgs.CDSQ_MDALBARAN.IndexFIELDNameS := 'NOMBRECLIENTE' // ORDENA ASCENDENTE
    ELSE
       DMGS.CDSQ_MDALBARAN.IndexName := 'NOMBRECLIENTEINDEX'; // ORDENA DESCENDENTE

 IF AUX = 'CDSQ_MDALBARANFECHA' THEN
    IF dmgs.CDSQ_MDALBARAN.IndexFIELDNameS = '' THEN
       dmgs.CDSQ_MDALBARAN.IndexFIELDNameS := 'FECHA' // ORDENA ASCENDENTE
    ELSE
       DMGS.CDSQ_MDALBARAN.IndexName := 'FECHAINDEX'; // ORDENA DESCENDENTE

 IF AUX = 'CDSQ_MDALBARANBASE_ALBARAN' THEN
    IF dmgs.CDSQ_MDALBARAN.IndexFIELDNameS = '' THEN
       dmgs.CDSQ_MDALBARAN.IndexFIELDNameS := 'BASE_ALBARAN' // ORDENA ASCENDENTE
    ELSE
       DMGS.CDSQ_MDALBARAN.IndexName := 'BASE_ALBARANINDEX'; // ORDENA DESCENDENTE

 IF AUX = 'CDSQ_MDALBARANTOTAL_COBRADO' THEN
    IF dmgs.CDSQ_MDALBARAN.IndexFIELDNameS = '' THEN
       dmgs.CDSQ_MDALBARAN.IndexFIELDNameS := 'TOTAL_COBRADO' // ORDENA ASCENDENTE
    ELSE
       DMGS.CDSQ_MDALBARAN.IndexName := 'TOTAL_COBRADOINDEX'; // ORDENA DESCENDENTE

 IF AUX = 'CDSQ_MDALBARANCOBRADO' THEN
    IF dmgs.CDSQ_MDALBARAN.IndexFIELDNameS = '' THEN
       dmgs.CDSQ_MDALBARAN.IndexFIELDNameS := 'COBRADO' // ORDENA ASCENDENTE
    ELSE
       DMGS.CDSQ_MDALBARAN.IndexName := 'COBRADOINDEX'; // ORDENA DESCENDENTE

 IF AUX = 'CDSQ_MDALBARANFACTURADO' THEN
    IF dmgs.CDSQ_MDALBARAN.IndexFIELDNameS = '' THEN
       dmgs.CDSQ_MDALBARAN.IndexFIELDNameS := 'FACTURADO' // ORDENA ASCENDENTE
    ELSE
       DMGS.CDSQ_MDALBARAN.IndexName := 'FACTURADOINDEX'; // ORDENA DESCENDENTE
END;

procedure TDLGALBARAN.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;

procedure TDLGALBARAN.SpeedButton10Click(Sender: TObject);
begin
  SPEEDBUTTON9.ENABLED := TRUE;
  SPEEDBUTTON10.ENABLED := FALSE;
  ONOMBRE:= 'ASC';
  edit3.setfocus;
end;

procedure TDLGALBARAN.SpeedButton9Click(Sender: TObject);
begin
  SPEEDBUTTON9.ENABLED := FALSE;
  SPEEDBUTTON10.ENABLED := TRUE;
  ONOMBRE:= 'DESC';
  edit3.setfocus;
end;

function TDLGALBARAN.comprobarfecha2: boolean;
VAR FECHA:TDATE;
BEGIN
// EL MASKEDIT NO FUNCIONA CON EL TABULADOR
        RESULT:=TRUE;
        if trim(maskedit2.text) = '/  /' then
        begin
           try
             maskedit2.EditText:= '  /  /  ';
           except;
           end;
        end
        else
        BEGIN
           try
             FECHA :=  STRTODATE(MASKEDIT2.Text);
           except
           BEGIN
            showmessage('LA FECHA NO ES VALIDA');
            MASKEDIT2.SetFocus;
            RESULT := FALSE;
           END
           end
        END;
END;

procedure TDLGALBARAN.MaskEdit2Exit(Sender: TObject);
begin
  COMPROBARFECHA2;
end;

end.




