unit uFormModelodeCadastro;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, Buttons, ExtCtrls, DBGrids, DB, Menus;

type
  TfrmModelodeCadastro = class(TForm)
    PanelTop: TPanel;
    PanelCenter: TPanel;
    PanelBottom: TPanel;
    btnNovo: TBitBtn;
    btnSalvar: TBitBtn;
    btnExcluir: TBitBtn;
    btnAlterar: TBitBtn;
    btnCancelar: TBitBtn;
    btnPesquisar: TBitBtn;
    dstGenerico: TDataSource;
    PopupMenu1: TPopupMenu;
    F10: TMenuItem;
    Label1: TLabel;
    Image2: TImage;
    Image3: TImage;
    Image4: TImage;
    procedure FormKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState);
    procedure btnNovoClick(Sender: TObject);
    procedure btnAlterarClick(Sender: TObject);
    procedure btnCancelarClick(Sender: TObject);
    procedure btnExcluirClick(Sender: TObject);
    procedure btnSalvarClick(Sender: TObject);
  private                  
    { Private declarations }
  public
    procedure AtivarBotoes(AEdicao: Boolean);
    { Public declarations }
  end;

var
  frmModelodeCadastro: TfrmModelodeCadastro;
  Confirma: Boolean;

implementation

uses uFuncoes, uFormMensagem;

{$R *.dfm}

procedure TfrmModelodeCadastro.AtivarBotoes(AEdicao: Boolean);
begin
  PanelCenter.Enabled := True;
  btnNovo.Enabled := not AEdicao;
  btnSalvar.Enabled := AEdicao;
  btnExcluir.Enabled := AEdicao;
  btnAlterar.Enabled := AEdicao;
  btnCancelar.Enabled := AEdicao;
  btnPesquisar.Enabled := not AEdicao;
end;

procedure TfrmModelodeCadastro.btnAlterarClick(Sender: TObject);
begin
  if dstGenerico.DataSet.IsEmpty then
    Exit;
  AtivarBotoes(True);
  dstGenerico.DataSet.Edit;
end;

procedure TfrmModelodeCadastro.btnCancelarClick(Sender: TObject);
begin
  AtivarBotoes(False);
  dstGenerico.DataSet.Cancel;
end;

procedure TfrmModelodeCadastro.btnExcluirClick(Sender: TObject);
begin
  if dstGenerico.DataSet.IsEmpty then
    Exit;
  if CaixadeMensagem('Deseja Excluir os Dados?') then
    begin
      Confirma := True;
      dstGenerico.DataSet.Edit;
      dstGenerico.DataSet.FieldByName('FLAG').AsInteger := 1;
      dstGenerico.DataSet.Post;
      dstGenerico.DataSet.Close;
      dstGenerico.DataSet.Open;
      AtivarBotoes(False);
    end
    else
    begin 
      btnExcluir.SetFocus;
    end;

end;

procedure TfrmModelodeCadastro.btnNovoClick(Sender: TObject);
begin
  AtivarBotoes(True);
  btnExcluir.Enabled := False;
  btnAlterar.Enabled := False;

  if not dstGenerico.DataSet.Active then
    dstGenerico.DataSet.Open;
  dstGenerico.DataSet.Append;
end;

procedure TfrmModelodeCadastro.btnSalvarClick(Sender: TObject);
begin
  // Por enquanto o tratamento eh em cada botão salvar do respectivo form.
end;

procedure TfrmModelodeCadastro.FormKeyDown(Sender: TObject; var Key: Word;
  Shift: TShiftState);
var
  bDirecao: Integer;
begin
  bDirecao := -1;
  if not (ActiveControl is TDBGrid) then
  begin

    case Key of
      VK_UP: bDirecao := 1;
      VK_DOWN,VK_RETURN: bDirecao := 0;
    end;

    if (bDirecao <> -1) then
      perform(WM_NEXTDLGCTL, bDirecao, 0) ;

  end;

  Case Key of
    VK_ESCAPE:
    if CaixadeMensagem('Deseja Fechar o Cadastro?') then
     self.Close;
  End;

    
end;

end.
