Você está na página 1de 12

Exerccio 03

Construir um programa em Delphi com um menu, cadastrando informaes de clientes de


um banco, conforme tela abaixo.

Para tal, inserir, na paleta Standard clicar em menu.

Uma vez no form, d um clique duplo sobre o objeto e insira a tela conforme abaixo. No
esquea do & e das teclas de atalho.
Salvar o projeto com o nome menu_exe.dpr e o form principal princip.pas. Para criar um
novo form clique em File/New Form (ou conforme a sua verso do Delphi). Em seguida
salvar novamente o projeto. Aparecer a tela para definir o nome do novo form ,
incluir.pas. Inclua os objetos conforme tela abaixo.

Objeto Propriedade Valor


Form Name Cliente_incluir
Caption Incluso de Clientes
Label (qt 5) Caption Nome
Endereo
CEP
Telefone
Renda Mensal
Edit (qt 2) Name Ed_nome
Ed_endereco
MaskEdit (qt 2) EditMask 00000\-999;1;_ para CEP
!\(999\)0000-0000;1;_ para Tel
!99990,00;1;0 para renda mensal
Name Mk_cep
Mk_telefone
Mk_renda
RadioGroup Name Rg_civil
items Solteiro
Casado
Vivo
Desquitado
Divorciado

GroupBox Caption Servios


CheckBox Name Ck_especial
Ck_credito
Caption Cheque Escpecial
Carto de Crdito
Button Caption Incluir
Name BB_incluir

Algumas observaes sobre o MASKEDIT:


A propriedade EditMask do componente MaskEdit possui trs partes, separadas por ;
(ponto-e-vrgula):
!\(9xx99\)000-0000;1;_

!\(9xx99\)000-0000 - a mscara em si.


1 - indica que os caracteres sero salvos como parte do dado;
0 - indica que os caracteres NO sero salvos como parte do dado.
_ - caracter usado para representar o branco na mscara.

Na mscara o caracter 9 indica que permitido nmeros, mas no obrigatrio a entrada de


dados; o caracter 0 indica que obrigatrio a entrada de nmeros. Desta forma, queria que
fosse obrigatrio somente o telefone da pessoa, sem necessidade do DDD.

Para criar uma entrada de dados como voc deseja, utilize a mscara: LLLL99999
O caracter L obriga que seja somente letras (A-Z, a-z) e o 9 (como j disse) somente
nmeros

Caracteres especiais utilizados com a mscara:

! Faz com que a digitao da mscara fique parada no primeiro caracter, fazendo com que
os caracteres digitados que se movam. Ex: !;0;_

> Todos os caracteres alfabticos digitados aps este smbolo sero convertidos para
maisculos. Ex: >aaa;0;_

< Todos os caracteres alfabticos digitados aps este smbolo sero convertidos para
minsculos. Ex: <aaa;0;_
<> Anula o uso dos caracteres > e <. Ex: >aaa<>aaa;0;_

\ Utilizado para marcar determinado caractere no especial como fixo, no podendo


sobrescrev-lo. Ex: !\(999\)000-0000;0;_

L Caracteres alfabticos (A-Z, a-z.) de preenchimento obrigatrio. Ex: LLL;1;_

l (Letra ele minscula) Caracteres alfabticos (A-Z, a-z.) de preenchimento opcional. Ex:
lll;1;_

A Caracteres alfanumricos (A-Z, a-z, 0-9) de preenchimento obrigatrio. Ex: AAA;1;_

a Caracteres alfanumricos (A-Z, a-z, 0-9) de preenchimento opcional. Ex: aaa;1;_

C Exige preenchimento obrigatrio com qualquer caractere para a posio. Ex: CCC;1;_

c Permite qualquer caractere para a posio de preenchimento opcional. Ex: ccc;1;_

0 Caracteres numricos (0-9) de preenchimento obrigatrio. Ex: 000;1;_

9 Caracteres numricos (0-9) de preenchimento opcional. Ex: 999;1;_

# Caracteres numricos (0-9) e os sinais de - ou + de preenchimento opcional. Ex: ###;1;_

: Utilizado como separador de horas, minutos e segundos. Ex: !00:00:00;1;_

/ Utilizado como separador de dia, ms e ano. Ex: !99/99/9999;1;_

; Separa os trs campos da mscara.

_ Caractere usado normalmente nas posies do campo ainda no preenchidas.

EVENTOS:

D um clique duplo no menu Sair e insira o seguinte cdigo:

procedure Tmain.Sair1Click(Sender: TObject);


begin
if MessageDlg('Confirma a sada. Yes ou No ?',
mtConfirmation, [mbYes, mbNo], 0) = mrYes then
begin
Application.Terminate;
end;
end;

No meuu Inserir, adicionar o cdigo:


procedure Tmain.Incluir1Click(Sender: TObject);
begin
cliente_incluir.bb_incluir.visible := true;
cliente_incluir.bb_alterar.visible := false;
cliente_incluir.caption := 'Incluso de clientes';
cliente_incluir.Show;
end;

CRIANDO O BANCO DE DADOS

No Access criar o seguinte banco de dados com a tabela cliente.


CONEXO ODBC
No painel de controle, em ferramentas administrativas, acessar Fonte de Dados ODBC.
Selecionar Banco de Dados MS Access:

Nomear a base com banco_eter selecionar a base do banco criado no Access.


