/Banco de dados

voltar
/Banco de dados

Otimizando a exibição de telas

Mauri Gonçalves
em Banco de Dados

Quando desenvolvemos uma aplicação
de pequeno porte, geralmente lidamos com poucas telas, visto
que em uma única tela pode-se gerenciar diversas funções
do sistema. Porém há ocasiões em que gerenciar
um grande número de telas torna-se um problema. Para contornar
esta situação podemos utilizar soluções
que permitam maior controle sobre as telas, redução
de tempo do desenvolvimento e, porque não, economia de
código-fonte.

Caso:

Certa vez, ao testar um programa qualquer, percebi
que estava com 4 formulários abertos para executar uma
operação no sistema. Além de poluir a tela
do computador, eram botões a mais na barra de tarefas
e eu ainda teria o terrível trabalho de fechar uma a uma
ao terminar a operação
que eu estava fazendo.

No Microsoft Access podemos implementar uma solução bem simples para esta questão da gerencia de telas.

Podemos criar um menu (utilizado uma Caixa de Combinação) que contenha a lista de todas as telas do sistema. Ao selecionarmos uma opção do menu, a tela é exibida dentro de um subform. Este subform deve estar no formulário principal do sistema. A partir dele podemos ter acesso a todos os outros. Para podermos gerenciar melhor este menu vamos criar uma tabela para ele. No meu exemplo chamarei de tbMenu:


Figura 1: Tabela tbMenu temos os campos: ItemDoMenu e Formulario.

ItemDoMenu: Digite o texto que aparecerá no menu do sistema.
Formulario: Digite o nome do formulário que deve ser disparado.

Crie uma consulta da tabela tbMenu:


Figura 2: Neste exemplo eu dei o nome de csMenu.

No formulário padrão do seu sistema,
insira uma Caixa de Combinação e modifique as seguintes
propriedades:

Na guia Formato:
– Número de Colunas: 2
– Largura das Colunas:
1cm;0cm

Na guia Dados:
– Origem da linha: csMenu (nome da consulta que você criou
anteriomente).


Figura 3: Esta Caixa de Combinação será o
menu do sistema.

Insira um SubFormulario desacoplado no seu formulário principal. Neste formulário será carregado o formulário que for chamado quando você selecionar um ítem do menu.


Figura 4: Este SubFormulario servirá como um "Frame" para
telas do seu sistema.

Agora crie um Módulo chamado "Funcoes" e
nele digite a função conforme abaixo:

Public Function AtivarMenu(Menu As ComboBox, Quadro As SubForm)
Dim Tela As String
Tela = Menu.Column(1)
Quadro.SourceObject = Tela
Quadro.LinkChildFields = ""
Quadro.LinkMasterFields = ""
End Function

Volte ao formulário principal e abra as propriedades da Caixa de Combinação.
Na guia Eventos, na propriedades Apos Atualizar, aponte para a função que foi criada.
Nos parâmetros da função, digite o nome da Caixa de Combinação e o nome do Subformulario:


Figura 5.

Salve o Módulo e os Formulários.

Agora o menu do seu sistema está funcionando e você pode abrir qualquer tela a partir da tela principal do seu sistema.

Informações importantes:

– O Subformulário que fica no form principal deve ter um tamanho padrão: As dimensões dele servirão de referência para as dimensões dos outros formulários do sistema. – Padronize as cores e o estilo dos formulários: Utilize as mesmas cores, tipos de letra e crie um padrão de estilo para seus formulários. Na imagem abaixo, você pode ver um sistema, ao qual eu apliquei esta solução:


Figura 6: Nesta imagem foi
selecionado o ítem "Cadastro de Fornecedores" no
menu do sistema.


Figura 7: Nesta imagem foi selecionado
o ítem "Registro de Comandas" no menu do sistema.

As figuras 6 e 7 mostram perfeitamente o resultado
desta solução que mostrei para vocês
esta semana.
A partir do formulário principal pode-se ter acesso às demais telas do sistema.

Espero que vocês tenham gostado da dica.
Até a próxima.

Mauri Gonçalves

Analista de Sistemas Java, em São Paulo. http://linkedin.com/in/maurigoncalves

