unit FOPCIONESNUMERICAS;

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  DBCtrls, StdCtrls, Buttons, ExtCtrls, Db, Menus, Mask, ComCtrls, ToolWin,
  ImgList, ActnList;

type
  TOPCIONESNUMERICAS = class(TForm)
    DSOPCIONESNUMERICAS: TDataSource;
    PDatos: TPanel;
    DBEdit1: TDBEdit;
    Menu: TMainMenu;
    SERIES1: TMenuItem;
    ALTAS1: TMenuItem;
    BAJAS1: TMenuItem;
    CONSULTAS1: TMenuItem;
    MODIFICACIONES1: TMenuItem;
    N1: TMenuItem;
    SALIR1: TMenuItem;
    REGISTRO1: TMenuItem;
    PRIMERO1: TMenuItem;
    ANTERIOR1: TMenuItem;
    SIGUIENTE1: TMenuItem;
    ToolBar1: TToolBar;
    baltas: TToolButton;
    bbajas: TToolButton;
    bconsultas: TToolButton;
    bmodificaciones: TToolButton;
    ToolButton5: TToolButton;
    DBNavigator2: TDBNavigator;
    ToolButton7: TToolButton;
    bsalir: TToolButton;
    ImageList1: TImageList;
    ActionList1: TActionList;
    AAltas: TAction;
    ABajas: TAction;
    AConsultas: TAction;
    AModificaciones: TAction;
    ASalir: TAction;
    BLISTADO: TToolButton;
    ALISTADO: TAction;
    Label3: TLabel;
    DBEdit3: TDBEdit;
    DBEdit4: TDBEdit;
    Label5: TLabel;
    Label18: TLabel;
    DBEdit6: TDBEdit;
    Label6: TLabel;
    DBText1: TDBText;
    Label1: TLabel;
    Label2: TLabel;
    Label4: TLabel;
    Label7: TLabel;
    DBEdit2: TDBEdit;
    DBEdit5: TDBEdit;
    Label8: TLabel;
    DBEdit7: TDBEdit;
    procedure FormClose(Sender: TObject; var Action: TCloseAction);
    procedure FormShow(Sender: TObject);
    procedure BAltasClick(Sender: TObject);
    procedure BConsultasClick(Sender: TObject);
    procedure BBajasClick(Sender: TObject);
    procedure BModificacionesClick(Sender: TObject);
    procedure FormKeyPress(Sender: TObject; var Key: Char);
    procedure FormKeyDown(Sender: TObject; var Key: Word;
      Shift: TShiftState);
    procedure BSalirClick(Sender: TObject);
    procedure DSOPCIONESNUMERICASStateChange(Sender: TObject);
    procedure SERIES1Click(Sender: TObject);
    procedure REGISTRO1Click(Sender: TObject);
    procedure PRIMERO1Click(Sender: TObject);
    procedure ANTERIOR1Click(Sender: TObject);
    procedure SIGUIENTE1Click(Sender: TObject);
    procedure FormCreate(Sender: TObject);
    procedure FormDestroy(Sender: TObject);
    procedure DBNavigator1Click(Sender: TObject; Button: TNavigateBtn);
    procedure BLISTADOClick(Sender: TObject);
    procedure DBEdit1KeyDown(Sender: TObject; var Key: Word;
      Shift: TShiftState);
    procedure DBEdit1DblClick(Sender: TObject);
    procedure FormResize(Sender: TObject);
    procedure FormPaint(Sender: TObject);
  private
    { Private declarations }
    ANCHO : INTEGER;
    procedure EstadoBotones;
    function GETIDSERIE:string;
  public
    { Public declarations }
    property IDSERIE:string read GETIDSERIE;// write SetTipo;
  end;

var
  OPCIONESNUMERICAS: TOPCIONESNUMERICAS;

implementation

uses udmgs, RUTINAS, FDLGOPCIONESNUMERICAS, FLISTADOS, fprevio,
  FDLGEMPRESAAUX;

{$R *.DFM}

function tOPCIONESNUMERICAS.GETIDSERIE:string;
begin
    result:=dmgs.CDSQ_OPCIONESNUMERICASID_EMPRESA.asstring;
end;
procedure TOPCIONESNUMERICAS.FormCreate(Sender: TObject);
begin
  ANCHO := Width ;
  WITH dmgs.CDSQ_OPCIONESNUMERICAS   DO
  BEGIN
    CLOSE;
    DMGS.VOPCIONESNUMERICAS.ID  := '%';
    OPEN;
  END;
end;


procedure TOPCIONESNUMERICAS.FormDestroy(Sender: TObject);
begin
  dmgs.CDSQ_OPCIONESNUMERICAS.close;

end;
procedure TOPCIONESNUMERICAS.FormShow(Sender: TObject);
begin
    EstadoBotones;
