Вы находитесь на странице: 1из 16

Delphi (Sistema de Controle de Pedidos)

Configurao do Alias

Primeiro iremos configurar o Alias onde o Data Base Desktop ir criar as nossas tabelas. Iremos configurar com o nome SistemaPedidoseunome e com o caminho onde ficaro salvas as mesmas 1 2 Rode o BDE Administrator Clique com o Boto Direito no Frame Esquerdo

3 4 5 6

Clique em New Selecione Standard e clique em OK Renomeie como SistemaPedidoSeuNome No frame direita no Comando PATH localize a pasta em que estaro salvas as tabelas

7 Feche o BDE Administrator dando Yes/Sim quando ele perguntar se deseja salvar. Obs: Se o Programa travar... finalize-o com um Ctrl + Alt + Del a criao do Alias j ter ocorrido. 1

Criao das Tabelas


Agora iremos criar as tabelas que iro fazer parte do nosso sistema. Sero criadas 5 tabelas: Clientes, Vendedor, Pedidos, Itens_Pedido e Produto. 8 9 Abra o Database Desktop Localize o seu Alias Menu File/Working Directory... Caso no esteja disponvel feche a janela e v no Menu File/Private Directory... Localize a pasta que o seu Alias est apontando e de OK volte no Working Directory e...

10 Selecione no Menu Suspenso Aliases o Alias criado por voc A janela ficar da seguinte forma.

11 Pronto agora o Database Desktop j estar configurado para que voc possa criar as suas tabelas. 12 Crie uma nova tabela File/New/Table... e selecione a opo Paradox 7 e de um OK. A janela de configurao da tabela abrir. Nela voc ir criar os campos pertencentes a tabela, os tipos de dados que eles aceitaram receber, as chaves primrias e o comprimento dos dados. Configure as 5 tabelas da seguinte maneira: Importante: Na criao dos campos das tabelas no utilize acentos ou . Tabela Clientes = Salve como TbCliente

Tabela Vendedor = Salve como TbVendedor

Tabela Produto = Salve como TbProduto

Tabela Pedido = Salve como TbPedido

Tabela Itens_Pedido = Salve como TbItens_Pedido

13 Salve as tabelas e feche o Database Desktop

Criando o Formulrio Principal


Agora vamos comear a modelar o programa e criar os formulrios e cdigos de insero, consulta, edio e excluso nas nossas tabelas. 14 Abra o Borland Delphi 6.0 15 Inicie um novo Projeto (File/New/Application) 16 Clique em Save All e salve o contedo na pasta que desejar Renomeie as unidades como Fprincipal para a Unit1 PrjSistemaPedidos para o Projeto1 3

17 Configure o tamanho do Form da maneira que voc desejar. Altere o Caption para Sistema de Controle de Pedidos e o Name para Principal e outras propriedades que forem do seu interesse como cor, borda, etc. 18 19 Insira um MainMenu (Localizado na Guia Standard) D dois cliques no componente MainMenu para abrir a edio do mesmo

20 Insira (como na figura) os Menus e Submenus: Cadastro : Cliente, Vendedor, Produto, Pedidos, - (hfen para inserir uma linha) e Sair Relatrios : Cliente, Vendedor, Produto e Pedidos Ajuda Sobre 21 22 Feche a edio do menu, o menu que voc editou aparecer na Unit Principal. Clique no Menu Cadastro/Sair do Formulrio Principal e edite o cdigo close;

Criando o Formulrio Cadastrar Cliente


Vamos criar o formulrio onde sero cadastrados novos clientes na TbClientes.

23 Insira um novo Form no Projeto e salve-o como FClientes

24 Edite as Propriedades da seguinte maneira: Name = Fcliente Caption = Cadastro de Clientes 25 Insira e Edite os seguintes componentes no form Fcliente: 5 Labels 3 Edits 2 MaskEdit (4 Componente da Guia Additional)
Edite os Caption - Nome, Endereo, CEP, Telefone e Email Edite os Name - EdNome, EdEndereco e EdEmail Text - Deixe o contedo em branco Edite os Name - MkCEP, MkTelefone Text - Deixe o contedo em branco