40 comentários Comente também

  1. Olá Mauri, gostei muito da matéria e queria saber se vc pode me enviar esse exemplo via e-mail. Lógico q não quero o seu programa, mas queria somente o layout do seu para eu poder fazer as minhas implementações.

  2. Olá Mauri, gostei muito da matéria e queria saber se vc pode me enviar esse exemplo via e-mail. Lógico q não quero o seu programa, mas queria somente o layout do seu para eu poder fazer as minhas implementações. Meu e-mail: welmcesar@yahoo.com.br

  3. O MAURI BEM QUE VC PODERIA CRIAR UM TUTORIAL ENSINADO FAZER ESTE LAYOUT IGUAL O TEU, PTS FICOU STILO PHP, SHOW DE BOLA. NÃO CONSIGO UTILIZAR ESTE TIPOS DE FORMAS COMO SE FOSSE FEITAS NO FIREWORKS, O BD FICA MUITO PESADO COM ESTES LAYOUTS…
    PODES ME ANVIAR POR E-MAIL UMA CÓPIA DESTE FRM PARA EU ANALISAR E VER SE CONSIGO APRENDER?? mp4maz@yahoo.com.br, muito obrigado…

  4. NENHUM FÓRUM E NENHUM SITE ENSINA A FAZER UM BD COMPLETO, PRINCIPALMENTE BD COMERCIAL. LOGO, FICA AQUI MINHA DICA DE ELABORAÇÃO DE UM BD COMERCIAL, OU SEJA, Tabs Caixa, Estoques, Funcionários, Produtos,…
    COM OS RELATÓRIO E FORMS.
    SEI QUE NÃO É FÁCIL, MAS SE CONSIGUIRES FICARÁ MUITO BOM. QUALQUER COISA ESTOU A DISPOSIÇÃO…

  5. Ola Mauri,gostei da sua dica para otimizar telas, mas como sou novo no acess nao consegui criar a tabela, pois no meu acess a tela para criar tabela e diferente da sua figura1. Onde estou errando. Pois nao vejo aquelas 2 colunas ItemdoMenu e Formulario no assistente para criar tabelas. Obrigado.

  6. Mauricio, voce pode criar um formulario e modelar ele para ser impresso como relatorio. Voce pode pode incluir vários subforms nele. Esta é uma ótima maneira de aprimorar seus forms.

  7. Ola Mauri, obrigado pela resposta, ate ai tudo bem ja ficou resolvido o problema da tabela,agora estou enroscado no formulario padrao. O que vc chama de Formulário Padrao,nao consegui encontrá-lo, ou devo cria-lo. Obrigado pela atençao.
    Francisco

  8. Francisco, o formulario padrao seria aquele primeiro formulario que o usuario irá interagir quando abrir o sistema, seria o formulario principal, ou seja, a partir dele o usuario irá acessar os demais formularios.

  9. Ola Mauri,
    Seria uma solução imprimir os forms, mas que já tenho vários relatórios prontos em um programa, não queria ter que fazer tudo novamente, mas seria uma boa visualizá-los no subform sem ter que sair da tela principal. mas mesmo assim, obrigado pela atenção.

  10. Pessoal, infelizmente eu nao disponho mais deste exemplo que usei no artigo porque o perdi numa “tragédia” ocorrida em meu HD. Estou criando outro exemplo parecido para fornecer a quem se interessar. Obrigado.

  11. Olá Mauri, estou gostndo muito destas matérias e, se for possível gostaria que me enviasse por e-mail (joszis@ig.com.br) os exemplos citados.
    Atenciosamente,

  12. Olá Mauri, gostei muito da matéria e queria saber se vc pode me enviar esse exemplo via e-mail. Lógico q não quero o seu programa,mas caso queria enviar junto agradeço muito rss, mas queria somente o layout do seu para eu poder fazer as minhas implementações. Meu e-mail: marcio.robertopr@bol.com.br

  13. Murilo, isso é bem fácil:

    Public Function AtivarMenu(Menu As ComboBox)
    Dim Tela As String
    Tela = Menu.Column(1)
    DoCmd.OpenForm(Tela,acNormal)
    End Function

    1. Mauri meu irmao que tela explendida, gostaria de lhe pedir orientaçao para fazer uma parecida com a sua pois estou com o mesmo problema de poluiçao de telas e esse menu ficou bem profissional. sera que dar para me enviar por emai.

  14. Ha alguns comentarios acima pedindo o exemplo por email. Eu ja enviei, porem alguns pediram e nao deixaram o endereço de e-mail. Portanto ao solicitar deixe seu email.

  15. Olá Maurício, sou iniciante e estou com dificuldades em criar um botão para filtrar os dados por seleção, poderia fornecer um exemplo de como crio este botão?

  16. Olá! Mauri,
    Gostei muito deste exemplo e já estou usando, contudo gostaria de colocar duas caixas de texto para fazer o filtro dos forms que abrir no subform. Por exemplo: escolho na combo o form para abrir no subform, e coloco na caixa de texto1 para filtrar o mês e na segunda caixa filtra por tipo. Eu tentei fazer a referência no subabrir.LinkChildFields = “” e
    subabrir.LinkMasterFields = “” à caixa de texto1 e 2 mas não deu certo. Confesso, que sou novo no assunto e apanho bastante com o VBA.
    Eu imaginei fazer a referência assim: subabrir.LinkChildFields = Me.cxtexto1.value = “”
    mas não deu ceto..
    Vc poderia me ajudar?

    Valeu.

    Igor Demetrius

  17. Olá Mauri! estou começando no access 2007 e gostaria se possivel vc encaminhar este tutorial, pois eu tentei fazer e não consegui.
    Grato!
    Aurimar

  18. Parabens pela materia Otimizando a Exibição de Telas!

    por favor mim ajude! Tenho um formulario ORDEM DE COMPRA preciso incluir uma caixa de texto que ao digitar o codigo do pedido um subformulario vazrio sera preenchido e salvar a informações do pedido de compra,não gostaria de uma combo box porque exibe uma lista muito grande…

    Obrigado!
    Messias Gomes

  19. Muito bom esse teu trabalho. Mas, estou com um problema e gostaria da tua ajuda
    como referencio esse sfQuadro usando uma rotina (isLoaded) .
    Des de já fico muito agradecido

  20. Achei muito interessante, tirou muitas duvidas que eu tinha,mas continuo confuso sobre um trabalho de aula :
    TELAS DE EXIBIÇAO DE CONSULTAS: desenhar modelos, formatos de apresentação,incluindo todos os atributos que devem ser exibidos, menus e botões de comando.
    Se for possivel ajudar agradeço

Dê Sua Opinião

O seu endereço de email não será publicado Campos obrigatórios são marcados *


− 1 = zero

leia mais
Este projeto é mantido e patrocinado pelas empresas:
Hospedado por: