unit UCatalogos;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, ExtCtrls, DBCtrls, Grids, StdCtrls, Mask,
  DB, ADODB, Buttons, DBGrids;

type
  TFCatalogos = class(TForm)
    Tcomodin: TADOTable;
    DSComodin: TDataSource;
    Label1: TLabel;
    DBEdit1: TDBEdit;
    Label2: TLabel;
    DBEdit2: TDBEdit;
    Label3: TLabel;
    DBEdit3: TDBEdit;
    BitBtn1: TBitBtn;
    DBGrid1: TDBGrid;
    LCBAreas: TDBLookupComboBox;
    TAreas: TADOTable;
    DSAreas: TDataSource;
    DBMemo1: TDBMemo;
    Label4: TLabel;
    Panel1: TPanel;
    btnPrimero: TBitBtn;
    btnAtras: TBitBtn;
    BtnSiguiente: TBitBtn;
    BtnUltimo: TBitBtn;
    BtnNuevo: TBitBtn;
    BtnEditar: TBitBtn;
    BtnGuardar: TBitBtn;
    BtnCancelar: TBitBtn;
    BtnEliminar: TBitBtn;
    txtBuscar: TEdit;
    Label5: TLabel;
    procedure FormCreate(Sender: TObject);
    procedure BitBtn1Click(Sender: TObject);
    procedure btnPrimeroClick(Sender: TObject);
    procedure DSComodinStateChange(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  FCatalogos: TFCatalogos;

implementation

uses Udm, Uconexion;

{$R *.dfm}

Procedure DBControles(Accion : Byte; Tabla:TADOTable; primero: TBitBtn; anterior: TBitBtn;
siguiente: TBitBtn;ultimo: TBitBtn; nuevo: TBitBtn; editar: TBitBtn; eliminar: TBitBtn;
guardar: TBitBtn; cancelar: TBitBtn);
begin
  if Accion = 1 then
  begin
    if tabla.State in [dsinsert, dsedit] then
     begin
      Tabla.Cancel;
      Accion:= 9;
     end;
     Tabla.First;
     primero.Enabled:= false;
     anterior.Enabled:= false;
     siguiente.Enabled:= true;
     ultimo.Enabled:= true;
  end;
  if Accion = 2 then
  begin
  if tabla.State in [dsinsert, dsedit] then
     begin
      Tabla.Cancel;
      Accion:= 9;
     end;
    if Tabla.Bof then
    begin
       primero.Enabled:= false;
       anterior.Enabled:= false;
       siguiente.Enabled:= true;
       ultimo.Enabled:= true;
    end
    else
    begin
     Tabla.Prior;
     primero.Enabled:= true;
     anterior.Enabled:= true;
     siguiente.Enabled:= true;
     ultimo.Enabled:= true;
    end;
  end;

   if Accion = 3 then
   begin
   if tabla.State in [dsinsert, dsedit] then
     begin
      Tabla.Cancel;
      Accion:= 9;
     end;
      if (tabla.Eof) then
      begin
       primero.Enabled:= true;
       anterior.Enabled:= true;
       siguiente.Enabled:= false;
       ultimo.Enabled:= false;
      end
     else
      begin
       tabla.next;
       primero.Enabled:= true;
       anterior.Enabled:= true;
       siguiente.Enabled:= true;
       ultimo.Enabled:= true;
      end;
   end;

   if Accion = 4 then
   begin
   if tabla.State in [dsinsert, dsedit] then
     begin
      Tabla.Cancel;
      Accion:= 9;
     end;
      tabla.Last;
      primero.Enabled:= true;
      anterior.Enabled:= true;
      siguiente.Enabled:= false;
      ultimo.Enabled:= false;
   end;


     if Accion = 5 then
     begin
      tabla.Insert;
      editar.Enabled:=false;
      nuevo.Enabled:= false;
      eliminar.Enabled:= false;
      Cancelar.Enabled:= true;
      Guardar.Enabled:= true;
     end;
     if Accion = 6 then
     begin
      tabla.Edit;
      editar.Enabled:=false;
      nuevo.Enabled:= false;
      eliminar.Enabled:= false;
      Cancelar.Enabled:= true;
      Guardar.Enabled:= true;
     end;

     if Accion = 7 then
     begin
      if tabla.RecordCount > 0 then
       begin
         if messagedlg('Está Seguro de eliminar',mtconfirmation,[mbyes, mbno],0) = mryes then
         tabla.Delete;
       end
       else
       begin
          Eliminar.Enabled:= false;
          messagedlg('La tabla está vacía', mterror, [mbok],0)
       end;
     end;

     if Accion = 8 then
     begin
      if tabla.State in [dsinsert, dsedit] then
      tabla.post;
      editar.Enabled:=true;
      nuevo.Enabled:= true;
      eliminar.Enabled:= true;
      Cancelar.Enabled:= false;
      Guardar.Enabled:= false;
     end;
     if Accion = 9 then
     begin
      if tabla.State in [dsinsert, dsedit] then
      tabla.cancel;
      editar.Enabled:=true;
      nuevo.Enabled:= true;
      eliminar.Enabled:= true;
      Cancelar.Enabled:= false;
      Guardar.Enabled:= false;
     end;
end;

procedure TFCatalogos.btnPrimeroClick(Sender: TObject);
begin
DBControles((Sender As Tbitbtn).Tag, TComodin, btnPrimero, btnAtras, btnSiguiente, btnUltimo, btnNuevo, btnEditar, btnEliminar, btnGuardar, btnCancelar)
end;

procedure TFCatalogos.DSComodinStateChange(Sender: TObject);
begin
if TComodin.State = dsEdit then
   btnPrimeroClick(btnEditar);
end;

procedure TFCatalogos.FormCreate(Sender: TObject);
begin
//InitButtons(DBNavigator1, 'Arial')
end;

procedure TFCatalogos.BitBtn1Click(Sender: TObject);
begin
close
end;

end.
