unit FORDENFAMILIAS;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, Buttons, Grids, DB, DBGrids, ExtCtrls, DBCtrls;

type
  TORDENFAMILIAS = class(TForm)
    DBGrid1: TDBGrid;
    DSFAMILIAS: TDataSource;
    bok: TBitBtn;
    bcancelar: TBitBtn;
    SpeedButton4: TSpeedButton;
    SpeedButton8: TSpeedButton;
    Label1: TLabel;
    DBNavigator1: TDBNavigator;
    procedure FormCreate(Sender: TObject);
    procedure DBGrid1DblClick(Sender: TObject);
    procedure DBGrid1CellClick(Column: TColumn);
    procedure DBGrid1ColExit(Sender: TObject);
    procedure DBGrid1KeyPress(Sender: TObject; var Key: Char);
    procedure SpeedButton4Click(Sender: TObject);
    procedure SpeedButton8Click(Sender: TObject);
    procedure DBNavigator1Click(Sender: TObject; Button: TNavigateBtn);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  ORDENFAMILIAS: TORDENFAMILIAS;

implementation

uses UDMGS;

{$R *.dfm}

procedure TORDENFAMILIAS.FormCreate(Sender: TObject);
begin
  WITH DMGS.CDSQ_FAMILIAS DO
  BEGIN
       CLOSE;
       DMGS.VFAMILIAS.TIPO  := '1' ;
       DMGS.VFAMILIAS.ID :=  '%' ;
       DMGS.VFAMILIAS.ORDEN := ' ORDER BY PROFUNDIDAD,PADRE,POSICION,DESCRIPCION ';
       OPEN;
       WHILE NOT EOF DO
       BEGIN
         LAST;
         IF DMGS.CDSQ_FAMILIAS.EOF  THEN
         try // para evitar el error de memoria bloqueada en el server.
            DMGS.CDSQ_FAMILIAS.GetNextPacket;
         except
         end;
       END;
       FIRST;
  END;

end;

procedure TORDENFAMILIAS.DBGrid1DblClick(Sender: TObject);
begin
 IF NOT (DMGS.CDSQ_FAMILIAS.State IN [DSEDIT,DSINSERT]) THEN
 BEGIN
  DMGS.CDSQ_FAMILIAS.Edit;
  DMGS.CDSQ_FAMILIASPOSICION.FocusControl;
 END;
end;

procedure TORDENFAMILIAS.DBGrid1CellClick(Column: TColumn);
begin
 IF NOT (DMGS.CDSQ_FAMILIAS.State IN [DSEDIT,DSINSERT]) THEN
 BEGIN
  DMGS.CDSQ_FAMILIAS.Edit;
  DMGS.CDSQ_FAMILIASPOSICION.FocusControl;
 END;
end;

procedure TORDENFAMILIAS.DBGrid1ColExit(Sender: TObject);
begin
 IF (DMGS.CDSQ_FAMILIAS.State IN [DSEDIT,DSINSERT]) THEN
 BEGIN
    DMGS.RFAMILIAS.PREGUNTA := FALSE;
    DMGS.CDSQ_FAMILIAS.Post;
 END;
end;

procedure TORDENFAMILIAS.DBGrid1KeyPress(Sender: TObject; var Key: Char);
begin
 IF (DMGS.CDSQ_FAMILIAS.State IN [DSEDIT,DSINSERT])
 AND (KEY=#13)
 THEN
 BEGIN
    DMGS.RFAMILIAS.PREGUNTA := FALSE;
    DMGS.CDSQ_FAMILIAS.Post;
 END;
end;

procedure TORDENFAMILIAS.SpeedButton4Click(Sender: TObject);
begin
 IF not (DMGS.CDSQ_FAMILIAS.State IN [DSEDIT,DSINSERT]) THEN
  DMGS.CDSQ_FAMILIAS.Edit;
 dmgs.CDSQ_FAMILIASPOSICION.Value := dmgs.CDSQ_FAMILIASPOSICION.Value - 1 ;
 DMGS.RFAMILIAS.PREGUNTA := FALSE;
 DMGS.CDSQ_FAMILIAS.Post;
end;

procedure TORDENFAMILIAS.SpeedButton8Click(Sender: TObject);
begin
 IF not (DMGS.CDSQ_FAMILIAS.State IN [DSEDIT,DSINSERT]) THEN
  DMGS.CDSQ_FAMILIAS.Edit;
 dmgs.CDSQ_FAMILIASPOSICION.Value := dmgs.CDSQ_FAMILIASPOSICION.Value + 1 ;
 DMGS.RFAMILIAS.PREGUNTA := FALSE;
 DMGS.CDSQ_FAMILIAS.Post;
end;

procedure TORDENFAMILIAS.DBNavigator1Click(Sender: TObject;
  Button: TNavigateBtn);
begin
 IF DMGS.CDSQ_FAMILIAS.EOF  THEN
 try // para evitar el error de memoria bloqueada en el server.
     DMGS.CDSQ_FAMILIAS.GetNextPacket;
 except
 end;
end;

end.
