Escolar Documentos
Profissional Documentos
Cultura Documentos
1.
3. 7. 9. :.
4tili.ando o componente MainMenu+ crie as op5es de menu de acordo com a fi*ura 1. Por en6uanto iremos construir somente o menu cadastro e ta0elas. %dicione ao form um componente StatusBar da *uia -in1&. %ltere sua propriedade %uto8int para true. Isto far' com 6ue os 8ints apaream na status 0ar. Com um duplo cli6ue a0ra o editor StatusBar.panels. Cli6ue no 0oto %dd #e$s a fim de acrescentar tr)s panels. %0ra o evento ;nSho$ do formul'rio e acrescente o se*uinte c<di*o=
with StatusBar1 do begin Panels[0].Width := FrmPrincipal.Width Panels[1].Width := $0# Panels[!].Width := $0# Panels[1].%e&t := 'ate%oStr()ow*# Panels[!].%e&t := %ime%oStr()ow*# end# 1!"#
>.
%crescente a este formul'rio um componente ?imer @S,stemA. Com um duplo cli6ue so0re o mesmo+ a0ra o manipulador do evento ;n?imer e acrescente a se*uinte linha de c<di*o=
StatusBar1.Panels[!].%e&t := %ime%oStr()ow*#
1E. Csta 0ase de dados dever' ficar em um servidor+ 6ue pode ser a sua pr<pria m'6uina+ desde 6ue o Inter0ase este a instalado na mesma. #o caso deste minicurso+ copie o 0anco de dados Cursos.*d0 para o diret<rio C:\Documents and Settings\All Users. Cste 0anco possui 7 ta0elas com a estrutura apresentada na fi*ura &.
11. Colo6ue no FrmPrincipal um componente Data0ase @Fuia BDCA. %ltere seu nome para DbsPrincipal.
1&. Com um duplo cli6ue a0ra a anela de propriedades e preencha a anela 6ue aparece de acordo a fi*ura 1. 11. Desmar6ue a opo Io*in Prompt+ pois o usu'rio e senha sero passados para o 0anco via formul'rio de lo*in. ; usu'rio 6ue colocamos neste momento servir' apenas para a cone(o ao 0anco 6uando estivermos com o pro eto em tempo de confeco.
1:. %cesse o menu Pro,ect+-ptions. Passe o formul'rios Frm'ogin da lista Auto"create Forms para a lista A.alaible Forms+ dei(ando na primeira somente o !rmPrincipal. 1>. %cesse o evento ;nCreate do FrmPrincipal. Cscreva entre o 0e*in e end o se*uinte c<di*o+ confi*urando a linha em ne*rito para o correto caminho onde se encontra a 0ase de dados=
tr. Frm/ogin := %Frm/ogin.0reate(Sel1*# tr. i1 Frm/ogin.Show2odal = mr-3 then with 'bsPrincipal do begin 0lose# Params.0lear# Params.Add('SERVER NAME=C:\Documents and Settings\All sers\Cursos.gd!'"# Params.4dd(56S78 )427=5 9 Frm/ogin.7dt6suario.%e&t*# Params.4dd(5P4SSW-8'=5 9 Frm/ogin.7dtSenha.%e&t*# -pen# end else 4pplication.%erminate# e&cept Show2essage(56su:rio ou Senha in;:lida. - Programa ser: encerrado<5*# 4pplication.%erminate# end# 1inall. Frm/ogin.Free# end#
Se voc) estiver acessando a 0ase de dados em um servidor @linu(+ por e(emploA+ mude a linha Server #ame para al*o parecido com a linha a0ai(o= 'Ser$er Name=%&.'.&.(:)$ar)li!)inter!ase)dados)cursos.gd!'# onde o endereo IP D o endereo da m'6uina servidora e o caminho representa o local onde se encontra o 0anco tam0Dm na m'6uina servidora.
&1. %cesse o menu Pro,ect+-ptions. Passe o formul'rios FrmCadCidades da lista Auto"create Forms para a lista A.alaible Forms+ dei(ando na primeira somente o !rmPrincipal.
%utor= ProfG Cl'udio Portes @profclaudioportesH*mail.comA - & de 7
&&. %dicione a este formul'rio um componente Nuer,+ um 4pdateSNI @BDCA e um DataSource @Data%ccessA. Confi*ure-os conforme descrito a0ai(o= &1. %ltere o nome do componente Nuer,1 para 6r2Cidade. %ltere a propriedade Data0ase#ame @respons'vel pela cone(o com o 0ancoA para dbCursos. %ltere a instruo SNI para : S('(CT CDC3DAD(7 8 C3DAD( F+, C3DAD( 0/(+( 1 9 : ,+D(+ 1; 8 C3DAD(<. Procure escrever a instruo SNI em maiOsculo. ,1S= % cl'usula =)ere 1 9 : foi adicionada ao comando SNI visando a0rir a ta0ela sem entretanto+ tra.er para a mem<ria todos os re*istros 6ue e(istam no 0anco. Isto D feito para economi.ar mem<ria+ visto 6ue o usu'rio pode estar 6uerendo a0rir o formul'rio somente para cadastrar uma nova cidade+ no sendo necess'rio visuali.ar tudo 6ue e(iste no 0anco. &3. Carre*ue os componentes ?!ields da Nuer, com um duplo cli6ue so0re a 6uer, e escolhendo a opo Add All Fields com o 0oto direito do mouse. Selecione o campo CDCID%DC e altere a propriedade Displa2 'abel para C>digo. %ltere tam0Dm o campo #MCID%DC para 8ome Cidade. &7. Para 6ue possamos utili.ar um componente Nuer, para atuali.ao de dados devemos alterar sua propriedade Cached4pdates para ?rue e a propriedade 4pdate;0 ect deve ser apontada para um componente 4pdateSNI. Cstas confi*ura5es faro com 6ue a Nuer, *rave os dados em mem<ria cache e aponte para um componente 4pdateSNI 6ue D 6uem far' na realidade a atuali.ao. Portanto+ altere a propriedade UpdateS6' para UpdateS6'1 6ue se encontra no formul'rio.
Cac)edUpdates. Nuando mudamos esta propriedade para ?rue+ estamos redirecionando as altera5es da Nuer, para a mem<ria cache+ fa.endo com 6ue ao se fechar o formul'rio+ todas as altera5es se am perdidas. Para 6ue isto no ocorra devemos escrever o c<di*o =r.4luno.4ppl.6pdates# no evento %fterPost e %fterDelete da Nuer,. &9. %ltere o nome do 4pdateSNI para UpdCidade. D) um duplo cli6ue no 4pdateSNI para a0rir uma anela tal 6ual a anela da fi*ura 7. Cscolha o@sA campo@sA chave da ta0ela @neste caso CDCID%DCA e cli6ue no 0oto ?enerate S6' e depois no 0oto ,@. &:. Com relao ao componente DataSource+ altere seu nome para DtsCidade. Io*o ap<s+ altere sua propriedade DataSet para Nr,Cidade @Cscolha na listaA. %ntes de confi*urarmos o componente 4pdateSNI+ devemos *erar os componentes ?!ields da Nuer,. /e a item &9. &>. %ntes de confi*urar os componentes de controle @D0CditA+ adicione ao formul'rio um componente Tool1ar @Fuia -in1&A. %dicione a este componente+ B @noveA componentes Speed1utton @%dditionalA e um componente D0#avi*ator @DataControlA. ; D0#avi*ator deve ficar depois dos 7 primeiros 0ot5es @Basta arrastar com o mouseA e somente os 3 primeiros 0ot5es devem ficar ha0ilitados. Para isso+ cli6ue com o 0oto direito+ escolha a opo (ApandA+ e altere para !alse da su0-propriedade n0Insert atD n0Pefresh. %ltere a propriedade -idth para 1EE. Para separar os componentes+ utili.e um Separator como pode ser visto na fi*ura 9 @Boto direito so0re o ?oolBar e escolha #e$ SeparatorA.
PageControl TabS)eet
Figura B " Cadastro de Cidades
&B. Cada componente dever' ser renomeado da es6uerda para a direita= BtnIncluir+ BtnC(cluir+ BtnCditar+ BtnCancelar+ BtnFravar+ #v*Cidade+ Btn%lternar+ BtnCarre*ar+ BtnIrPara e Btn!echar respectivamente. %s ima*ens dos 0ot5es esto no diret<rio fornecido pelo instrutor. 1E. %dicione a0ai(o do ?oolBar um componente PageControl @-in1&A. %ltere seu alinhamento para %lClient. Com o 0oto direito do mouse adicione duas novas p'*inas. %ltere o nome do Pa*eControl @selecione-o com cli6ue onde a seta indicaA para PgcCadastro. %ltere o nome de cada uma das ?a0SheetQs criadas @selecione-as com um cli6ue onde a seta indicaA para TbsCadastro e TbsConsulta.
/oc) pode criar e confi*urar os componentes D0Cdit de uma s< ve.. Para isto+ d) um duplo cli6ue no componente Nuer, @Nr,CidadeA+ a0ra o seu editor de campos. Se voc) ' carre*ou e confi*urou seus campos @Item &3A+ 0asta selecionar todos eles e arrast'-los para o local do formul'rio onde 6uer 6ue os mesmos fi6uem. 11. %*ora vamos fa.er com 6ue os 0ot5es funcionem. Com um duplo cli6ue em cada um deles crie a manipulao para o evento ,nclic- onde devero ser colocados os se*uintes c<di*os=
*tn+ncluir *tnEditar *tnE,cluir *tnCancelar *tn-ra$ar *tnAlternar =r.0idade.4ppend# =r.0idade.7dit# i1 2essageBo&(>andle? 57&cluir esta 0idade@5? 50on1irmaABo5? 2BC-D04)07/ 9 2BC'7FB6%%-)1* = Ed-3 then =r.0idade.'elete# =r.0idade.0ancel# =r.0idade.Post# i1 Pgc0adastro.4cti;ePage = %bs0adastro then Pgc0adastro.4cti;ePage := %bs0onsulta else Pgc0adastro.4cti;ePage := %bs0adastro# with =r.0idade do begin 0lose# SFl.%e&t := 5S7/70% G F8-2 0E'4'7 -8'78 BH )20E'4'75# -pen# end# 0lose#
*tnCarregar
*tn+rPara *tn.ec/ar
1&. Nuando o formul'rio de Cidade for criado+ devemos ativar a Nuer,+ portanto+ ative o evento ;nCreate do !rmCadCidades e escreva o c<di*o= 6r2CidadeD,pen<. 11. Selecione a *uia de consulta e insira nela um componente D0Frid @DataControlsA. %ltere seu alinhamento para %llClient e confi*ure sua propriedade DataSource. /olte para a *uia de cadastro. 13. Salve o pro eto @opo !ile " Save %llA. 17. /amos testar nossa aplicao para ver se est' tudo funcionandoR 19. Compile e e(ecute o pro eto. ?ente ativar o cadastro de cidades. !uncionouR 1:. Se no funcionou D por6ue no inserimos no #ormul&rio principal+ no evento ;nClicK do 2tem de menu S?a0elas " CidadeM+ os comandos necess'rios. /e a no pr<(imo 2tem como fa.e-lo. 1>. /olte ao pro eto e acesse o evento ;nClicK deste item de menu @0asta clicar na opo de menuA. %dicione neste evento o se*uinte c<di*o=
i1 Frm0ad0idades = nil then Frm0ad0idades := %Frm0ad0idades.0reate(Sel1*# IICria o formul'rio. Frm0ad0idades.WindowState := ws)ormal# II Pestaura o form caso este a minimi.ado. Frm0ad0idades.Bring%oFront# II ?ra. o form para a frente se estiver atr's de outro.
end# end#
3E. Da mesma forma+ no devemos dei(ar 6ue o usu'rio tente *ravar um re*istro sem preencher os dois campos @C<di*o e #ome da CidadeA. Para isto+ d) um duplo cli6ue no 0oto BtnFravar e altere o c<di*o acrescentando as se*uintes linhas antes do c<di*o 6ue ' e(iste=
i1 EdtCdCidade.%e&t = 55 then begin Show2essage(5Fa;or preencher o cMdigo da 0idade5*# 7dt0d0idade.SetFocus# 7&it# end# i1 EdtNmCidade.%e&t = 55 then begin Show2essage(5Fa;or preencher o nome da 0idade5*# 7dt)m0idade.SetFocus# 7&it# end# =r.0idade.Post#
;0serve 6ue os nomes dos D0CditUs foram alterados para CdtV#ome do CampoW. Isto facilita a pro*ramao. !aa o mesmo em seu formul'rio. 31. %*ora faa os formul'rios de Bairro e Curso se*uinte o mesmo padro do cadastro de cidades.