Analisando e comparando as funções do DBNavegator



Documentos relacionados
Autor: Tiago Lone Nível: Básico Criação: 19/12/2005 Última versão: 18/12/2006. PdP. Pesquisa e Desenvolvimento de Produtos

Display de 7. PdP. Autor: Tiago Lone Nível: Básico Criação: 16/12/2005 Última versão: 18/12/2006. Pesquisa e Desenvolvimento de Produtos

User Manager 1.0. edtusuario Nome do novo Usuário a ser criado edtsenha Senha do novo usuário Label

ETEC DR. EMÍLIO HENRNANDEZ AGUILAR PROGRAMAÇÃO DE COMPUTADORES I PROFESSOR RAFAEL BARRETO

1 o º ciclo. Índice TUTORIAL

Figura 1: tela inicial do BlueControl COMO COLOCAR A SALA DE INFORMÁTICA EM FUNCIONAMENTO?

Usando o Conference Manager do Microsoft Outlook

Memória Flash. PdP. Autor: Tiago Lone Nível: Básico Criação: 11/12/2005 Última versão: 18/12/2006. Pesquisa e Desenvolvimento de Produtos

REGISTRO DE PROJETOS

Inserindo Dados no Banco de Dados Paradox.

SISTEMA MEDLINK E-TISS PASSO-A-PASSO (USE JUNTO COM A VÍDEO AULA)

Controle de Estoque. Configuração e personalização do módulo

Nota de Aplicação IHM 004

PROGRAMAÇÃO II 3. FILA DINÂMICA

MANUAL DA SECRETARIA

Astra LX Resultados via MS-WORD Guia para a emissão de laudos personalizados via MS-WORD no Programa AstraLX.

ETEC DR. EMÍLIO HENRNANDEZ AGUILAR PROGRAMAÇÃO DE COMPUTADORES II PROFESSOR RAFAEL BARRETO DELPHI FORMULÁRIO COM ABAS E BUSCAS DE REGISTROS

COMO IMUNIZAR SEU PENDRIVE CONTRA VÍRUS. Introdução

DIRETO. Manual do Usuário. PROCERGS Divisão 7

Display de Cristal Líquido

O Windows também é um programa de computador, mas ele faz parte de um grupo de programas especiais: os Sistemas Operacionais.

Implementando uma Classe e Criando Objetos a partir dela

UNIVERSIDADE FEDERAL DO AMAPÁ PRÓ REITORIA DE ADMINISTRAÇÃO E PLANEJAMENTO DEPARTAMENTO DE INFORMÁTICA. Manual do Moodle- Sala virtual

PROGRAMAÇÃO EM C# COM VISUAL STUDIO.NET

Início Rápido para Fotos e Histórias do FamilySearch

MEMPHIS DIFERENÇAS DO FGTS

ÍNDICE. Tela de Configuração Dados de Etiqueta Configuração da Impressora Configuração do Papel Itens para Inserção...

Bem-vindo ao tópico sobre administração de listas de preços.

Manual do Instar Mail v2.0

NOVIDADES NOVIDADES DA VERSÃO ACD. Prezado Cliente, Neste documento estão descritas todas as novidades da versão do Nefrodata-ACD.

MANUAL EDITOR ESTRUTURADO MÓDULO 2

Funções básicas Cronograma Cronograma Funções Básicas

Sumário. 1. Instalando a Chave de Proteção Novas características da versão Instalando o PhotoFacil Álbum 4

1 ACESSO PARA SECRETÁRIA CONFIGURAR HORÁRIOS DE ATENDIMENTO BLOQUEANDO E HABILITANDO HORÁRIOS PRÉ-DEFININDO PARÂMETROS DE

Tutorial 7 Fóruns no Moodle

Professor Paulo Lorini Najar

SEI Superintendência de Estudos Econômicos e Sociais da Bahia Av Luiz Viana Filho, 435-4ª avenida, 2º andar CAB CEP Salvador - Bahia Tel.

Migrando para o Word 2010

Microsoft Access: Criar relações para um novo banco de dados. Vitor Valerio de Souza Campos

Manual SIGEESCOLA Matrícula

Gerenciamento de Tarefas

Manual das planilhas de Obras v2.5

Fale.com. Manual do Usuário

SECRETARIA DE ESTADO DA EDUCAÇÃO DE SANTA CATARINA PONTO SECULLUM 4 SISTEMA DE CONTROLE DE PONTO MANUAL PARA A GERÊNCIA DE GESTÃO DE PESSOAS

Treinamento - Union Web

Primeiros passos das Planilhas de Obra v2.6

MATERIAL DE APRESENTAÇÃO DO SCRATCH

BearingNet - Orçamentos Contenuto

Criar formulários preenchidos pelos usuários no Word

A p o s t i l a M i c r o s o f t A c c e s s 97

..:Restaurantes:.. Manual completo do sistema de vendas Restaurantes. Site..:

ROBERTO OLIVEIRA CUNHA

..:Sgi-Plus:.. Manual completo do sistema de vendas Sgi-plus. Site..:

[CANCELAR] - Limpa todos os campos e desabilita campos e botões, exceto [NOVO] e [PESQUISAR].

LÓGICA DE PROGRAMAÇÃO. Professor Celso Masotti

Para o OpenOffice Impress, assim como para vários softwares de apresentação, uma apresentação é um conjunto de slides.

Agendador de Rotinas

OPL9815 Inventário Configurável

Trabalhando com conexão ao banco de dados MySQL no Lazarus. Prof. Vitor H. Migoto de Gouvêa Colégio IDESA 2011

LASERTECK SOFTECK FC MANUAL DO USUÁRIO

Usando um Simulador da Máquina de Turing Claudio Kirner 2010

Solicitação de Reposição? FS71.1

MOODLE NA PRÁTICA PEDAGÓGICA

UNINGÁ UNIDADE DE ENSINO SUPERIOR INGÁ FACULDADE INGÁ CIÊNCIA DA COMPUTAÇÃO CURSORS. Profº Erinaldo Sanches Nascimento

Neo Solutions Manual do usuário Net Contábil. Índice

MANUAL MOODLE - PROFESSORES

Tribunal de Justiça do Estado de Mato Grosso Supervisão de Informática Departamento de Desenvolvimento Sistema Declaração On Line. Declaração On Line

Manual de Operação. Copyright Todos os direitos reservados.

PROCESSO JUDICIAL ELETRÔNICO PJe

COMO PROGRAMAR SEU TIME

Manual do Usuário. Menus: Produtor Rural, Propriedade Rural e GTA Módulo: Produtor Rural. dezembro de 13

2 Não possuo o institucional. Como devo proceder? Resposta: Dirija-se ao RH do câmpus e solicite a criação do seu institucional.

Para o PowerPoint, assim como para vários softwares de apresentação, uma apresentação é um conjunto de slides.

LGTi Tecnologia. Manual - Outlook Web App. Soluções Inteligentes. Siner Engenharia

Manual dos procedimentos para Emissão de NFE.

1. TSA Inovação - TSA DT_Arquivo_de_Log_do_Integrador_Separado_por_Thread DT_Central_de_Ajuda_UX9...

MANUAL DE INSTALAÇÃO DO ODONTO TECHNOLOGY

SUMÁRIO. 1. Instalação Operações Comunicação Modo Ethernet Serial... 6

MANUAL DO OFICIAL DE JUSTIÇA

Despachante Express - Software para o despachante documentalista veicular DESPACHANTE EXPRESS MANUAL DO USUÁRIO VERSÃO 1.1

Portal do Projeto Tempo de Ser

Capítulo 1. Guia de Início Rápido. Você vai aprender a programar a sua primeira reunião em 5 passos fáceis.

Série ArcGIS Online I. Aprenda em 20. Módulo 4. Configure pop-ups.

Projeto ECA na Escola - Plataforma de Educação à Distância

Configurando a emissão de boletos no sistema

ETEC DR. EMÍLIO HENRNANDEZ AGUILAR PROGRAMAÇÃO DE COMPUTADORES II PROFESSOR RAFAEL BARRETO

Manual do Skanlite. Kåre Särs Anne-Marie Mahfouf Tradução: Marcus Gama

VERSÃO VERSÃO FINANCEIRO NEFRODATA ESTOQUE FINALIZAÇÃO: 10 JUN.

Themis Serviços On Line - Publicações

Mini-curso Informática Básica

TUTORIAL DO ASSISTENTE VIRTUAL (QUICK START)

PANDION MANUAL DO USUÁRIO (versão 1.0)