end;
procedure TOPCIONESNUMERICAS.BConsultasClick(Sender: TObject);
begin
    DSOPCIONESNUMERICAS.DataSet := nil;
    DLGOPCIONESNUMERICAS := TDLGOPCIONESNUMERICAS.create(nil);
    DLGOPCIONESNUMERICAS.CerrarDataSet := false;
    DLGOPCIONESNUMERICAS.Showmodal;
    DLGOPCIONESNUMERICAS.Free;
    DLGOPCIONESNUMERICAS := nil;
    IF NOT DMGS.CDSQ_OPCIONESNUMERICAS.ACTIVE THEN
       ESTADOBOTONES;
    DSOPCIONESNUMERICAS.dataset := dmgs.CDSQ_OPCIONESNUMERICAS;
end;
procedure TOPCIONESNUMERICAS.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)='DBEDIT7'
           then dmgs.CDSQ_OPCIONESNUMERICAS.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;
    end;

    if (key = #27) and not (dmgs.CDSQ_OPCIONESNUMERICAS.state in [dsedit,dsinsert])
      then close;

    if (key = #27) and not (ActiveControl is TButton) then
        if dmgs.CDSQ_OPCIONESNUMERICAS.state in [dsedit,dsinsert]
        then dmgs.CDSQ_OPCIONESNUMERICAS.post;
end;
procedure TOPCIONESNUMERICAS.BSalirClick(Sender: TObject);
begin
    close;
    SELF.ModalResult:=mrOk;
end;
procedure TOPCIONESNUMERICAS.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 TOPCIONESNUMERICAS.REGISTRO1Click(Sender: TObject);
begin
   if dmgs.CDSQ_OPCIONESNUMERICAS.state in [dsedit,dsinsert] then
   begin
      primero1.enabled:=false;
      anterior1.enabled:=false;
      siguiente1.enabled:=false;
   end
   else
   begin
       primero1.enabled:=dmgs.CDSQ_OPCIONESNUMERICAS.bof=false;
       anterior1.enabled:=primero1.enabled;
       siguiente1.enabled:=dmgs.CDSQ_OPCIONESNUMERICAS.eof=false;
   end;
end;
procedure TOPCIONESNUMERICAS.PRIMERO1Click(Sender: TObject);
begin
    dmgs.CDSQ_OPCIONESNUMERICAS.first;
end;

procedure TOPCIONESNUMERICAS.ANTERIOR1Click(Sender: TObject);
begin
    dmgs.CDSQ_OPCIONESNUMERICAS.prior;
end;

procedure TOPCIONESNUMERICAS.SIGUIENTE1Click(Sender: TObject);
begin
    dmgs.CDSQ_OPCIONESNUMERICAS.next;
end;
procedure TOPCIONESNUMERICAS.BAltasClick(Sender: TObject);
begin
    WITH dmgs.CDSQ_OPCIONESNUMERICAS  DO
    BEGIN
     IF NOT Active THEN
     BEGIN
        DMGS.VOPCIONESNUMERICAS.ID   :='**';
        OPEN;
     END;
     APPEND;
    END;
    dbedit1.setfocus;
end;
procedure TOPCIONESNUMERICAS.BBajasClick(Sender: TObject);
begin
    if (dmgs.CDSQ_OPCIONESNUMERICAS.recordcount>0) then
    begin
      dmgs.CDSQ_OPCIONESNUMERICAS.delete;
      dmgs.CDSQ_OPCIONESNUMERICASafterpost(dmgs.CDSQ_OPCIONESNUMERICAS);
    end;
end;
procedure TOPCIONESNUMERICAS.FormClose(Sender: TObject; var Action: TCloseAction);
begin
    if dmgs.CDSQ_OPCIONESNUMERICAS.State in [dsedit,dsinsert] then
       dmgs.CDSQ_OPCIONESNUMERICAS.Post;
    Action := caFree;
//    self.Free; // Cual es la diferencia????
end;
procedure TOPCIONESNUMERICAS.BModificacionesClick(Sender: TObject);
begin
    if dmgs.CDSQ_OPCIONESNUMERICAS.recordcount>0 then
    begin
        dmgs.CDSQ_OPCIONESNUMERICAS.edit;
        dbedit1.setfocus;
    end;
end;
procedure TOPCIONESNUMERICAS.SERIES1Click(Sender: TObject);
begin
    altas1.enabled:=baltas.enabled;
    bajas1.enabled:=bbajas.enabled;
    consultas1.enabled:=bconsultas.enabled;
    modificaciones1.enabled:=bmodificaciones.enabled;
end;

procedure TOPCIONESNUMERICAS.DBNavigator1Click(Sender: TObject;
  Button: TNavigateBtn);
begin
  IF dmgs.CDSQ_OPCIONESNUMERICAS.Eof THEN
  try // para evitar el error de memoria bloqueada en el server.
     dmgs.CDSQ_OPCIONESNUMERICAS.GetNextPacket ;
  except
  end;
end;
procedure TOPCIONESNUMERICAS.DSOPCIONESNUMERICASStateChange(Sender: TObject);
begin
    EstadoBotones;
end;
procedure TOPCIONESNUMERICAS.EstadoBotones;
begin
    PDatos.enabled:=dmgs.CDSQ_OPCIONESNUMERICAS.state in [dsedit,dsinsert];
    BAltas.enabled:=dmgs.CDSQ_OPCIONESNUMERICAS.state IN [dsbrowse,DSINACTIVE];
    BConsultas.enabled:=dmgs.CDSQ_OPCIONESNUMERICAS.state IN [dsbrowse,DSINACTIVE];
    BModificaciones.enabled:=(dmgs.CDSQ_OPCIONESNUMERICAS.state IN [dsbrowse]) and (dmgs.CDSQ_OPCIONESNUMERICAS.recordcount>0);
    BBajas.enabled:=(dmgs.CDSQ_OPCIONESNUMERICAS.state IN [dsbrowse]) and (dmgs.CDSQ_OPCIONESNUMERICAS.recordcount>0);
    BLISTADO.enabled:=(dmgs.CDSQ_OPCIONESNUMERICAS.state IN [dsbrowse]) and (dmgs.CDSQ_OPCIONESNUMERICAS.recordcount>0);    
end;

procedure TOPCIONESNUMERICAS.BLISTADOClick(Sender: TObject);
var bookmark:tbookmark;
begin
    bookmark:= dmgs.CDSQ_OPCIONESNUMERICAS.GetBookmark;
    DSOPCIONESNUMERICAS.DataSet := NIL; // HACE FALTA
    LISTADOS := tLISTADOS.Create(nil);
    PREVIO := TPREVIO.Create(NIL);
    LISTADOS.FRDB.DataSet := DMGS.CDSQ_OPCIONESNUMERICAS;
 //   Path := ExtractFilePath(ParamStr(0));
    LISTADOS.frReport1.LoadFromFile(dmgs.Path + 'LISTADOS\OPCIONESNUMERICAS.frf');
    LISTADOS.frReport1.Preview := PREVIO.frPreview1;
    LISTADOS.frReport1.ShowReport;
    PREVIO.ShowModal;
    DSOPCIONESNUMERICAS.DataSet := DMGS.CDSQ_OPCIONESNUMERICAS;
    LISTADOS.Free;
    LISTADOS := NIL;
    PREVIO.FREE;
    PREVIO := NIL;
    dmgs.CDSQ_OPCIONESNUMERICAS.gotobookmark(bookmark);
    dmgs.cdsq_OPCIONESNUMERICAS.FreeBookmark(bookmark);
end;

procedure TOPCIONESNUMERICAS.DBEdit1KeyDown(Sender: TObject; var Key: Word;
  Shift: TShiftState);
begin
  IF (DMGS.CDSQ_OPCIONESNUMERICAS.STATE IN [DSEDIT,DSINSERT]) THEN
   BEGIN
   if key=112 then
    begin
        DLGEMPRESAAUX := TDLGEMPRESAAUX.Create(NIL);
        if DLGEMPRESAAUX.Showmodal=mrok then
        begin
            DMGS.CDSQ_OPCIONESNUMERICASID_EMPRESA.AsString := DLGEMPRESAAUX.codigo;
            Perform(WM_NextDLGCtl, 0, 0);
        end;
        DLGEMPRESAAUX.Free;
        DLGEMPRESAAUX := nil;
    end;
   END;
end;

procedure TOPCIONESNUMERICAS.DBEdit1DblClick(Sender: TObject);
begin
  IF (DMGS.CDSQ_OPCIONESNUMERICAS.STATE IN [DSEDIT,DSINSERT]) THEN
   BEGIN
        DLGEMPRESAAUX := TDLGEMPRESAAUX.Create(NIL);
        if DLGEMPRESAAUX.Showmodal=mrok then
        begin
            DMGS.CDSQ_OPCIONESNUMERICASID_EMPRESA.AsString := DLGEMPRESAAUX.codigo;
            Perform(WM_NextDLGCtl, 0, 0);
        end;
        DLGEMPRESAAUX.Free;
        DLGEMPRESAAUX := nil;
   END;
end;

procedure TOPCIONESNUMERICAS.FormResize(Sender: TObject);
begin
   pdatos.Left := 10 + (ClientWidth - ancho ) div 2 ;
end;

procedure TOPCIONESNUMERICAS.FormPaint(Sender: TObject);
begin
   pdatos.Left := 10 + (ClientWidth - ancho ) div 2 ;
end;

end.