26 Insira 10 Butons no form Fcliente e edite as propriedades de cada um deles como descrito na tabela a seguir ( O evento OnClick pode ser editado dando dois cliques em cima do componente).

Caption
<= < > => Inserir Editar Deletar Gravar Cancelar Atualizar

Name
BtnPrimeiro BtnAnterior BtnProximo BtnUltimo BtnInserir BtnEditar BtnDeletar BtnGravar BtnCancelar BtnAtualizar

Evento OnClick
tbcliente.First; tbcliente.Prior; tbcliente.Next; tbcliente.Last; tbcliente.Insert; tbcliente.Edit; tbcliente.Delete; tbcliente.Post; tbcliente.Cancel; tbcliente.Refresh;

Exemplo: 5

27 Insira um componente Table localizado na guia BDE 28 Edite as Propriedades da seguinte maneira: Name = TbCliente DataBaseName= Coloque o Alias que voc criou no programa BDE Administrator 29 Ainda nas Propriedades do componente Table desa at a propriedade TableName e localize a tabela TabCliente.DB. Suba e de 2 Cliques na propriedade Active, caso tenha procedido da maneira correta seu contedo dever mudar de False para True. Obs.: Caso ocorra algum erro feche e abra o projeto novamente e tente mudar a propriedade Active novamente, se o erro persistir repita os Passos 1 ao 7 e crie novamente o Alias 30 Agora vamos localizar os campos da tabela que estaremos usando. D dois cliques no componente Table e na janela que aparecer clique com o boto direito e na opo Add All Fields... d um OK e feche a edio do Table.

31 Agrupe os componentes e arrume o Layout do Form como desejar sendo coerente e levando em conta a funcionalidade do mesmo. No se preocupe com o componente Table pois este s ser visvel em tempo de projeto. O meu ficou da seguinte maneira:

32 Visualize o Form Fprincipal novamente, caso no seja possvel aperte as teclas Shift + F12 e selecione-o na lista: 33 Acesse o SubMenu Cadastro/Cliente e insira os seguintes cdigos

A linha de cdigo fcliente.position := podesktopcenter; far com que o Form FCliente aparea centralizado na tela, no necessria portanto mas se for do seu interesse use-a, e a segunda linha fcliente.showmodal; exiba o mesmo sem a possibilidade do usurio alternar para o form FPrincipal sem que encerre o FCliente. Caso no deseje tal proibio modifique a linha de cdigo para fcliente.show; 34 Mande executar o Programa. Ele ento ir lhe perguntar se deseja referenciar o formulrio Fcliente na lista de USES do formulrio principal. Diga Sim (Yes) e essa referncia ser criada automaticamente.

35 Execute novamente veja como ele est ficando. Cadastre alguns clientes na sua tabela, apertando antes o boto Inserir e somente aps completar o cadastro o boto gravar. Note que alguns botes por questo de funcionalidade no deveriam estar habilitados em certos momentos porm isso iremos configurar mais para frente.

Editando Botes do Formulrio Clientes


Agora vamos editar as funes criadas nos botes para que ele salve os contedos dos campos Edit e tambm configure os botes como habilitados ou no dependendo da situao. 36 D dois cliques no BtnInserir para que possamos incrementar o seu evento OnClick. Insira as seguintes linhas.

Linha de comando

Descrio
Limpa o texto que est sendo exibido no Edit j que iremos cadastrar novos dados. Obs.: Esse procedimento no limpar o registro na tabela somente o que est exibindo no Edit. Esse procedimento tambm dever ser feito em todos os 3 Edit e os 2 MaskEdit. Faz com que o cursor aparea piscando no componente em questo, no caso EdNome.

EdNome.Text := ' ';

EdNome.SetFocus;

Caso tenha procedido de maneira correta seu cdigo dever ficar assim.

37 Agora dois cliques no BtnGravar para que possamos incrementar a funo OnClick do mesmo e para que grave na tabela TbCliente os dados inseridos no nosso formulrio. Faa, antes da linha tbcliente.Post, cada campo da tabela TbCliente receber o correspondente Edit ou MaskEdit. Por exemplo: TbClienteNome.Value := EdNome.Text; TbClienteTelefone.Value := MkTelefone.Text;