AGENDAMENTO PARA IMPORTAÇÃO DE NOTAS FISCAIS 1. PARÂMETROS DO ESTABELECIMENTO CONFIGURAÇÃO DO AGENDADOR... 3

Desmistificando o Programa de Computador

BR DOT COM SISPON: MANUAL DO USUÁRIO

Esse produto é um produto composto e tem subprodutos

Transcrição:

Prof or : Gilberto Braga e Renato Candini Nome Número: Série DELPHI PARA PROGRAMAÇÃO DE COMPUTADORES II AULA 2 Competências: Integrar sistemas; Habilidades: Utilizar modelos, pseudocódigos e ferramentas na representação da solução de problemas; Bases Tecnológicas: Programação de computadores linguagem de apoio: Delphi. Analisando e comparando as funções do DBNavegator Perceba que o DBNavegator tem dez botões e que cada botão tem uma função específica na manipulação dos registros da tabela vinculada a ele. Figura 1 Formulário com o DBNavegator implementado. O que acontece é que o DBNavegator usa métodos internos que agem com o objeto table do Data Module. Observe a tabela a seguir e veja qual método está atrelado a qual botão. Botão Método Descrição First < DataModule.tbNomeTabela.First; Move para o primeiro registro; Prior < DataModule.tbNomeTabela.Prior; Move para o registro anterior; Next > DataModule.tbNomeTabela.Next; Move para o próximo registro; Last > DataModule.tbNomeTabela.Last; Move para o último registro; Insert + DataModule.tbNomeTabela.Insert; Abre a tabela para inserir um novo registro; Delete - DataModule.tbNomeTabela.Delete; Apaga um registro da tabela. Edit ^ DataModule.tbNomeTabela.Edit; Abre a tabela para edição do registro corrente. Post DataModule.tbNomeTabela.Post; Grava os registros na tabela. Cancel x DataModule.tbNomeTabela.Cancel; Cancela a gravação ou edição de registros na tabela. Refresh DataModule.tbNomeTabela.Refresh; Atualiza a tabela limpando os buffers de memória utilizados. Tabela 1 - Descrição dos métodos e funções dos botões do DBNavegator 1

Neste caso, para substituir o DBNavegator por botões personalizados capazes de interagir com as tabelas do banco de dados seria necessário apenas seguir os passos listados: Figura 2 - BitBtn na paleta de componente Additional 1º - Inserir um botão do tipo BitBtn (Bit Button) para cada botão do DBNavegator, para que o usuário possa interagir com um botão mais sugestivo que um button comum. 2º - Configurar a propriedade glyph com uma imagem contida em "C:\Arquivos de programas\arquivos comuns\borland Shared\Images\Buttons\... " para cada um dos botões e limpar o texto contido na propriedade caption, pois não é necessário que os botões tenham qualquer informação contida na propriedade caption. 3º - Configurar a propriedade ShowHint como True e Hint com uma dica sobre o que cada botão faz (ir para o primeiro, ir para o próximo, etc), isso ajuda o usuário a ter total entendimento da ferramenta, tornando-a intuitiva. Figura 3 BitBtn configurado e pronto para ser usado pelo usuário 2

4º - Finalmente, codifique os botões com os métodos propostos na Tabela 1 acima e observe que os botões funcionam quase de maneira idêntica ao DBNavegator, porém, com a vantagem de serem botões personalizados. Melhorando os métodos dos botões Existem uma série de tratamentos que podem ser aplicados aos botões para que eles passem a funcionar com precisão. Podemos fazer certas operações em um determinado botão e influenciar em outro, ou viceversa, portanto, é importante que se tenha alguns botões habilitados durante uma operação e outros desabilitados e assim por diante. Para que essa mecânica de funcionamento seja implementada usaremos, em alguns casos, o comportamento dos botões através dos eventos (exemplo: Se eu clicar em um botão eu desativo/ativo outro, etc), e, em outros, o comportamento da tabela (exemplo: se eu estiver no início da tabela eu desativo alguns botões e ativo outros, etc.) interagindo com os métodos internos implementados para o funcionamento de cada botão. 1º Controle dos botões Gravar (Post) e Cancelar e dos objetos contidos no formulário (DBEdits, etc) antes de mostrar o formulário: O formulário precisa, ao ser carregado, desativar os botões Gravar (post) e Cancelar, assim a propriedade Enabled desses dois botões será False. Os objetos DBEdit e todos os demais objetos vinculados a campos da tabela a ser carregada deve ativar a propriedade ReadyOnly, atribuindo a ela o valor True, para que o campo não permita edições até que o usuário deixe claro que tem a intenção de editar os campos, isso garante a integridade dos campos fazendo com que eles não sejam editados por engano. 2º Controle da tabela e dos botões de rolagem (Primeiro e Anterior) ao carregar o formulário e durante a navegação: Ao mostrar o formulário, abrir a tabela contida no Data Module; Verificar, ao mostrar o formulário, se a tabela está vazia. Se sim chamar o procedimento TabelaVazia, se não, chamar o procedimento AnteriorPrimeiro. procedure TfrmPaciente.FormShow(Sender: TObject); dmclinica.tbpaciente.open; if (dmclinica.tbpaciente.recordcount = 0) then TabelaVazia; 3

