Escolar Documentos
Profissional Documentos
Cultura Documentos
POO - Delphi - Leonardo Quartieri
POO - Delphi - Leonardo Quartieri
utilizar POO no Delphi, criaremos uma classe para conexão e uma classe de
clientes para realizar as operações de Select, Insert, Update e Delete no
banco. A POO (Programação Orientada a Objetos) facilita e muito a
manutenção e o reaproveitamento de código, sendo ainda facil de se entender
e aplicar, vamos por a mão na massa?
****************************
unit uConn;
interface
uses ADODB;
type
TConn = class
public
Conn : TADOConnection;
constructor Create;
end;
implementation
{ TConn }
constructor TConn.Create;
begin
Conn := TADOConnection.Create(nil);
Conn.LoginPrompt := false;
Conn.ConnectionString := 'Provider=SQLOLEDB.1'+
';Password=XXXXX'+
';Persist Security Info=False'+
';User ID=XXXXX'+
';Initial Catalog=Clientes'+
';Data Source=QD_08';
Conn.Connected := true;
end;
end.
****************************
Agora vamos a classe de Clientes(File > New > Unit), observe abaixo a unit
uClientes :
****************************
unit uClientes;
interface
type
TClientes = class
private
FObs: string;
FNome: string;
FChave: integer;
FEndereco: string;
FTelefone: string;
FQry: TADOQuery;
FDs: TDataSource;
Conexao : TConn;
FDsPesquisa: tDataSource;
FQryPesquisa: TADOQuery;
procedure SetChave(const Value: integer);
procedure SetEndereco(const Value: string);
procedure SetNome(const Value: string);
procedure SetObs(const Value: string);
procedure SetTelefone(const Value: string);
procedure SetDs(const Value: TDataSource);
procedure SetQry(const Value: TADOQuery);
procedure SetDsPesquisa(const Value: tDataSource);
procedure SetQryPesquisa(const Value: TADOQuery);
published
public
// Propriedades
property Chave : integer read FChave write SetChave;
property Nome : string read FNome write SetNome;
property Endereco : string read FEndereco write SetEndereco;
property Telefone : string read FTelefone write SetTelefone;
property Obs : string read FObs write SetObs;
// Componentes
property Qry : TADOQuery read FQry write SetQry;
property QryPesquisa : TADOQuery read FQryPesquisa write SetQryPesquisa;
// Métodos
function Selecionar(Chave: Integer; Nome,Ordem: String):Boolean;
function Inserir : boolean;
function Alterar : boolean;
function Deletar(chave: integer) : boolean;
end;
implementation
{ TClientes }
Qry.Connection := Conexao.Conn;
QryPesquisa.Connection := Conexao.Conn;
Ds.DataSet := Qry;
DsPesquisa.DataSet := QryPesquisa;
end;
try
ExecSQL;
result := true;
except
result := false;
end;
end;
end;
Nome := '%'+Nome+'%';
with QryPesquisa do
begin
Close;
Sql.Text := ' Select * from Clientes where 1=1 ';
end.
****************************
Observem que esta classe é simples e só contem metodos com SQL, estes
métodos são usados na nossa tela, abaixo segue uma sugestão de layout para
a tela:
****************************
unit ufrmPrincipal;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls,
Forms, Dialogs, uConn, StdCtrls, Buttons, Grids, DBGrids, ExtCtrls,
DBCtrls, ComCtrls, uClientes;
type
TfrmPrincipal = class(TForm)
PageControl1: TPageControl;
TabSheet1: TTabSheet;
TabSheet2: TTabSheet;
TabSheet3: TTabSheet;
TabSheet4: TTabSheet;
Label1: TLabel;
DBNavigator1: TDBNavigator;
DBGrid1: TDBGrid;
Label2: TLabel;
Label3: TLabel;
Label4: TLabel;
Label5: TLabel;
edtNome: TEdit;
edtEndereco: TEdit;
edtTelefone: TEdit;
mmoObs: TMemo;
Label6: TLabel;
Label7: TLabel;
Label8: TLabel;
Label9: TLabel;
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
{$R *.dfm}
LimpaCampos;
end;
Nome := edtUpNome.text;
Endereco := edtUpEndereco.text;
Telefone := edtUpTelefones.text;
Obs := mmoUpObs.Text;
if clientes.Deletar(DBGrid1.DataSource.DataSet.FieldByName('id').asinteger)then
begin
Application.MessageBox('Registro deletado com sucesso!','Atenção',MB_OK);
end
else
begin
Application.MessageBox('O registro não foi deletado!','Atenção',MB_OK);
end;
LimpaCampos;
end;
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;
end.
****************************
por:
Leonardo Quartieri
Desenvolvedor Delphi & Delphi.Net
30/04/2007- Brasília - DF