CRIANDO A CONEXO NO DELPHI.

Os objetos de bancos de dados so trs, a saber: DATABASE, DATASOURCE e TABLE.


Por formulrio temos apenas um DATABASE. Sendo assim,

Clicar duplo no Database:

Selecionar o Alias name com banco_eter (criado na conexo ODBC).

Na propriedade Name, digite db_eter. Desmarcar os checks de Login prompt e Keep


inactive connection. Clique em OK.

Altere as seguintes propriedades.

OBJETO PROPRIEDADE VALOR


Database Connected True
Table Name Tb_cliente
Database Db_eter
Table Name Cliente
Active True
Datasource Name Ds_cliente
DataSet Tb_cliente

No evento click do boto inserir:

procedure Tcliente_incluir.bb_incluirClick(Sender: TObject);


var
estado_civil, servico : string;
begin
case rg_civil.ItemIndex of
0 : estado_civil := 'Solteiro';
1 : estado_civil := 'Casado';
2 : estado_civil := 'Vivo';
3 : estado_civil := 'Desquitado';
4 : estado_civil := 'Divorciado';
else
showmessage('Estado civil deve ser preenchido');
rg_civil.SetFocus;
exit;
end;

if ck_especial.State = cbChecked then


servico := 'Cq. Especial';
if ck_credito.State = cbChecked then
servico := servico + ' - Carto';
try
with tb_cliente do begin
Append;
FieldByName('nome_cli').Value := ed_nome.Text;
FieldByName('endereco_cli').Value := ed_endereco.Text;
FieldByName('cep_cli').Value := mk_cep.Text;
FieldByName('telefone_cli').Value := mk_telefone.Text;
FieldByName('estcivil_cli').Value := estado_civil;
FieldByName('servico_cli').Value := servico;
FieldByName('renda_cli').AsVariant := strtofloat(mk_renda.Text);
Post;
end;
except
on E : EDBEngineError do begin
messageDlg('Ocorreu o seguinte erro ' +
E.Message, mtInformation, [mbOk], 0 );
end;
end;
cliente_incluir.close;
end;

CRIANDO O FORMULRIO DE CONSULTA

Clicar em New/Other/Form. Salvar com nome consulta.pas. Alterar a propriedade name


para cliente_consulta e o caption para Consulta a Cliente.

Para acrescentar os objetos de consulta acessar a paleta Data Control com os objetos
dbGrid e dbNavegator.

Utilizaremos a conexo realizada no formulrio, cliente_incluir. Para tal, clicar em


File/Uses Unit/ e selecione o formulrio referido.

Alterar as propriedades DataSource os objetos Dbgrid e DbNavegator. Alterar a


propriedade VisibleButtons do dbNavegator, retirando os botes de incluso, remoo,
edio e cancelamento.

Acrescentar os seguintes objetos.


Objeto Propriedade Valor
Label Caption Consulta pelo nome
Edit Name Ed_nome
Text Limpar
Button Caption Procurar....

Criar o evento click do boto procurar...

procedure Tcliente_consulta.Button1Click(Sender: TObject);


begin
if NOT cliente_incluir.tb_cliente.locate('nome_cli',ed_nome.text,[loCaseInsensitive,
loPartialKey])
then showmessage('No foi encontrado '+ ed_nome.text)

end;

CRIANDO O FORMULRIO DE ALTERAO.


Crie um novo form com o name cliente_alterar e o nome fsico alterar.pas Acrescentar os
objetos abaixo.

OBJETO PROPRIEDADE VALOR


Form Name Cliente_alterar
borderStyle bsDialog
Label Caption Digite o cdigo do cliente
Edit Name Ed_codigo
Text limpar
Button Caption Alterar

Criar o evento click no boto alterar.

procedure Tcliente_incluir.bb_alterarClick(Sender: TObject);


var
estado_civil, servico : string;
begin
case rg_civil.ItemIndex of
0 : estado_civil := 'Solteiro';
1 : estado_civil := 'Casado';
2 : estado_civil := 'Vivo';
3 : estado_civil := 'Desquitado';
4 : estado_civil := 'Divorciado';
else
showmessage('Estado civil deve ser preenchido');
rg_civil.SetFocus;
exit;
end;

if ck_especial.State = cbChecked then


servico := 'Cq. Especial';
if ck_credito.State = cbChecked then
servico := servico + ' - Carto';
try
if cliente_incluir.tb_cliente.FindKey([strtoint(ed_codigo.text)])
then begin
with tb_cliente do begin
Edit;
FieldByName('nome_cli').Value := ed_nome.Text;
FieldByName('endereco_cli').Value := ed_endereco.Text;
FieldByName('cep_cli').Value := mk_cep.Text;
FieldByName('telefone_cli').Value := mk_telefone.Text;
FieldByName('estcivil_cli').Value := estado_civil;
FieldByName('servico_cli').Value := servico;
FieldByName('renda_cli').AsVariant := strtofloat(mk_renda.Text);
Post;
end;
showmessage('Alterao realizada com sucesso');
end else showmessage('No foi possvel encontrar registro com cdigo '+
ed_codigo.Text);
except
on E : EDBEngineError do begin
messageDlg('Ocorreu o seguinte erro ' +
E.Message, mtInformation, [mbOk], 0 );
end;

end;
cliente_incluir.close;
end;

Você também pode gostar