Ou seja, os campos da tabela TbCliente iro receber os dados dos respectivos Edits e MaskEdit. e ao final das inseres entre com a linha de comando, tbcliente.Post; que far com que os dados sejam realmente gravados na tabela TbCliente. 38 Vamos editar agora os botes de navegao atravs dos registros. D dois cliques em cada boto e acrescente logo aps as funes que j foram inseridas em cada um deles o seguinte cdigo, EdNome.Text := TbClienteNome.Value; EdEndereco.Text := TbClienteEndereco.Value; MkCEP.Text := TbClienteCEP.Value; MkTelefone.Text := TbClienteTelefone.Value; EdEmail.Text := TbClienteEmail.Value; os Edits e MaskEdits iro receber os campos correspondentes ao registros em questo. Ou ento crie dois procedimentos para economizar cdigo, faa como esta demonstrado na pgina 13 em OBS (Flaviano)!!!

Habilitando e Desabilitando botes

Alguns botes do nosso formulrio devero estar em alguns momentos habilitados ou no. Por exemplo, se estivermos visualizando o primeiro registro o BtnPrimeiro e o BtnAnterior devero estar desabilitados pois no existir um registro antes do primeiro assim como no ltimo no haver um posterior, o formulrio no poder gravar nenhum registro enquanto o BtnInserir no for apertado. Vamos ento realizar essas configuraes. 39 Primeiramente deveremos desabilitar a alterao do contedo nos Edits e MaskEdits enquanto o BtnInserir no for apertado pois, ao apertarmos o mesmo os campos dos Edits sero limpados e caso o usurio se esquea e preencha os dados antes de clicar em Inserir ele ter seu servio perdido. E tambm por acidente algum registro pode ser alterado sem que o usurio deseje (clique no boto editar). Procederemos da seguinte maneira: Selecione o EdNome no formulrio e marque a opo ReadOnly (somente Leitura) como True. Ou seja, o usurio somente poder ler o Edit em questo. Faa isso para todos os Edits e MaskEdits do formulrio.

40 Bloquearemos tambm os BtnGravar, BtnCancelar, BtnPrmeiro e BtnAnterior da seguinte maneira: Selecione o boto e marque a opo Enabled (habilitado) como False. Por que isso? Porque o boto gravar s poder ser apertado depois que o boto inserir for apertado, o primeiro e o anterior no podero estar disponveis j que o primeiro registro que exibido na entrada do programa e o cancelar porque como nada foi editado no tem razo para estar disponvel. 41 Agora incrementaremos novamente o procedimento OnClick do BtnInserir. D dois cliques no mesmo e acrescente as linhas de comando logo aps a linha TbCliente.Insert; BtnGravar.Enabled:=true; Habilita o boto BtnGravar

Habilite tambm o BtnCancelar e desabilite o BtnInserir j que a funcionalidade inserir j estar em uso. E habilite a edio nos Edits e MaskEdits da seguinte maneira: Esse procedimento habilitar a edio no componente EdNome que havia sido marcado como true. J que o usurio ir inserir um dado ele ter que ter permisso para a edio do campo. Esse procedimento dever ser feito para todos os 3 Edits e os 2 MaskEdits. Ou seja sero inseridas 5 linhas de comando parecidas com essa para cada Edit em questo.

EdNome.ReadOnly:=false;

42 Agora d dois cliques no BtnGravar para que possamos incrementar a funo OnClick do mesmo e para que grave na tabela TbCliente os nossos dados inseridos no nosso formulrio. Como j vimos todos os comandos somente listarei aqui os passos. Tente segu-los por seu prprio conhecimento. 1. Desabilite os BtnCancelar e BtnGravar; 2. Habilite o BtnInserir; 3. Ligue novamente a opo ReadOnly (somente leitura) dos 3 Edits e dos 2 MaskEdits; 10

