Vídeo recomendado
https://youtu.be/diWPPPhW-9E
https://youtu.be/diWPPPhW-9E
Barra de menus em Userform sem o uso de API's - ATUALIZADO
Moderador: Rafael Monteiro
Barra de menus em Userform sem o uso de API's - ATUALIZADO
Fala pessoal, blza?
Bem, não sei se postei no lugar certo, qualquer coisa peço desculpas antecipadamente.
Venho há algum tempo pensando em como fazer uma barra de menus em formulários, e creio eu, que consegui elaborar um que fosse funcional. Digo que elaborei um, após ter estudado muitos modelos que faziam ou não uso de API's. Este modelo não usa API's, apenas os controles ListBox e TextBox, e conta com um editor de menus.
Os dois unicos inconvenientes deste menu são :
1) - Com qualquer botão ativo, ao focar outro botão, este não se ativa de forma automática; *** RESOLVIDO ***
2) - Não é possível inserir separadores nas opções e sub-menus. *** RESOLVIDO ***
Neste modelo que estou disponibilizando aqui, creio que não estou agindo de má fé com nenhum dos colegas aqui, já que escrevi todo o código. Todavia, se o fizer, peço desculpas.
Peço aos colegas, que testem o mesmo e por favor, dêem sugestões, criticas e etc.
Para acessar o mesmo :
Usuário : admin
Senha : Acesso#01
Usuário : teste
Senha : mudar123 (Senha padrão para novos usuários)
Com o campo de usuário em foco, tecle F12, forneça a senha do admin (por padrão Acesso#01) para exibir a aplicação do Excel.
O editor de menus foi retrabalhado, possibilitando adicionar até 10 níveis para cada item de menu (usem com cautela ) e que agora conta com o controle TreeView. Façanha que só foi possível após estudar o modelo do colega JoseA , que está disponível tanto aqui no fórum, quanto no blog.
Código retrabalhado também, seguindo os conselhos do Tomás, para evitar possíveis falhas na carga dos forms e na leitura das planilhas.
Versões do Office testadas e totalmente funcionais :
Office 2007 - x86 (32bits)
Office 2010 Professional - x86 (32bits)
Office 2013 Professional - x86 (32bits)
Screen Shot :
Um grande abraço aos colegas JoseA e Tomás pelas valiosas dicas.
Sem mais,
[]'s
Saulo
Bem, não sei se postei no lugar certo, qualquer coisa peço desculpas antecipadamente.
Venho há algum tempo pensando em como fazer uma barra de menus em formulários, e creio eu, que consegui elaborar um que fosse funcional. Digo que elaborei um, após ter estudado muitos modelos que faziam ou não uso de API's. Este modelo não usa API's, apenas os controles ListBox e TextBox, e conta com um editor de menus.
Os dois unicos inconvenientes deste menu são :
1) - Com qualquer botão ativo, ao focar outro botão, este não se ativa de forma automática; *** RESOLVIDO ***
2) - Não é possível inserir separadores nas opções e sub-menus. *** RESOLVIDO ***
Neste modelo que estou disponibilizando aqui, creio que não estou agindo de má fé com nenhum dos colegas aqui, já que escrevi todo o código. Todavia, se o fizer, peço desculpas.
Peço aos colegas, que testem o mesmo e por favor, dêem sugestões, criticas e etc.
Para acessar o mesmo :
Usuário : admin
Senha : Acesso#01
Usuário : teste
Senha : mudar123 (Senha padrão para novos usuários)
Com o campo de usuário em foco, tecle F12, forneça a senha do admin (por padrão Acesso#01) para exibir a aplicação do Excel.
O editor de menus foi retrabalhado, possibilitando adicionar até 10 níveis para cada item de menu (usem com cautela ) e que agora conta com o controle TreeView. Façanha que só foi possível após estudar o modelo do colega JoseA , que está disponível tanto aqui no fórum, quanto no blog.
Código retrabalhado também, seguindo os conselhos do Tomás, para evitar possíveis falhas na carga dos forms e na leitura das planilhas.
Versões do Office testadas e totalmente funcionais :
Office 2007 - x86 (32bits)
Office 2010 Professional - x86 (32bits)
Office 2013 Professional - x86 (32bits)
Screen Shot :
Um grande abraço aos colegas JoseA e Tomás pelas valiosas dicas.
Sem mais,
[]'s
Saulo
- Anexos
-
- Menu_Userform_vFinal.zip
- (361.48 KiB) Baixado 567 vezes
Editado pela última vez por srobles em Dom Mar 05, 2017 6:11 pm, em um total de 13 vezes.
Re: Barra de menus em Userform sem o uso de API's
Bom dia srobles.
Gostaria de parabenizar pois ficou ótimo, só gostaria de saber se consigo converter para 64 bits.
32 Bits Funciona Perfeito.
Tem Alguma forma para isso?
Gostaria de parabenizar pois ficou ótimo, só gostaria de saber se consigo converter para 64 bits.
32 Bits Funciona Perfeito.
Tem Alguma forma para isso?
Re: Barra de menus em Userform sem o uso de API's
bison, boa tarde!
Obrigado pelo apoio e aprovação.
Quanto a converte-lo para 64bits, creio que seja possível sim, porém a .OCX para esses controles são outras, logo as mesmas devem ser registradas na maquina (se não me engano, vc deve registrar ambas .OCX para x86 e x64 afim de evitar problemas).Há algum tempo atrás, li em um topico no fórum da Microsoft que bastava fazer isso e voilá.
Segue o link do fórum :
https://social.msdn.microsoft.com/Forum ... m=sbappdev
No decorrer do tópico tem o passo-a-passo de como fazer o procedimento.
[]s
Obrigado pelo apoio e aprovação.
Quanto a converte-lo para 64bits, creio que seja possível sim, porém a .OCX para esses controles são outras, logo as mesmas devem ser registradas na maquina (se não me engano, vc deve registrar ambas .OCX para x86 e x64 afim de evitar problemas).Há algum tempo atrás, li em um topico no fórum da Microsoft que bastava fazer isso e voilá.
Segue o link do fórum :
https://social.msdn.microsoft.com/Forum ... m=sbappdev
No decorrer do tópico tem o passo-a-passo de como fazer o procedimento.
[]s
Re: Barra de menus em Userform sem o uso de API's
Bom dia srobles,
Muito obrigado pela ajuda, Estou estudando esse tópico bastante, porque presto serviço a cliente que tem 32bits e outros 64bits. e muito complicado trabalhar com as versões diferentes.
Ao abrir o controle da um erro la no Private Declare Function SendMessage Lib "user32.dll".... pesquisei bastante e para evitar esse erro e so colocar a seguinte expressão, Private Declare Ptrsafe Function SendMessage Lib "user32.dll"... abre normalmente tanto no 32 como no 64.
Agora o problema está endo o StatusBar... ele não reconhece no 64... fiz o procedimento que me passou da microsoft e não funcionou. coloquei o Control na mesma pasta e nada. A Microsoft poderia ajudar a gente em alguma atualização que seja compatível para os dois, assim evitaria muita dor de cabeça para gente.
Eu consigo Desabilitar a programação do StatusBar para ver se o programa roda sem ele? quero testar todos as possíveis causas desses erros de 32 e 64, para poder resolver os problemas dos clientes, e ate mesmo ajudar os colegas da profissão.
Grato. Obrigado pela Ajuda.
Muito obrigado pela ajuda, Estou estudando esse tópico bastante, porque presto serviço a cliente que tem 32bits e outros 64bits. e muito complicado trabalhar com as versões diferentes.
Ao abrir o controle da um erro la no Private Declare Function SendMessage Lib "user32.dll".... pesquisei bastante e para evitar esse erro e so colocar a seguinte expressão, Private Declare Ptrsafe Function SendMessage Lib "user32.dll"... abre normalmente tanto no 32 como no 64.
Agora o problema está endo o StatusBar... ele não reconhece no 64... fiz o procedimento que me passou da microsoft e não funcionou. coloquei o Control na mesma pasta e nada. A Microsoft poderia ajudar a gente em alguma atualização que seja compatível para os dois, assim evitaria muita dor de cabeça para gente.
Eu consigo Desabilitar a programação do StatusBar para ver se o programa roda sem ele? quero testar todos as possíveis causas desses erros de 32 e 64, para poder resolver os problemas dos clientes, e ate mesmo ajudar os colegas da profissão.
Grato. Obrigado pela Ajuda.
Re: Barra de menus em Userform sem o uso de API's
bison, boa tarde!
Verdade. Concordo plenamente. A falta de suporte entre as versões é o que mais incomoda, já que lemos em tudo que é lugar que o melhor é partir para plataforma .NET e afins e, sinceramente, prefiro "insistir no erro".
Para desabilitar a statusbar você deve excluir ou comentar todo o código referente ao controle de nome sttbar existente em frmLogin e no módulo mdl_frmPrincipal. Atente aos códigos contidos em mdl_frmPrincipal, tal como tsttbar, este é o que determina a posição da statusbar no frmPrincipal após o login.
Quaisquer dúvidas, sugestões ou críticas, estou á disposição.
[]s
Verdade. Concordo plenamente. A falta de suporte entre as versões é o que mais incomoda, já que lemos em tudo que é lugar que o melhor é partir para plataforma .NET e afins e, sinceramente, prefiro "insistir no erro".
Para desabilitar a statusbar você deve excluir ou comentar todo o código referente ao controle de nome sttbar existente em frmLogin e no módulo mdl_frmPrincipal. Atente aos códigos contidos em mdl_frmPrincipal, tal como tsttbar, este é o que determina a posição da statusbar no frmPrincipal após o login.
Quaisquer dúvidas, sugestões ou críticas, estou á disposição.
[]s
Re: Barra de menus em Userform sem o uso de API's
SROBLES
Baixei seu modelo e achei bastante interessante. Entretanto observei um inconveniente. Caso altere-se a sequencia e a numeração dos botões eles perdem totalmente o vinculo com as subrotinas associadas. Basicamente porque elas dependem dos codigos dos e estes estão hardcode (chumbadas) no codigo. Ex: opt20_Alterar_senha, o que nao é uma boa prática.
Logo sugiro que você pense em criar uma coluna adicional na planilha de cadastro de menus onde você coloca apenas o nome da subrotina existente sem que esta dependa do codigo (iD) do item de menu. Desta forma não importa a ordem de aparição ou o nro do item de menu, pois ele poderá ser sempre remetido a sub rotina associada. Inclusive você pode elevar e estender o editor de menus à funcionalidades incríveis e mais sofisticadas dando ao usuário a opção de além de criar o item e a seq de menus tbm associá-lo a respectiva subrotina. Um exemplo de sistema que faz isto é o OpenOffice que tem um editor de menus que permite inclusive fazer a reordenação e identação(recuo) dos itens (muito show)
PS.Ç A versao que baixei nao estava funcionando a aba de Opções do editr de menus.
Grato
Baixei seu modelo e achei bastante interessante. Entretanto observei um inconveniente. Caso altere-se a sequencia e a numeração dos botões eles perdem totalmente o vinculo com as subrotinas associadas. Basicamente porque elas dependem dos codigos dos e estes estão hardcode (chumbadas) no codigo. Ex: opt20_Alterar_senha, o que nao é uma boa prática.
Logo sugiro que você pense em criar uma coluna adicional na planilha de cadastro de menus onde você coloca apenas o nome da subrotina existente sem que esta dependa do codigo (iD) do item de menu. Desta forma não importa a ordem de aparição ou o nro do item de menu, pois ele poderá ser sempre remetido a sub rotina associada. Inclusive você pode elevar e estender o editor de menus à funcionalidades incríveis e mais sofisticadas dando ao usuário a opção de além de criar o item e a seq de menus tbm associá-lo a respectiva subrotina. Um exemplo de sistema que faz isto é o OpenOffice que tem um editor de menus que permite inclusive fazer a reordenação e identação(recuo) dos itens (muito show)
PS.Ç A versao que baixei nao estava funcionando a aba de Opções do editr de menus.
Grato
Re: Barra de menus em Userform sem o uso de API's
mgrifoeis, bom dia!
Obrigado pelo comentário e por compartilhar suas idéias e conhecimentos, amigo!
Estou trabalhando na adaptação de um novo código exatamente da forma que sugeriu, pois realmente é a melhor maneira. Este modelo eu desenvolvi pensando de outra maneira (errônea), que seria, o usuário Admin cria a estrutura do menu e as sub rotinas, e para os demais perfis de usuário, algumas opções deixariam de existir, não afetando o funcionamento. Hoje depois de analisar mais atentamente, vi que isso não poderia dar certo de forma alguma .
Fiquei interessado sobre o que disse sobre o OpenOffice e vou estudar isso, pois não conheço muito sobre o mesmo. Obrigado pela dica.
Assim que terminar de reestruturar todo o código , volto á disponibilizar o modelo aqui no fórum, e claro, contando com o apoio dos Mestres para torná-lo um arquivo que possa ser utilizado no dia-a-dia.
Mais uma vez, Obrigado.
[]s
Obrigado pelo comentário e por compartilhar suas idéias e conhecimentos, amigo!
Estou trabalhando na adaptação de um novo código exatamente da forma que sugeriu, pois realmente é a melhor maneira. Este modelo eu desenvolvi pensando de outra maneira (errônea), que seria, o usuário Admin cria a estrutura do menu e as sub rotinas, e para os demais perfis de usuário, algumas opções deixariam de existir, não afetando o funcionamento. Hoje depois de analisar mais atentamente, vi que isso não poderia dar certo de forma alguma .
Fiquei interessado sobre o que disse sobre o OpenOffice e vou estudar isso, pois não conheço muito sobre o mesmo. Obrigado pela dica.
Assim que terminar de reestruturar todo o código , volto á disponibilizar o modelo aqui no fórum, e claro, contando com o apoio dos Mestres para torná-lo um arquivo que possa ser utilizado no dia-a-dia.
Mais uma vez, Obrigado.
[]s
Re: Barra de menus em Userform sem o uso de API's
Fala galera!!!
Modelo atualizado conforme sugestão do colega mgrifoeis.
Quaisquer dúvidas, sugestões, críticas etc.. estou á disposição.
Abs á todos e obrigado pelos comentários.
Modelo atualizado conforme sugestão do colega mgrifoeis.
Quaisquer dúvidas, sugestões, críticas etc.. estou á disposição.
Abs á todos e obrigado pelos comentários.
Re: Barra de menus em Userform sem o uso de API's
jonasjtg,
O que você não consegue acessar? O link ou a planilha?
Aguardo retorno!.
Abs
O que você não consegue acessar? O link ou a planilha?
Aguardo retorno!.
Abs