unit ftaquillas;

interface

uses
  Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
  Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Data.DB, ZDataset, ZAbstractRODataset,
  ZAbstractDataset, Vcl.StdCtrls, Vcl.ExtCtrls, Vcl.Grids, Vcl.DBGrids;

type
  Ttaquillas = class(TForm)
    DBGrid1: TDBGrid;
    Panel1: TPanel;
    btnuevo: TButton;
    btmodificar: TButton;
    btborrar: TButton;
    btguardar: TButton;
    btcancelar: TButton;
    qtaquillas: TZQuery;
    qid: TZReadOnlyQuery;
    qidid: TLargeintField;
    dsqtaquillas: TDataSource;
    qtaquillaside: TIntegerField;
    qtaquillasid: TIntegerField;
    qtaquillascodigo: TWideStringField;
    qtaquillasidt: TIntegerField;
    qtaquillasnombre: TWideStringField;
    Label1: TLabel;
    procedure FormShow(Sender: TObject);
    procedure FormKeyPress(Sender: TObject; var Key: Char);
    procedure dsqtaquillasStateChange(Sender: TObject);
    procedure qtaquillasAfterInsert(DataSet: TDataSet);
    procedure qtaquillasAfterPost(DataSet: TDataSet);
    procedure qtaquillasBeforeDelete(DataSet: TDataSet);
    procedure qtaquillasBeforePost(DataSet: TDataSet);
    procedure DBGrid1KeyDown(Sender: TObject; var Key: Word;
      Shift: TShiftState);
    procedure btnuevoClick(Sender: TObject);
    procedure btmodificarClick(Sender: TObject);
    procedure btborrarClick(Sender: TObject);
    procedure btguardarClick(Sender: TObject);
    procedure btcancelarClick(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  taquillas: Ttaquillas;

implementation

{$R *.dfm}

uses datos, fbuscarempleado;

procedure Ttaquillas.btborrarClick(Sender: TObject);
begin
    qtaquillas.Delete;
end;

procedure Ttaquillas.btcancelarClick(Sender: TObject);
begin
    qtaquillas.Cancel;
end;

procedure Ttaquillas.btguardarClick(Sender: TObject);
begin
    qtaquillas.Post;
end;

procedure Ttaquillas.btmodificarClick(Sender: TObject);
begin
    qtaquillas.edit;
end;

procedure Ttaquillas.btnuevoClick(Sender: TObject);
begin
    qtaquillas.append;
end;

procedure Ttaquillas.DBGrid1KeyDown(Sender: TObject; var Key: Word;
  Shift: TShiftState);
begin
    if (key=115) then
    begin
      buscarempleado := Tbuscarempleado.Create(nil);
      try
        fbuscarempleado.filtro:=qtaquillasnombre.AsString;
        buscarempleado.Edit1.Text:=qtaquillasnombre.AsString;
        buscarempleado.showmodal();
      finally
        if qtaquillas.State in [dsbrowse] then qtaquillas.Edit;
        qtaquillasidt.Value:=buscarempleado.qempleadosid.Asinteger;
        qtaquillasnombre.Value:=buscarempleado.qempleadosnombre.Asstring;
        buscarempleado.Free;
      end;
    end;
end;

procedure Ttaquillas.dsqtaquillasStateChange(Sender: TObject);
begin
    if qtaquillas.State in [dsedit,dsinsert] then
    begin
        btnuevo.Enabled:=false;
        btmodificar.Enabled:=false;
        btborrar.Enabled:=false;
        btcancelar.Enabled:=true;
        btguardar.Enabled:=true;
    end else
    begin
        btnuevo.Enabled:=true;
        btmodificar.Enabled:=true;
        btborrar.Enabled:=true;
        btcancelar.Enabled:=false;
        btguardar.Enabled:=false;
    end;
end;

procedure Ttaquillas.FormKeyPress(Sender: TObject; var Key: Char);
begin
    key:=upcase(key);
    if (key='.') and (activecontrol is tdbgrid) then
    begin
        key:=','
    end;
    if (activecontrol is tdbgrid) then
    begin
        if Key = #13 then Key :=#9;
    end;

    if (key=#13) then
    begin
        Perform(WM_NextDLGCtl,0,0);
        key:=#0;
    end;
end;

procedure Ttaquillas.FormShow(Sender: TObject);
begin
   qtaquillas.Open;
   dm.tempresa.Open;
end;

procedure Ttaquillas.qtaquillasAfterInsert(DataSet: TDataSet);
begin
    qid.close;
    qid.ParamByName('EMPRESA').AsInteger:=dm.tempresaid.AsInteger;
    qid.open;
    if qidid.asstring='' then
    begin
        qtaquillasid.value:=1;
        qtaquillascodigo.value:='1';
    end else
           begin
             qtaquillasid.Value:=qidid.asinteger;
             qtaquillascodigo.Value:=qidid.asstring;
           end;
end;

procedure Ttaquillas.qtaquillasAfterPost(DataSet: TDataSet);
begin
   qtaquillas.Cancel;
   qtaquillas.Refresh;
end;

procedure Ttaquillas.qtaquillasBeforeDelete(DataSet: TDataSet);
begin
   case dm.PedirConfirmacion('¿Confirma que desea borrar esta taquilla?',true,true,false) of
        mrno:Abort;
   end;
end;

procedure Ttaquillas.qtaquillasBeforePost(DataSet: TDataSet);
var x:integer;
begin
    if qtaquillas.State in [dsinsert] then qtaquillaside.Value:=dm.tempresaid.AsInteger;
    if qtaquillas.state=dsinsert then x:=dm.PedirConfirmacion('¿Confirma que desea dar de alta esta taquilla?',true,true,true)
                                     else x:=dm.PedirConfirmacion('¿Confirma que desea modificar esta taquilla?',true,true,true);
    case x of
        mrno: begin
                 qtaquillas.cancel;
                 abort;
              end;
        mrcancel:BEGIN
                 abort;
                 END;
    end;

end;

end.
