unit FCONDUCTORES;

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  DBCtrls, StdCtrls, Buttons, ExtCtrls, Menus, Mask, db,TIPOSDEFINIDOS,
  ActnList, ImgList, ComCtrls, ToolWin;

type
  TCONDUCTORES = class(TForm)
    Menu: TMainMenu;
    conductores1: TMenuItem;
    PDatos: TPanel;
    Label1: TLabel;
    Label2: TLabel;
    Label3: TLabel;
    Label6: TLabel;
    Label5: TLabel;
    Label12: TLabel;
    Label9: TLabel;
    DSCONDUCTORES: TDataSource;
    ALTAS1: TMenuItem;
    BAJAS1: TMenuItem;
    CONSULTAS1: TMenuItem;
    MODIFICACIONES1: TMenuItem;
    LISTADO1: TMenuItem;
    N1: TMenuItem;
    SALIR1: TMenuItem;
    REGISTRO1: TMenuItem;
    PRIMERO1: TMenuItem;
    ANTERIOR1: TMenuItem;
    SIGUIENTE1: TMenuItem;
    DBEdit6: TDBEdit;
    DBEdit8: TDBEdit;
    DBEdit10: TDBEdit;
    DBEdit11: TDBEdit;
    DBEdit12: TDBEdit;
    DBEdit13: TDBEdit;
    DBEdit14: TDBEdit;
    VER1: TMenuItem;
    ODOS1: TMenuItem;
    NOBORRADOS1: TMenuItem;
    Label4: TLabel;
    ToolBar1: TToolBar;
    BALTAS: TToolButton;
    BBAJAS: TToolButton;
    BCONSULTAS: TToolButton;
    BMODIFICACIONES: TToolButton;
    BLISTADO: TToolButton;
    ToolButton6: TToolButton;
    DBNavigator2: TDBNavigator;
    ToolButton7: TToolButton;
    BSALIR: TToolButton;
    ActionList1: TActionList;
    AAltas: TAction;
    ABajas: TAction;
    AConsultas: TAction;
    AModificaciones: TAction;
    ASalir: TAction;
    ALISTADO: TAction;
    ImageList1: TImageList;
    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 BSalirClick(Sender: TObject);
    procedure DSCONDUCTORESStateChange(Sender: TObject);
    procedure FormKeyDown(Sender: TObject; var Key: Word;
      Shift: TShiftState);
    procedure BListadoClick(Sender: TObject);
    procedure REGISTRO1Click(Sender: TObject);
    procedure PRIMERO1Click(Sender: TObject);
    procedure ANTERIOR1Click(Sender: TObject);
    procedure SIGUIENTE1Click(Sender: TObject);
    procedure CONDUCTORES1Click(Sender: TObject);
    procedure DBEdit6KeyPress(Sender: TObject; var Key: Char);
    procedure DBEdit6Exit(Sender: TObject);
    procedure FormCreate(Sender: TObject);
    procedure FormDestroy(Sender: TObject);
    procedure DSCONDUCTORESDataChange(Sender: TObject; Field: TField);
    procedure DBNavigator1Click(Sender: TObject; Button: TNavigateBtn);
    procedure ODOS1Click(Sender: TObject);
    procedure NOBORRADOS1Click(Sender: TObject);
  private
    { Private declarations }
    PAUX :STRING;
    procedure EstadoBotones;
    function GetCONDUCTOR:string;
  public
    { Public declarations }
     VER : STRING;
     property codigo:string read GetCONDUCTOR;// write SetCONDUCTOR;
  end;

var
  CONDUCTORES: TCONDUCTORES;

implementation

uses RUTINAS, FDLGCONDUCTOR, LIST_CONDUCTORES,UDM;

{$R *.DFM}


//********************    FALTA POR HACER EL LISTADO

