unit FFORMAPAGO;

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  DBCtrls, StdCtrls, Buttons, ExtCtrls, Db, Menus, Mask, ComCtrls, ToolWin,
  ImgList, ActnList;

type
  TFORMAPAGO = class(TForm)
    DSFORMAPAGO: TDataSource;
    PDatos: TPanel;
    Label1: TLabel;
    Label2: TLabel;
    DBEdit1: TDBEdit;
    DBEdit2: TDBEdit;
    Menu: TMainMenu;
    FORMAPAGO1: 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;
    ToolButton1: TToolButton;
    ToolButton2: TToolButton;
    Label3: TLabel;
    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 DSFORMAPAGOStateChange(Sender: TObject);
    procedure FORMAPAGO1Click(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 FormPaint(Sender: TObject);
    procedure FormResize(Sender: TObject);
  private
    { Private declarations }
    ANCHO : INTEGER;
    procedure EstadoBotones;
    function GETIDFORMAPAGO:string;
  public
    { Public declarations }
    property FORMAPAGO:string read GETIDFORMAPAGO;// write SetTipo;
  end;

var
  FORMAPAGO: TFORMAPAGO;

implementation

uses udmgs, RUTINAS, DLGFORMAPAGO, FLISTADOS, fprevio;

{$R *.DFM}

function tFORMAPAGO.GETIDFORMAPAGO:string;
begin
    result:=dmgs.CDSQ_FORMAPAGOID_FORMA.asstring;
end;
procedure TFORMAPAGO.FormCreate(Sender: TObject);
begin
  ANCHO := Width ;
  dmgs.CDSQ_FORMAPAGO.close;
  WITH dmgs.CDSQ_FORMAPAGO   DO
  BEGIN
   CLOSE;
   DMGS.VFORMAPAGO.ID := '%';
   OPEN;
  END;
end;


procedure TFORMAPAGO.FormDestroy(Sender: TObject);
begin
  dmgs.CDSQ_FORMAPAGO.close;

end;
procedure TFORMAPAGO.FormShow(Sender: TObject);
begin
    EstadoBotones;
end;
procedure TFORMAPAGO.BConsultasClick(Sender: TObject);
begin
    DSFORMAPAGO.DataSet := nil;
    FDLGFORMAPAGO := TFDLGFORMAPAGO.create(nil);
    FDLGFORMAPAGO.CerrarDataSet := false;
    FDLGFORMAPAGO.Showmodal;
    FDLGFORMAPAGO.Free;
    FDLGFORMAPAGO := nil;
    IF NOT DMGS.CDSQ_FORMAPAGO.ACTIVE THEN
       ESTADOBOTONES;
    DSFORMAPAGO.dataset := dmgs.CDSQ_FORMAPAGO;
end;
procedure TFORMAPAGO.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)='DBEDIT2'
           then dmgs.CDSQ_FORMAPAGO.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_FORMAPAGO.state in [dsedit,dsinsert])
      then close;

    if (key = #27) and not (ActiveControl is TButton) then
        if dmgs.CDSQ_FORMAPAGO.state in [dsedit,dsinsert]
        then dmgs.CDSQ_FORMAPAGO.post;
end;
procedure TFORMAPAGO.BSalirClick(Sender: TObject);
begin
    close;
    SELF.ModalResult:=mrOk;
end;
procedure TFORMAPAGO.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 TFORMAPAGO.REGISTRO1Click(Sender: TObject);
begin
   if dmgs.CDSQ_FORMAPAGO.state in [dsedit,dsinsert] then
   begin
      primero1.enabled:=false;
      anterior1.enabled:=false;
      siguiente1.enabled:=false;
   end
   else
   begin
       primero1.enabled:=dmgs.CDSQ_FORMAPAGO.bof=false;
       anterior1.enabled:=primero1.enabled;
       siguiente1.enabled:=dmgs.CDSQ_FORMAPAGO.eof=false;
   end;
end;
procedure TFORMAPAGO.PRIMERO1Click(Sender: TObject);
begin
    dmgs.CDSQ_FORMAPAGO.first;
end;

procedure TFORMAPAGO.ANTERIOR1Click(Sender: TObject);
begin
    dmgs.CDSQ_FORMAPAGO.prior;
end;

procedure TFORMAPAGO.SIGUIENTE1Click(Sender: TObject);
begin
    dmgs.CDSQ_FORMAPAGO.next;
end;
procedure TFORMAPAGO.BAltasClick(Sender: TObject);
begin
    WITH dmgs.CDSQ_FORMAPAGO  DO
    BEGIN
     IF NOT Active THEN
     BEGIN
        DMGS.VFORMAPAGO.ID   :='**';
        OPEN;
     END;
     APPEND;
    END;
    dbedit1.setfocus;
end;
procedure TFORMAPAGO.BBajasClick(Sender: TObject);
begin
    if (dmgs.CDSQ_FORMAPAGO.recordcount>0) then
    begin
      dmgs.CDSQ_FORMAPAGO.delete;
      dmgs.CDSQ_FORMAPAGOafterpost(dmgs.CDSQ_FORMAPAGO);
    end;
end;
procedure TFORMAPAGO.FormClose(Sender: TObject; var Action: TCloseAction);
begin
    if dmgs.CDSQ_FORMAPAGO.State in [dsedit,dsinsert] then
       dmgs.CDSQ_FORMAPAGO.Post;
    Action := caFree;
//    self.Free; // Cual es la diferencia????
end;
procedure TFORMAPAGO.BModificacionesClick(Sender: TObject);
begin
    if dmgs.CDSQ_FORMAPAGO.recordcount>0 then
    begin
        dmgs.CDSQ_FORMAPAGO.edit;
        dbedit1.setfocus;
    end;
end;
procedure TFORMAPAGO.FORMAPAGO1Click(Sender: TObject);
begin
    altas1.enabled:=baltas.enabled;
    bajas1.enabled:=bbajas.enabled;
    consultas1.enabled:=bconsultas.enabled;
    modificaciones1.enabled:=bmodificaciones.enabled;
end;

procedure TFORMAPAGO.DBNavigator1Click(Sender: TObject;
  Button: TNavigateBtn);
begin
  IF dmgs.CDSQ_FORMAPAGO.Eof THEN
  try // para evitar el error de memoria bloqueada en el server.
     dmgs.CDSQ_FORMAPAGO.GetNextPacket ;
  except
  end;
end;
procedure TFORMAPAGO.DSFORMAPAGOStateChange(Sender: TObject);
begin
    EstadoBotones;
end;
procedure TFORMAPAGO.EstadoBotones;
begin
    PDatos.enabled:=dmgs.CDSQ_FORMAPAGO.state in [dsedit,dsinsert];
    BAltas.enabled:=dmgs.CDSQ_FORMAPAGO.state IN [dsbrowse,DSINACTIVE];
    BConsultas.enabled:=dmgs.CDSQ_FORMAPAGO.state IN [dsbrowse,DSINACTIVE];
    BModificaciones.enabled:=(dmgs.CDSQ_FORMAPAGO.state IN [dsbrowse]) and (dmgs.CDSQ_FORMAPAGO.recordcount>0);
    BBajas.enabled:=(dmgs.CDSQ_FORMAPAGO.state IN [dsbrowse]) and (dmgs.CDSQ_FORMAPAGO.recordcount>0);
    BLISTADO.enabled:=(dmgs.CDSQ_FORMAPAGO.state IN [dsbrowse]) and (dmgs.CDSQ_FORMAPAGO.recordcount>0);    
end;

procedure TFORMAPAGO.BLISTADOClick(Sender: TObject);
var bookmark:tbookmark;
begin
    bookmark:= dmgs.cdsq_formapago.GetBookmark ;
    DSFORMAPAGO.DataSet := NIL; // HACE FALTA
    LISTADOS := tLISTADOS.Create(nil);
    PREVIO := TPREVIO.Create(NIL);
    LISTADOS.FRDB.DataSet := DMGS.CDSQ_FORMAPAGO;
 //   Path := ExtractFilePath(ParamStr(0));
    LISTADOS.frReport1.LoadFromFile(dmgs.Path + 'LISTADOS\FORMAPAGO.frf');
    LISTADOS.frReport1.Preview := PREVIO.frPreview1;
    LISTADOS.frReport1.ShowReport;
    PREVIO.ShowModal;
    DSFORMAPAGO.DataSet := DMGS.CDSQ_FORMAPAGO;
    LISTADOS.Free;
    LISTADOS := NIL;
    PREVIO.FREE;
    PREVIO := NIL;
    dmgs.cdsq_formapago.GotoBookmark(bookmark);
    dmgs.cdsq_formapago.FreeBookmark (bookmark);
end;

procedure TFORMAPAGO.FormPaint(Sender: TObject);
begin
   pdatos.Left := 10 + (ClientWidth - ancho ) div 2 ;
end;

procedure TFORMAPAGO.FormResize(Sender: TObject);
begin
   pdatos.Left := 10 + (ClientWidth - ancho ) div 2 ;
end;

end.




