Você está na página 1de 4

Lazarus + Firebird + Zeos

Tratamento de Botões e outros objetos.


Layout da aplicação
1. Insira 9 TButtons.
2. 1 objeto TZConnection, TZQuery e TDataSource.
3. 1 DbGrid.
4. Para este modelo foi utilizado uma tabela contendo itens e preços. (Pode ser feito com
outra tabela, ex: um cadastro
qualquer).
5. O foco desta atividade é
mostrar como o tratamento de
botões e outros objetos deixa a
aplicação menos sujeita a erros por
parte do usuário.
6. Faça as ligações entre os
objetos de acesso a dados e o
DbGrid.
7. Todo o processo de utilização
desta aplicação será divido em 2
modos de operação principais: Modo
leitura e modo Alteração.
8. Modo leitura: Deixa o
DbGrid em Apenas leitura e Habilita
apenas os botões de navegação e os
botões (+)Inserir , alterar e (-)excluir.
9. Modo Alteração: Deixa o
BdGrid habilitado a receber ou um
novo registro ou uma alteração.
Apenas os botões Gravar e Cancelar
ficam ativos.
10. Momento de chamar cada procedure: A leitura deve ser ativada no evento FormCreate
do formulário, após o método Delete, Cancel e Post da Query criada. Já a editar deve
ser chamada antes dos métodos Append e Edit da Query criada.
Em Leitura Em Alteração

Veja o código fonte inteiro deste modelo abaixo:


unit Unit1;

{$mode objfpc}{$H+}

interface

uses
Classes, SysUtils, db, FileUtil, LResources, Forms, Controls, Graphics,
Dialogs, StdCtrls, DbCtrls, DBGrids, ZConnection, ZDataset;

type

{ TForm1 }

TForm1 = class(TForm)
btPrimeiro: TButton;
btAnterior: TButton;
btProximo: TButton;
btAlterar: TButton;
btInserir: TButton;
btExcluir: TButton;
btCancelar: TButton;
btGravar: TButton;
btUltimo: TButton;
Datasource1: TDatasource;
DBGrid1: TDBGrid;
ZConnection1: TZConnection;
ZTable1: TZTable;
ZTable1CODIGO: TLongintField;
ZTable1DESCRICAO: TStringField;
ZTable1QT: TLongintField;
ZTable1VALOR: TFloatField;
procedure btAlterarClick(Sender: TObject);
procedure btAnteriorClick(Sender: TObject);
procedure btInserirClick(Sender: TObject);
procedure btExcluirClick(Sender: TObject);
procedure btCancelarClick(Sender: TObject);
procedure btGravarClick(Sender: TObject);
procedure btPrimeiroClick(Sender: TObject);
procedure btProximoClick(Sender: TObject);
procedure btUltimoClick(Sender: TObject);
procedure FormCreate(Sender: TObject);
private
{ private declarations }
public
procedure leitura;
procedure editar;
end;

var
Form1: TForm1;

implementation

{ TForm1 }

procedure TForm1.FormCreate(Sender: TObject);


begin
ZTable1.Close;
ZTable1.Open;
leitura;
end;

procedure TForm1.btAlterarClick(Sender: TObject);


begin
editar;
ZTable1.Edit;
end;

procedure TForm1.btAnteriorClick(Sender: TObject);


begin
ZTable1.Prior;
end;

procedure TForm1.btInserirClick(Sender: TObject);


begin
editar;
ZTable1.Append;
end;

procedure TForm1.btExcluirClick(Sender: TObject);


begin
if MessageDlg('Deseja mesmo excluir!', mtConfirmation, [mbYes, mbNo], 0) = mrYes then
begin
showmessage('Exclusão feita!');
ZTable1.Delete;
end;
leitura;
end;

procedure TForm1.btCancelarClick(Sender: TObject);


begin
ZTable1.Cancel;
leitura;
end;

procedure TForm1.btGravarClick(Sender: TObject);


begin
ZTable1.Post;
ShowMessage('Operação realizada com sucesso!');
leitura;
end;

procedure TForm1.btPrimeiroClick(Sender: TObject);


begin
ZTable1.First;
end;

procedure TForm1.btProximoClick(Sender: TObject);


begin
ZTable1.Next;
end;

procedure TForm1.btUltimoClick(Sender: TObject);


begin
ZTable1.Last;
end;

procedure TForm1.leitura;
begin
btAlterar.Enabled:= true;
btInserir.Enabled:= True;
btExcluir.Enabled:= true;
btCancelar.Enabled:= false;
btGravar.Enabled:= false;
btPrimeiro.Enabled:= true;
btAnterior.Enabled:= true;
btProximo.Enabled:= true;
btUltimo.Enabled:= true;
DBGrid1.ReadOnly:= true;
{Em modo leitura os DBEit devem ter sua propriedade
ReadOnly alteradas para True}
end;
procedure TForm1.editar;
begin
btAlterar.Enabled:= false;
btInserir.Enabled:= false;
btExcluir.Enabled:= false;
btCancelar.Enabled:= true;
btGravar.Enabled:= true;
btPrimeiro.Enabled:= false;
btAnterior.Enabled:= false;
btProximo.Enabled:= false;
btUltimo.Enabled:= false;
DBGrid1.ReadOnly:= false;
{Em modo editar os DBEit devem ter sua propriedade
ReadOnly alteradas para False}
end;

initialization
{$I unit1.lrs}

end.