Obs.: Voc dever inserir linhas de comando no evento OnClick do BtnGravar assim como foi feito anteriormente no BtnInserir e no alterar as opes atravs do janela Object Inspector, nela apenas configuraremos a forma inicial que os componentes iro aparecer. 43 Nos demais botes faa basicamente as mesmas operaes somente liberando ou no os botes em cada situao. Boto Editar: Libera e edio nos Edits e MaskEdits (desliga False a opo ReadOnly dos mesmo), desliga os botes Inserir e Editar e libera os botes Gravar, Cancelar e Deletar. Boto Deletar: Apenas desliga a edio nos Edits e MaskEdits. Boto Cancelar: Desliga a edio nos Edits e MaskEdits, libera os botes Inserir, Editar e Deletar e desliga Cancelar e Gravar.

Botes de Navegao

Agora utilizaremos as propriedades tbcliente.RecordCount que contm o nmero de registros existentes na tabela, ou seja se 10 clientes tiverem sido cadastrado na tabela TbCliente ela ter o valor=10, e tbcliente.RecNo que a posio do registro que est sendo exibido, ou seja, se estivermos exibindo o registro 4 ela tem valor=4. Utilizaremos ela nesse primeiro momento para habilitar e desabilitar os botes de navegao. 44 Primeiramente caso queira formatar o Caption dos botes faa assim. Mude o Caption da seguinte maneira: <= para 9, < para 3, > para 4 e => para : (dois pontos). Selecione os 4 botes e na propriedade Font altere o nome da fonte para Webdings. Seus botes devero exibir o seguinte contedo.

45 Vamos por ordem. No evento OnClick do BtnPrimeiro desabilite os botes BtnAnterior e BtnPrimeiro e habilite os BtnPrximo e BtnUltimo 46 Faa o inverso no BtnUltimo. Habilite o BtnPrimeiro e BtnAnterior e desabilite o BtnPrximo e BtnUltimo. 47 Agora no boto anterior voc deve desabilitar os botes de Anterior e Primeiro se voc chegar ao registro 1, j que no haver anterior, usando um IF. E para as expresses iremos utilizar as propriedades tbcliente.RecordCount e tbcliente.RecNo citadas anteriormente. Vamos ver ento como ficar.

11

Sintaxe: Ou

IF expresso then ...; IF expresso then Begin ... ... End Else Begin ... ... End;

Por exemplo, o cdigo completo do boto anterior ficar assim:

Verifica antes se o ltimo registro (RecordCount) igual a 1 se sim somente ele existir ento no tem porque habilitar os botes prximo e ltimo

Verifica se o registro que est sendo exibido (RecNo) igual a 1, ou seja voc est no primeiro registro, se sim os botes Anterior e Primeiro so bloqueados seno so liberados. E atualiza os campos Edit e MaskEdit com o registro em questo (cdigo que j havamos inserido).

12

Dois lembretes:

Os campos BEGIN e END s se fazem necessrios quando o cdigo tiver mais de uma linha e, quando o campo ELSE utilizado a linha anterior ao mesmo no recebe ponto e vrgula, repare que aqui no exemplo o END anterior ao ELSE no tem ponto e vrgula no fim. 48 Tente utilizar a mesma lgica para otimizar o cdigo do boto prximo sendo que realizar a seguinte verificao para saber se est no ltimo registro IF Tbcliente.RecNo = TbCliente.RecordCount then ..., ou seja, SE O NMERO DO REGISTRO EXIBIDO FOR IGUAL AO NMERO DO LTIMO REGISTRO ENTO. 49 Pronto o nosso formulrio registro est pronto. Se quiser increment-lo, v adiante. A apostila est apenas orientado o bsico que o professor passou em aula. Tente fazer um campo Edit onde ser exibido o nmero do registro em exibio e tambm onde o usurio poder digitar o registro que deseja exibir. Caso no consiga entre em contato comigo que eu ajudo. Dica para configurar essa lgica utilize as propriedades RecordCount e RecNo e tambm nos botes de navegao e edio, excluso, etc... ser acrescentada mais uma linha fazendo o edit receber o registro que est sendo exibido. OBS (Flaviano): H uma forma mais simples para evitar de se repetir muito cdigo. Usando reuso, criando apenas de dois procedures, um (teste) para ser chamado no Procedure BtnAnterior e no Procedure BtnPrximo e outro (mostrar) para ser chamado no Procedure BtnPrimeiro, Procedure BtnAnterior, Procedure BtnProximo, Procedure BtnUltimo e Procedure Cancelar.

O cdigo fica assim:


