unit FEAN;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, Grids, DBGrids, Mask, DBCtrls, DB, Buttons, ActnList,
  ImgList, ExtCtrls, ComCtrls, ToolWin;

type
  TEAN = class(TForm)
    dsean: TDataSource;
    ToolBar1: TToolBar;
    BALTAS: TToolButton;
    BBAJAS: TToolButton;
    BCONSULTAS: TToolButton;
    BMODIFICACIONES: TToolButton;
    BLISTADO: TToolButton;
    DBNavigator2: TDBNavigator;
    BSALIR: TToolButton;
    ImageList1: TImageList;
    ActionList1: TActionList;
    AAltas: TAction;
    ABajas: TAction;
    AConsultas: TAction;
    AModificaciones: TAction;
    ASalir: TAction;
    ALISTADO: TAction;
    ToolButton1: TToolButton;
    ToolButton2: TToolButton;
    PDATOS: TPanel;
    Label1: TLabel;
    DBEdit1: TDBEdit;
    Panel1: TPanel;
    BitBtn1: TBitBtn;
    BitBtn2: TBitBtn;
    DBGrid1: TDBGrid;
    procedure FormDestroy(Sender: TObject);
    procedure FormCreate(Sender: TObject);
    procedure FormShow(Sender: TObject);
    procedure FormKeyPress(Sender: TObject; var Key: Char);
    procedure BALTASClick(Sender: TObject);
    procedure BSALIRClick(Sender: TObject);
    procedure FormKeyDown(Sender: TObject; var Key: Word;
      Shift: TShiftState);
    procedure BBAJASClick(Sender: TObject);
    procedure FormClose(Sender: TObject; var Action: TCloseAction);
    procedure BMODIFICACIONESClick(Sender: TObject);
    procedure dseanStateChange(Sender: TObject);
    procedure dseanDataChange(Sender: TObject; Field: TField);
    procedure DBNavigator2Click(Sender: TObject; Button: TNavigateBtn);
    procedure FormDeactivate(Sender: TObject);
  private
    { Priate declarations }
    CADENA:STRING;
    ESTA:BOOLEAN;
    procedure ESTADOBOTONES;
  public
    { Public declarations }
  end;

var
  EAN: TEAN;

implementation
  USES UDMGS,RUTINAS;
{$R *.dfm}

procedure TEAN.FormDestroy(Sender: TObject);
begin
 if DMGS.CDSQ_EAN.active then
     DMGS.CDSQ_EAN.close;
 DSEAN.DATASET := NIL;
end;

procedure TEAN.FormCreate(Sender: TObject);
begin
  if DMGS.CDSQ_EAN.active then
     DMGS.CDSQ_EAN.close;
  DSEAN.DATASET := DMGS.CDSQ_EAN;
end;

procedure TEAN.FormShow(Sender: TObject);
begin
     ESTADOBOTONES;
end;