end else AnteriorPrimeiro; O procedimento TabelaVazia: Será usado ao iniciar o formulário atrelado a tabela e ao deletar registros, pois, nos dois casos a tabela pode estar ou tornar-se vazia, assim, com a tabela vazia, seria necessário desabilitar os botões Primeiro, Anterior, Próximo, Último, Editar e Deletar, pois todos esses botões são inúteis com a tabela vazia. procedure TfrmPaciente.TabelaVazia; if (dmclinica.tbpaciente.recordcount = 0) then bbtprimeiro.enabled := False; bbtanterior.enabled := False; bbtproximo.enabled := False; bbtultimo.enabled := False; bbtexcluir.enabled := False; bbteditar.enabled := False; O procedimento AnteriorPrimeiro: Será usado ao iniciar o formulário atrelado a tabela e ao clicar nos botões Primeiro e Anterior, pois, caso a tabela tenha algum registro quando for aberta ela automaticamente deverá mover o ponteiro para o início da tabela (BOF), assim se o ponteiro estiver no início da tabela os botões Anterior e Primeiro deverão ser desabilitados (Enabled = False), enquanto os botões Próximo e Último devem ser incondicionalmente habilitados para garantir que o usuário possa se mover para os demais registros. procedure TfrmPaciente.AnteriorPrimeiro; if (dmclinica.tbpaciente.bof = True) then bbtprimeiro.enabled := False; bbtanterior.enabled := False; bbtproximo.enabled := True; bbtultimo.enabled := True; 3º Controle dos botões de rolagem (Próximo e Último) durante a navegação: Desabilitar os botões de navegação Primeiro e Anterior se a tabela estiver no início (BOF = True) e Habilitar os botões Próximo e Último, incondicionalmente, sempre que o usuário clicar em qualquer um dos botões (Primeiro ou Anterior). Botões Primeiro < e Anterior < Mover o ponteiro da tabela para o Primeiro registro ou para o registro Anterior; 4

Chamar o procedimento PrimeiroAnterior (Descrito acima). Botões Próximo > e Último > Mover a tabela para o Próximo ou Último registro; Chamar o procedimento ProximoUltimo; O procedimento ProximoUltimo: Será usado ao clicar nos botões Próximo e Último, pois, assim se o ponteiro estiver no final da tabela (EOF = True) os botões Próximo e Último deverão ser desabilitados (Enabled = False), enquanto os botões Anterior e Primeiro devem ser habilitados (Enabled = True), incondicionalmente para garantir que o usuário possa se mover para os demais registros. procedure TfrmPaciente.ProximoUltimo; if (dmclinica.tbpaciente.eof = True) then bbtproximo.enabled := False; bbtultimo.enabled := False; bbtprimeiro.enabled := True; bbtanterior.enabled := True; 4º Configurar a ação dos botões de edição e inserção de registros. Botões Insert + e Edit ^ Chamar os métodos Insert ou Edit; Chamar o procedimento Edição. Procedimento Edição: Desativa os botões de rolagem (Primeiro, Anterior, Próximo e Último), os próprios botões de Inserção, Edição, Exclusão e Atualização dos registros da tabela, habilita os botões para Gravar e Cancelar, desabilitam a propriedade ReadyOnly de todos os objetos vinculados aos campos do banco de dados 1 e verifica se a tabela está vazia através do procedimento TabelaVazia, descrito acima, atualizando a regularização dos botões caso uma tabela vazia tenha sido aberta para inserção e não tenha sido inserido nenhum registro; procedure TfrmPaciente.Edicao; bbtprimeiro.enabled := False; bbtanterior.enabled := False; 1 Exceção para os que não deverão ser editados pelo usuário, isto é, serão editados automaticamente pelo banco de dados, exemplo: Campo Código do Cliente = Auto numeração, pois estes campos nunca será habilitado. 5