procedure TFCliente.mostrar; begin Ednome.Text := TbClienteNome.Value; Edendereco.Text := TbClienteEndereco.Value; MkEdCEP.Text := TbClienteCEP.Value; MkEdFone.Text := TbClienteTelefone.Value; EdEmail.Text := TbClienteEmail.Value; end; procedure TFCliente.teste; begin if (TbCliente.RecNo = 1) then begin BtnPrimeiro.Enabled := False; BtnAnterior.Enabled := False; end else begin BtnPrimeiro.Enabled := True; BtnAnterior.Enabled := True; end; if (TbCliente.RecNo = TbCliente.RecordCount) then Exemplo de como fica para chamar o procedure criado: Procedure TFCliente.BtnPrimeiroClick(Sender: TObject); begin TbCliente.First; teste; mostrar; end;

13

begin BtnProximo.Enabled := False; BtnUltimo.Enabled := False; end else begin BtnProximo.Enabled := True; BtnUltimo.Enabled := True; end; end;

Formulrio Produtos

Vamos criar o formulrio onde sero cadastrados e consultados os produtos existentes na tabela TbProdutos. Iremos utilizar uma maneira mais fcil para configurar a utilizao dos registros das tabelas sem que haja a necessidade de dezenas de linhas de comando para a gravao e atualizao dos campos Edit do nosso formulrio. 50 Crie um novo formulrio e edite: Name = FProdutos Caption = Cadastro de Produtos 51 Edite a opo Cadastrar/Produtos no Menu do Form Principal para que o evento OnClick nele exiba o Form Produtos, assim como fizemos anteriormente para o Form Clientes. 52 Insira um componente table no formulrio e o configure da mesma maneira que fez com o anterior (do formulrio FClientes, Passos: 27 ao 30) s que, logicamente, desta vez aponte-o para a tabela TProdutos na propriedade TableName e na propriedade Name coloque o nome dela como TbProdutos. 53 Iremos agora inserir componentes da aba Data Controls: 2 DBEdit e 1 DBImage que so parecidos com os componentes da guia Standard s que oferecem propriedades que facilitam a interao com as Tables. 54 Insira 3 labels renomeie-os como Preo, Descrio e Foto e arrume-os juntos com os DBEdit e DBImage. Renomeie os edits como DBDescrio, DBPreco e o DBImage como DBFoto e arrume-os na tela de maneira coerente. 55 Agora iremos fazer a auto configurao dos Edits na guia DataAccess insira um componente DataSource e configure as propriedades dele: Name: DsProduto DataSet: selecione o TbProduto 56 Insira (como no componente FClientes) 10 buttons e configure como no FClientes, Inserir, Editar, Deletar... Porm, no evento OnClick deles s ser necessrio editar as linhas que referenciam a tabela (Ex.: TbProduto.Insert;) e as propriedades de habilitados ou no que so da mesma maneira que do formulrio anterior. 14

57 Selecione os DBEdits e na propriedade DataSource selecione o DataSource DsProduto que acabamos de inserir no Form e na propriedade DataField selecione o atributo correspondente. Isso far a auto configurao que falamos anteriormente. 58 Na guia Dialogs insira um componente OpenPictureDialogs e configure-o: Name: OpdFoto Ento insira um button e configure-o: Name: BtnCarregar, Caption: Carregar Foto, Visible: False OnClick: OpdFoto.Execute; DbFoto.Picture.LoadFromFile(OpdFoto.FileName); 59 E, por fim, incremente o evento dos buttons Inserir e Editar com a linha, BtnCarregar.Visible := true; ou seja, quando formos inserir ou editar algum registro ele ficar visvel para que carreguemos a imagem de algum endereo (lembre-se que s trabalharemos com imagens no formato BMP) e, tambm, os buttons Gravar e Cancelar com, BtnCarregar.Visible := false; o que far com que o button BtnCarregar volte a ficar invisvel. 60 Se tudo proceder sem nenhum imprevisto nosso formulrio de Cadastro de Produtos estar pronto. Execute-o insira alguns registros, exclua outros para testar a funo e edite tambm. Se conseguir crie a funo de busca de registros do Form Clientes.

15

16

Вам также может понравиться