procedure TCONDUCTORES.BListadoClick(Sender: TObject);
// consultarlo con jose javier
begin
     IF ((NOT DMST.CDSQ_FDLGCONDUCTORES.Active) OR (DMST.CNBGRBORRADO='-1')) THEN
     BEGIN
      DMST.CDSQ_LISTADOCONDUCTORES.Close;
      DMST.CTBGRNIF :='%';
      DMST.CTBGRBORRADO :='0';
      DMST.CDSQ_LISTADOCONDUCTORES.Open;
     END
     ELSE
     BEGIN
      DMST.CDSQ_LISTADOCONDUCTORES.Close;
      DMST.CTBGRNIF :=DMST.CNBGRNOMBRE;
      DMST.CTBGRBORRADO :=DMST.CNBGRBORRADO;
      DMST.CDSQ_LISTADOCONDUCTORES.Open;
     END;
     listado_conductores:=TLISTADO_Conductores.create(nil);
     listado_conductores.preview;
     listado_conductores.Free;
     DMST.CDSQ_LISTADOConductores.Close;
{     LISTADO_CONDUCTORES:=tlistado_conductores.create(nil);
     LISTADO_CONDUCTORES.Q_DATOS.CLOSE;
     LISTADO_CONDUCTORES.Q_CONDUCTORES.CLOSE;
     LISTADO_CONDUCTORES.Q_DATOS.OPEN;
     LISTADO_CONDUCTORES.Q_CONDUCTORES.OPEN;
     LISTADO_CONDUCTORES.PREVIEW;
}
end;


//***********************************************************
function TCONDUCTORES.GetCONDUCTOR:string;
begin
    result:=DMST.cdsq_fdlgCONDUCTORESnif.asstring;
end;


procedure TCONDUCTORES.FormDestroy(Sender: TObject);
begin
 if DMST.cdsq_fdlgconductores.active then
     DMST.cdsq_fdlgconductores.close;
end;
procedure TCONDUCTORES.FormCreate(Sender: TObject);
begin
 if DMST.cdsq_fdlgconductores.active then
     DMST.cdsq_fdlgconductores.close;
 VER := '0';
end;
procedure TCONDUCTORES.FormShow(Sender: TObject);
begin
    EstadoBotones;
end;
procedure TCONDUCTORES.BConsultasClick(Sender: TObject);
begin
    dsconductores.DataSet := nil;
    dlgconductor:=tdlgconductor.create(nil);
    dlgconductor.CerrarDataset := false;
    DLGCONDUCTOR.VER := VER;
    DlgConductor.Showmodal;
    dlgconductor.Free;
    dlgconductor := nil;
    dsconductores.dataset := DMST.cdsq_fdlgconductores;
end;

