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