Seções iMasters
Banco de Dados

Otimizando a exibição de telas

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.

Comente também

40 Comentários

Wilson Bottaro

Poderia enviar-me este modelo em access por e-mail?

WELLINGTON MOREIRA

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.

WELLINGTON MOREIRA

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

Maicon Zanette

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…

Maicon Zanette

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…

Francisco Crivellari

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.

Mauricio Dellafina

Isso facilitou muito minha vida, não trabalho com informática, mas tenho isso como passa tempo, mas queria saber como faço para otimizar os relatórios nesse mesmo esquema, desde já obrigado…dellafin@hotmail.com

Mauri Gonçalves

Francisco, aqueles campos são campos normais que voce cria na tabela. O tipo dos campos é TEXTO. Qualquer dúvida, me escreva.

Mauri Gonçalves

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.

Francisco Crivellari

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

Mauri Gonçalves

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.

Mauricio Dellafina

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.

Hugo Luiz Rosa da Silva

Seria possivel me enviar o exemplo pelo email, grato

Mauri Gonçalves

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.

Joszislaine Costa

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,

Marcio Vera

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

murilo h gonçalves

Gostaria que a caixa de combinação abrisse o form sem ser no subform ou seja só abrisse.

Mauri Gonçalves

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

    Selmo Magela

    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.

Mauri Gonçalves

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.

João Henrique Araujo

Poderia me enviar esse exeplo por email para eu incrementar?
joaohenrique_araujo@yahoo.com.br

Gil Kléber Leão da Cruz

Muito bom o seu exemplo. O Design está nota dez. Mas não consegui rodar isso aqui. Voce poderia me mandar pro endereço gilkleber@gmail.com ?? Abraços

Eduardo Santos

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?

Eduardo Santos

Ah! me esqueci de comentar sobre o exemplo em questão, realmente é muito bom, vou utilizá-lo com certeza.

Jose Roberto Moraes Moraes

Ola Mauricio, estou um pouco atrasado, mas gostaria de saber se eu tbm posso obter esse para estudo.

Meu email é

joserobmoraes@ig.com.br

Obrigado

Aguardo um breve contato

Luiz Neto

Olá..
Se puder…gentileza enviar pra mim também
clone.o.original@gmail.com

Muito grato.

Igor Demetrius Alencar

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

Aurimar Kowalski

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

Gostaria de receber este modelo de banco de dedos aprender… Muito obrigado

Walteir Freire

Seria possível explicar passo-a-passo como fazer essa tela abrir os formulários normalmente ou seja, sem o sub form?

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

Mauri Gonsalves
Gostei muito do seu modelo de formulário “otmizando exibição de telas” pode por favor mandar para mim este modelo por email. Agradeceria muito.
Obrigado e um abraço.
lupercio_azarias@hotmail.com

Caro Mauri
Gostaria que ao clicar em um botão de comando, o banco de dados que está aberto fosse reparado e compactado é possivel, Por favor mande o exemplo por email se possivel.
Obrigado um abraço.
meu email: lupercio_azarias@hotmail.com

Mauri
Como criar um banco de dados com data para expirar acho que vc pode me ajudar, agradeço obrigado, se poder mande o exemplo por email.
email, lupercio_azarias@hotmail.com

Ribax

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

carlos

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

Qual a sua opinião?