bbtproximo.enabled := False; bbtultimo.enabled := False; bbtatualizar.enabled := False; bbteditar.enabled := False; bbtinserir.enabled := False; bbtexcluir.enabled := False; bbtgravar.enabled := True; bbtcancelar.enabled := True; DBEdit2.ReadOnly := False; DBEdit3.ReadOnly := False; DBEdit4.ReadOnly := False; DBEdit5.ReadOnly := False; DBCheckBox1.ReadOnly := False; DBEdit2.SetFocus; TabelaVazia; 5º Configurar a ação dos botões gravar e cancelar operações em registros. Botões Gravar V e Cancelar X Chamar os métodos Post ou Cancel; Chamar o procedimento Rolagem. Procedimento Rolagem: Habilita os botões de rolagem (Primeiro, Anterior, Próximo, Último), os botões de Inserção, Edição, Exclusão e Atualização dos registros da tabela, desabilita os botões para a Gravação e para Cancelar a operação, habilita a propriedade ReadyOnly de todos os objetos vinculados aos campos do banco de dados 1 e verifica se a tabela está vazia através do procedimento TabelaVazia descrita a cima, atualizando a regularização dos botões caso a tabela tenha sido aberta para inserção e não tenha sido inserido nenhum registro; procedure TfrmPaciente.Rolagem; bbtprimeiro.enabled := True; bbtanterior.enabled := True; bbtproximo.enabled := True; bbtultimo.enabled := True; bbtinserir.enabled := True; bbteditar.enabled := True; bbtexcluir.enabled := True; bbtatualizar.enabled := True; bbtgravar.enabled := False; bbtcancelar.enabled := False; DBEdit2.ReadOnly := True; DBEdit3.ReadOnly := True; DBEdit4.ReadOnly := True; DBEdit5.ReadOnly := True; DBCheckBox1.ReadOnly := True; TabelaVazia; 6

6º Configurar a ação do botão excluir (delete) Botão Excluir - Verificar: Se a tabela não está no inicio e no final ao mesmo tempo (BOF = True) e (EOF = True); Se não, perguntar ao usuário se ele tem certeza que quer excluir o registro corrente; Se sim, excluir e Verificar se a tabela está vazia através do procedimento TabelaVazia. Se não, não faça nada. procedure TfrmPaciente.bbtExcluirClick(Sender: TObject); if (dmclinica.tbpaciente.bof = False) and (dmclinica.tbpaciente.eof = False) then if (MRYes = Application.MessageBox('Certeza?!', 'Remover Registro!', MB_YESNO + MB_ICONQUESTION)) then dmclinica.tbpaciente.delete; TabelaVazia; 7º Fechar a tabela (Close) no procedimento de evento OnClose do formulário. procedure TfrmPaciente.FormClose(Sender: TObject; var Action: TCloseAction); dmclinica.tbpaciente.close; Obs: O botão atualizar (Refresh) é o único que não precisa de tratamento personalizado para ser implementado. No final a tabela terá uma aparência similar a apresentada na Figura 4 abaixo, porém, sua funcionalidade é o verdadeiro diferencial entre usar uma ferramenta pronta e programar funcionalidades personalizadas na aplicação. 7

Figura 4 Formulário paciente totalmente personalizado e funcional. 8

Exercícios O projeto anterior propunha um formulário Principal que trazia, através de menu, três outros formulários (Paciente, Médico e Consulta). A proposta é, com base na personalização realizada no formulário paciente com o objetivo de substituir DBNavegator por botões personalizados SUBSTITUA OS DOIS DBNAVEGATORS DOS FORMULÁRIOS CONSULTA E MÉDICO POR BOTÕES e experimente-os para saber se você obteve botões funcionais para trabalhar com os registros da tabela. Obs: Use o Database Desktop para, eventualmente, abrir e fechar a tabela com o propósito de ver se as alterações foram realmente efetivadas na tabela. 9