Professional Documents
Culture Documents
utilizar POO no Delphi, criaremos uma classe para conexo e uma classe de
clientes para realizar as operaes de Select, Insert, Update e Delete no
banco. A POO (Programao Orientada a Objetos) facilita e muito a
manuteno e o reaproveitamento de cdigo, sendo ainda facil de se entender
e aplicar, vamos por a mo na massa?
Crie um banco de dados com uma tabela chamada Clientes:
// Observe que o campo id auto incremento
****************************
Observe que na classe TConn o create o nico mtodo disponvel, e no
mesmo a conexo j realizada, claro, voc pode e deve implementar outros
mtodos nesta classe como capturar a string de conexo de um arquivo ini ou
xml, mas como a inteno aqui e mostrar os primeiros passos POO no Delphi
Result := true
else
Result := false;
except
Result := false;
end;
end;
end;
procedure TClientes.SetChave(const Value: integer);
begin
FChave := Value;
end;
procedure TClientes.SetDs(const Value: TDataSource);
begin
FDs := Value;
end;
procedure TClientes.SetDsPesquisa(const Value: tDataSource);
begin
FDsPesquisa := Value;
end;
procedure TClientes.SetEndereco(const Value: string);
begin
FEndereco := Value;
end;
procedure TClientes.SetNome(const Value: string);
begin
FNome := Value;
end;
procedure TClientes.SetObs(const Value: string);
begin
FObs := Value;
end;
procedure TClientes.SetQry(const Value: TADOQuery);
begin
FQry := Value;
end;
procedure TClientes.SetQryPesquisa(const Value: TADOQuery);
begin
FQryPesquisa := Value;
end;
procedure TClientes.SetTelefone(const Value: string);
begin
FTelefone := Value;
end;
end.
****************************
Observem que esta classe simples e s contem metodos com SQL, estes
mtodos so usados na nossa tela, abaixo segue uma sugesto de layout para
a tela:
BitBtn1: TBitBtn;
BitBtn2: TBitBtn;
mmoUPObs: TMemo;
edtUpTelefones: TEdit;
Label10: TLabel;
Label11: TLabel;
edtUpEndereco: TEdit;
Label12: TLabel;
Label13: TLabel;
edtUpNome: TEdit;
Label14: TLabel;
edtClienteDel: TEdit;
BitBtn3: TBitBtn;
Label15: TLabel;
procedure BitBtn1Click(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure DBGrid1CellClick(Column: TColumn);
procedure BitBtn2Click(Sender: TObject);
procedure DBGrid1DblClick(Sender: TObject);
procedure PageControl1Change(Sender: TObject);
procedure BitBtn3Click(Sender: TObject);
procedure Label15MouseLeave(Sender: TObject);
procedure Label15MouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
procedure Label15Click(Sender: TObject);
private
{ Private declarations }
procedure LimpaCampos;
public
{ Public declarations }
end;
var
frmPrincipal: TfrmPrincipal;
Conn : TConn;
Clientes : TClientes;
implementation
uses DB, ufrmSplashSobre;
{$R *.dfm}
procedure TfrmPrincipal.BitBtn1Click(Sender: TObject);
begin
if edtNome.text = '' then exit;
with Clientes do // preeencho as properties
begin
Nome
:= edtNome.text;
Endereco := edtEndereco.text;
Telefone := edtTelefone.text;
Obs
:= mmoObs.Text;
if Inserir then // operao incluir
begin
edtClienteDel.text := DBGrid1.DataSource.DataSet.FieldByName('Nome').asstring;
end;
procedure TfrmPrincipal.DBGrid1DblClick(Sender: TObject);
begin
// duplo click no grid leva para tela de update
PageControl1.ActivePageIndex := 2;
end;
procedure TfrmPrincipal.FormCreate(Sender: TObject);
begin
Conn
:= TConn.Create; // Cria a conexo e conecta
Clientes
:= TClientes.Create(Conn); // cria o objeto cliente
Clientes.Selecionar(0,'','Nome'); // metodo de seleo de cliente
DBGrid1.DataSource
:= clientes.DsPesquisa;
DBNavigator1.DataSource:= Clientes.DsPesquisa;
//Conn.Destroy;
end;
procedure TfrmPrincipal.LimpaCampos;
var
i : integer; // limpa edits e memos
begin
for I := 1 to ComponentCount -1 do
begin
if Components[i] is Tedit then
(Components[i] as TEdit).clear;
if Components[i] is TMemo then
(Components[i] as TMemo).clear;
end;
end;
procedure TfrmPrincipal.PageControl1Change(Sender: TObject);
begin
if PageControl1.ActivePageIndex = 0 then
Clientes.Selecionar(0,'','Nome'); // refresh no grid
end;
procedure TfrmPrincipal.Label15MouseLeave(Sender: TObject);
begin
label15.Font.Style := []; // efeito link
end;
procedure TfrmPrincipal.Label15MouseMove(Sender: TObject;
Shift: TShiftState; X, Y: Integer);
begin
label15.Font.Style := [fsUnderline]; // efeito link
end;
procedure TfrmPrincipal.Label15Click(Sender: TObject);
var
frmSplashSobre : TfrmSplashSobre;
begin
try
frmSplashSobre := TfrmSplashSobre.create(application);
frmSplashSobre.ShowModal;
finally
freeandnil(frmSplashSobre);
end;
end;
end.
****************************
Observem a aplicao em funcionamento, qualquer sugesto ou dvida entrem
em contato : leoquartieri@hotmail.com
por:
Leonardo Quartieri
Desenvolvedor Delphi & Delphi.Net
30/04/2007- Braslia - DF