procedure TCONDUCTORES.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
        PAUX:='';
        if uppercase(activecontrol.name)='DBEDIT11'
          then
            DMST.cdsq_fdlgconductores.post;
        IF  DMST.cdsq_fdlgconductores.STATE IN [DSEDIT,DSINSERT] THEN
            PAUX:=Uppercase(activecontrol.name);
        Perform(WM_NextDLGCtl, 0, 0);
        key:=#0 ;
        IF PAUX='DBEDIT6' THEN
             DBEDIT8.SetFocus ;

    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 (DMST.cdsq_fdlgconductores.state in [dsedit,dsinsert])
     then
       close;

    if (key = #27) and not (ActiveControl is TButton) then
        if DMST.cdsq_fdlgconductores.state in [dsedit,dsinsert]
          then
            DMST.cdsq_fdlgconductores.post;

end;

procedure TCONDUCTORES.BSalirClick(Sender: TObject);
begin
    close;
    modalresult := mrOk;
end;
procedure TCONDUCTORES.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 TCONDUCTORES.REGISTRO1Click(Sender: TObject);
begin
   if (DMST.CDSQ_FDLGCONDUCTORES.state in [dsedit,dsinsert]) then
   begin
      primero1.enabled:=false;
      anterior1.enabled:=false;
      siguiente1.enabled:=false;
   end
   else
   begin
    primero1.enabled:=DMST.CDSQ_FDLGCONDUCTORES.bof=false;
    anterior1.enabled:=primero1.enabled;
    siguiente1.enabled:=DMST.CDSQ_FDLGCONDUCTORES.eof=false;
   end;
end;

procedure TCONDUCTORES.PRIMERO1Click(Sender: TObject);
begin
   DMST.CDSQ_FDLGCONDUCTORES.first;
end;

procedure TCONDUCTORES.ANTERIOR1Click(Sender: TObject);
begin
    DMST.CDSQ_FDLGCONDUCTORES.Prior;
end;

procedure TCONDUCTORES.SIGUIENTE1Click(Sender: TObject);
begin
    DMST.CDSQ_FDLGCONDUCTORES.next;
end;

procedure TCONDUCTORES.EstadoBotones;
begin
    PDatos.enabled:=DMST.CDSQ_FDLGCONDUCTORES.state in [dsedit,dsinsert];
    BAltas.enabled:=(DMST.CDSQ_FDLGCONDUCTORES.state=dsbrowse) or (DMST.CDSQ_FDLGCONDUCTORES.state=dsinactive);
    BListado.enabled:=(DMST.CDSQ_FDLGCONDUCTORES.state=dsbrowse) or (DMST.CDSQ_FDLGCONDUCTORES.state=dsinactive);
    BConsultas.enabled:=(DMST.CDSQ_FDLGCONDUCTORES.state=dsbrowse) or (DMST.CDSQ_FDLGCONDUCTORES.state=dsinactive);
    BModificaciones.enabled:=(DMST.CDSQ_FDLGCONDUCTORES.state=dsbrowse)  and (DMST.cdsq_fdlgconductores.RecordCount >0 )AND (DMST.CDSQ_FDLGCONDUCTORESBORRADO.VALUE = 0);
    BBajas.enabled:=(DMST.CDSQ_FDLGCONDUCTORES.state=dsbrowse) and (DMST.cdsq_fdlgconductores.RecordCount >0 ) AND (DMST.CDSQ_FDLGCONDUCTORESBORRADO.VALUE = 0);
end;

procedure TCONDUCTORES.BAltasClick(Sender: TObject);
begin
 WITH DMST.CDSQ_FDLGCONDUCTORES DO
  BEGIN
     close;
     DMST.CNBGRNOMBRE :='/*/*/*/*/*/*';
     DMST.CNBGRBORRADO := '-1';
     OPEN;
     APPEND;
  END;
  dbedit6.setfocus;
end;
procedure TCONDUCTORES.BBajasClick(Sender: TObject);
VAR AUX:STRING;
begin
    if (DMST.CDSQ_FDLGCONDUCTORES.recordcount>0)// or (DMST.CDSQ_FDLGCONDUCTORES.state in [dsedit,dsinsert])
      then
        begin
          case dmst.PedirConfirmacion('¿Confirma que desea borrar este Conductor?',true,true,false) of
               mrno:EXIT;
          end;
          WITH DMST.CDSQ_FDLGCONDUCTORES DO
          BEGIN
           EDIT;
           DMST.CDSQ_FDLGCONDUCTORESBORRADO.Value := 1;
           DMST.CONDUCTORESPREGUNTA := FALSE;
           POST;
          END;
      end;

end;
procedure TCONDUCTORES.FormClose(Sender: TObject; var Action: TCloseAction);
begin
  if DMST.CDSQ_FDLGCONDUCTORES.State in [dsedit,dsinsert] then
      DMST.CDSQ_FDLGCONDUCTORES.post;
  ACTION := CAFREE;
end;
procedure TCONDUCTORES.BModificacionesClick(Sender: TObject);
begin
    if DMST.CDSQ_FDLGCONDUCTORES.recordcount>0 then
    begin
        DMST.CDSQ_FDLGCONDUCTORES.edit;
        dbedit6.setfocus;
    end;
end;
procedure TCONDUCTORES.DSCONDUCTORESStateChange(Sender: TObject);
begin
    IF NOT DBEDIT6.Enabled THEN
       DBEDIT6.Enabled := TRUE;
    EstadoBotones;
end;
procedure TCONDUCTORES.CONDUCTORES1Click(Sender: TObject);
begin
    altas1.enabled:=baltas.enabled;
    bajas1.enabled:=bbajas.enabled;
    consultas1.enabled:=bconsultas.enabled;
    modificaciones1.enabled:=bmodificaciones.enabled;
    listado1.enabled:=blistado.enabled;
end;
//******* PONERLO EN RUTINAS ES DIFERENTE DE LA FUNCION DE CLIENTES
//******* VER CON JJ PARA HACER UNA PARA LOS DOS.
procedure TCONDUCTORES.DBEdit6Exit(Sender: TObject);
VAR CIF:STRING;
    ultimo,valido:boolean;
begin

if (dbedit6.text = '') and (DMST.CDSQ_FDLGCONDUCTORES.State in [dsedit,dsinsert]) then
 begin
  showmessage('El NIF introducido es erroneo, introduzcalo correctamente');
  valido:=false;
  dbedit6.setfocus;
  PAUX:='';
  EXIT;
 end
 else
 if (DMST.CDSQ_FDLGCONDUCTORES.State in [dsedit,dsinsert]) then
 begin
    ultimo:=false;
    valido:=true;
    CIF:=TRIM(DBEDIT6.Text);
    comprobarnifcif(cif,ultimo,valido);
    if not valido then
    begin
      showmessage('El NIF introducido es erroneo, introduzcalo correctamente');
      valido:=false;
      dbedit6.setfocus;
      PAUX:='';
      EXIT;
    end
    ELSE
    BEGIN
      WITH DMST.CDSQ_CONDUCTORES DO // COMPRUEBO SI HAY ALGUN CONDUCTOR BORRADO CON ESE NIF
      BEGIN
         CLOSE;
         DMST.CDBGRNIF := CIF;
         DMST.CDBGRBORRADO :='1';
         OPEN;
         IF RECORDCOUNT > 0 THEN
         BEGIN
            SHOWMESSAGE('EL NIF CORRESPONDE CON UN CONDUCTOR YA BORRADO. SE MUESTRA EL REGISTRO');
            DMST.CDSQ_FDLGCONDUCTORES.UndoLastChange(TRUE);
            DMST.CDSQ_FDLGCONDUCTORES.CLOSE;
            DMST.CNBGRNOMBRE := CIF;
            DMST.CNBGRBORRADO := '1';
            DMST.CDSQ_FDLGCONDUCTORES.OPEN;
            DMST.CDSQ_FDLGCONDUCTORES.Edit;
            DMST.CDSQ_FDLGCONDUCTORESBORRADO.Value := 0;
            DBEDIT6.Enabled := FALSE;
          END;
         CLOSE;
      END;
    END;
 END;
//  DBEDIT8.SETFOCUS;
end;
procedure TCONDUCTORES.DBEdit6KeyPress(Sender: TObject; var Key: Char);
begin
IF   ((key>='0') and (key<='9')) or (key =#13) or ((key>='A') and (key<='Z')) and (key <>#8)  then
  begin
     if (key =#13) and not (Activecontrol is TButton) then
     begin
 //         Perform(WM_NEXTDLGCTL,0,0);
 //          key:=#0;
     end;
  end
  else key:=#0;

end;



procedure TCONDUCTORES.DSCONDUCTORESDataChange(Sender: TObject;
  Field: TField);
begin
  IF (DMST.cdsq_fdlgconductores.EOF) AND (NOT(DMST.CDSQ_FDLGCONDUCTORES.STATE IN [DSEDIT,DSINSERT])) THEN
  try // para evitar el error de memoria bloqueada en el server.
    DMST.cdsq_fdlgconductores.GetNextPacket;
  except
  end;
  IF DMST.CDSQ_FDLGCONDUCTORESBORRADO.Value = 1 THEN
     LABEL4.Visible := TRUE
  ELSE
     LABEL4.Visible := FALSE;
  ESTADOBOTONES;
end;

procedure TCONDUCTORES.DBNavigator1Click(Sender: TObject;
  Button: TNavigateBtn);
begin
  IF DMST.cdsq_fdlgconductores.EOF  THEN
  try // para evitar el error de memoria bloqueada en el server.
    DMST.cdsq_fdlgconductores.GetNextPacket;
  except
  end;
end;

procedure TCONDUCTORES.ODOS1Click(Sender: TObject);
begin
   ODOS1.Checked := TRUE;
   NOBORRADOS1.Checked := FALSE;
   if ver <> '%' then
   begin
      ver := '%';
      bconsultasclick(sender);
   end;
end;

procedure TCONDUCTORES.NOBORRADOS1Click(Sender: TObject);
begin
   ODOS1.Checked := FALSE;
   NOBORRADOS1.Checked := TRUE;
   if ver <> '0' then
   begin
     ver := '0';
     bconsultasclick(sender);
   end;
end;

end.