procedure TEAN.FormKeyPress(Sender: TObject; var Key: Char);
begin
    if (ActiveControl=nil) and (key=#13) then
    begin
        Perform(WM_NextDLGCtl, 0, 0);
        key:=#0;
    end;
   if (key = #13) and not (ActiveControl is TButton) then
    begin
        if uppercase(activecontrol.name)='DBEDIT1'
          then
            DMGS.CDSQ_EAN.post;
        Perform(WM_NextDLGCtl, 0, 0);
        key:=#0 ;
    end;

    if not (activeControl is TDBEdit) then
    begin
       if uppercase(key)='A' then if BAltas.enabled then BAltas.click;
       if uppercase(key)='B' then if BBajas.enabled then BBajas.click;
       if uppercase(key)='C' then if BConsultas.enabled then BConsultas.click;
       if uppercase(key)='M' then if BModificaciones.enabled then BModificaciones.click;
       if uppercase(key)='L' then if BListado.enabled then BListado.click;
    end;

    if (key = #27) and not (DMGS.CDSQ_EAN.state in [dsedit,dsinsert])
     then
       close;

    if (key = #27) and not (ActiveControl is TButton) then
        if DMGS.CDSQ_EAN.state in [dsedit,dsinsert]
          then
            DMGS.CDSQ_EAN.post;
end;

procedure TEAN.BALTASClick(Sender: TObject);
begin
 WITH DMGS.CDSQ_EAN DO
  BEGIN
     IF NOT ACTIVE THEN
     BEGIN
        DMgs.EABGRID :='//';
        OPEN;
     END;
     APPEND;
  END;
  DMGS.CDSQ_EANID_ARTICULO.AsString := DMGS.CDSQ_ARTICULOSID_ARTICULO.AsString;
  dbedit1.setfocus;
end;

procedure TEAN.BSALIRClick(Sender: TObject);
begin
    close;
    modalresult := mrOk;
end;

procedure TEAN.FormKeyDown(Sender: TObject; var Key: Word;
  Shift: TShiftState);
begin
    if key=38 then CambiarControl(self,false);
    if key=40 then CambiarControl(self,true);
end;

PROCEDURE TEAN.ESTADOBOTONES ;
BEGIN
    PDatos.enabled:=DMGS.CDSQ_EAN.state in [dsedit,dsinsert];
    BAltas.enabled:=(DMGS.CDSQ_EAN.state=dsbrowse) or (DMGS.CDSQ_EAN.state=dsinactive);
    BListado.enabled:=(DMGS.CDSQ_EAN.state=dsbrowse) and (DMGS.CDSQ_EAN.RecordCount >0 );
    BConsultas.enabled:=(DMGS.CDSQ_EAN.state=dsbrowse) or (DMGS.CDSQ_EAN.state=dsinactive);
    BModificaciones.enabled:=(DMGS.CDSQ_EAN.state=dsbrowse)  and (DMGS.CDSQ_EAN.RecordCount >0 );//AND (DMGS.CDSQ_EANBORRADO.VALUE = 0);
    BBajas.enabled:=(DMGS.CDSQ_EAN.state=dsbrowse) and (DMGS.CDSQ_EAN.RecordCount >0 ) ;
END;

procedure TEAN.BBAJASClick(Sender: TObject);
begin
    if (dmGS.CDSQ_EAN.recordcount>0) then
    begin
      dmGS.CDSQ_EAN.delete;
      dmGS.CDSQ_EANafterpost(dmGS.CDSQ_EAN);
    end;
end;

procedure TEAN.FormClose(Sender: TObject; var Action: TCloseAction);
begin
  if DMGS.CDSQ_EAN.State in [dsedit,dsinsert] then
      DMGS.CDSQ_EAN.post;


  ACTION := CAFREE;
end;

procedure TEAN.BMODIFICACIONESClick(Sender: TObject);
begin
    if DMGS.CDSQ_EAN.recordcount>0 then
    begin
        DMGS.CDSQ_EAN.edit;
        dbedit1.setfocus;
    end;
end;

procedure TEAN.dseanStateChange(Sender: TObject);
begin
    EstadoBotones;
end;

procedure TEAN.dseanDataChange(Sender: TObject; Field: TField);
begin
  IF (DMGS.CDSQ_EAN.EOF) AND (NOT(DMGS.CDSQ_EAN.STATE IN [DSEDIT,DSINSERT])) THEN
  try // para evitar el error de memoria bloqueada en el server.
    DMGS.CDSQ_EAN.GetNextPacket;
  except
  end;
  ESTADOBOTONES;
end;

procedure TEAN.DBNavigator2Click(Sender: TObject; Button: TNavigateBtn);
begin
  IF (DMGS.CDSQ_EAN.EOF) AND (NOT(DMGS.CDSQ_EAN.STATE IN [DSEDIT,DSINSERT])) THEN
  try // para evitar el error de memoria bloqueada en el server.
    DMGS.CDSQ_EAN.GetNextPacket;
  except
  end;
end;





end.

