MaximoAccess

Caro Usuário, antes de postar pela primeira vez, leia as regras do fórum.

https://www.maximoaccess.com/t48-regras-do-forum

Obrigado

Administração


Participe do fórum, é rápido e fácil

MaximoAccess

Caro Usuário, antes de postar pela primeira vez, leia as regras do fórum.

https://www.maximoaccess.com/t48-regras-do-forum

Obrigado

Administração

MaximoAccess

Gostaria de reagir a esta mensagem? Crie uma conta em poucos cliques ou inicie sessão para continuar.

Dicas Ms Access, Exemplos Ms Access, Codigos VBA Ms Access, SQL Ms Access


2 participantes

    [Resolvido]Macro AutoKeys com condicional

    CassioFabre
    CassioFabre
    Super Avançado
    Super Avançado


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 731
    Registrado : 18/01/2013

    [Resolvido]Macro AutoKeys com condicional Empty [Resolvido]Macro AutoKeys com condicional

    Mensagem  CassioFabre 13/10/2016, 17:38

    Boa tarde,

    Preciso utilizar a macro AutoKeys (ou outra semelhante) para fazer travamento de algumas teclas chaves, como F11. A macro funciona perfeitamente, o meu problema é que preciso que ela dependa do valor de uma função (getGrupoUsuarioAtual()) por que essas teclas só vão ser bloqueadas aos usuários que não são Administradores do sistema. O ponto chave é que essa função só ganha valor após o login do usuário, e a macro é executada ao abrir o sistema. Tentei colocar no campo "Condição" o código getUsuarioAtual()<>"Administradores", mas pelo motivo anterior, não funcionou.

    Agradeço qualquer ajuda ou outra solução.

    Abraço.


    Última edição por CassioFabre em 13/10/2016, 20:09, editado 1 vez(es)
    FabioPaes
    FabioPaes
    Maximo VIP
    Maximo VIP


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 3914
    Registrado : 14/08/2013

    [Resolvido]Macro AutoKeys com condicional Empty Re: [Resolvido]Macro AutoKeys com condicional

    Mensagem  FabioPaes 13/10/2016, 18:57

    Amigo, esse Bloqueio deverá ser feito nos Formularios...

    No formulario, no evento: Visualiza Teclas, coloque = SIM


    Agora na Caixa de texto que quer bloquear o Espaço coloque:

    No evento ao Apertar Tecla, Nao é ao pressionar tecla ta... Coloque:

    Adapte a função a baixo para sua realidade, passando pela Condição If...



    'O evento: "VIsualiza Tecla" do formulario tem que estar = sim
    Select Case KeyCode
           Case vbKeyF11
           KeyCode = 0
           MsgBox "Apertou o Espaço! Apenas para Testes, remover no seu Aplicativo", vbInformation
    End Select




    Lista com o Nome das Teclas: https://msdn.microsoft.com/en-us/library/aa243025(v=vs.60).aspx


    .................................................................................
    _____________________________________________________________________
    Achou a solução para sua dúvida? Não seja Egoísta, Compartilhe com todos!
    A dica do Colega foi útil? Agradeça!

    O importante não saber tudo, mas sim a Onde procurar!
    CassioFabre
    CassioFabre
    Super Avançado
    Super Avançado


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 731
    Registrado : 18/01/2013

    [Resolvido]Macro AutoKeys com condicional Empty AutoKeys

    Mensagem  CassioFabre 13/10/2016, 20:06

    Boa tarde,

    Como fazer isso em todos os formulários ficaria absolutamente inviável, uma que se quisesse acrescentar teclas (ou mesmo alterar) teria que fazer formulário por formulário. O jeito que achei pra resolver isso foi criar em um módulo a função:

    Código:
    Public Function bloqTecla() As Boolean
        
        '   TECLAS BLOQUEADAS PARA USUÁRIOS NÃO ADMINSTRADORES
        If getGrupoUsuarioAtual <> "Administradores" Then
            Select Case getTecla
                Case 400122 'alt+f11
                    bloqTecla = True
            End Select
        End If
        
        '   ATALHOS GERAIS
        Select Case getTecla
            Case 27 'esc
                DoCmd.Close
        End Select
    End Function

    E em todos os formulários, setando a Visualização de Teclas para SIM e no evento "Ao Pressionar Tecla" do formulário, coloquei:

    Código:
    setTecla (Val((Shift * 100) & KeyCode))
        
        Call bloqTecla
        
        Select Case bloqTecla
            Case True
                KeyCode = 0
        End Select

    Com isso, basta acrescentar as teclas na função, que se aplicará em todos os formulários.

    Obs.: a função setTecla() atribui o valor da função getTecla() utilizada no módulo.

    Agradecimento ao Avelino, pois o princípio básico pra chegar nessa conclusão, foi retirado do artigo do site dele: http://www.usandoaccess.com.br/dicas/como-interceptar-teclas-e-combinacoes-de-teclas.asp?id=1&idlista=148#inicio

    Abraço.
    FabioPaes
    FabioPaes
    Maximo VIP
    Maximo VIP


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 3914
    Registrado : 14/08/2013

    [Resolvido]Macro AutoKeys com condicional Empty Re: [Resolvido]Macro AutoKeys com condicional

    Mensagem  FabioPaes 13/10/2016, 20:30

    Como fazer isso em todos os formulários ficaria absolutamente inviável...

    Amigo, falei que o bloqueio deveria ser em cada formulário pois cada um é independente e não que deveria colocar o codigo em todos...

    Podendo apenas chamar a função em cada formulário!


    .................................................................................
    _____________________________________________________________________
    Achou a solução para sua dúvida? Não seja Egoísta, Compartilhe com todos!
    A dica do Colega foi útil? Agradeça!

    O importante não saber tudo, mas sim a Onde procurar!
    CassioFabre
    CassioFabre
    Super Avançado
    Super Avançado


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 731
    Registrado : 18/01/2013

    [Resolvido]Macro AutoKeys com condicional Empty Macro AutoKeys com condicional

    Mensagem  CassioFabre 13/10/2016, 20:49

    Sim amigo, entendi seu ponto.

    Com a função que escrevi, posso configurar o bloqueio individual de cada form através do módulo, o que me facilita na hora de edição em massa.

    Por exemplo: Se eu quiser que a tecla "F12" não funcione em nenhum formulário, tenho que adicionar o comando if KeyCode = vbKeyF12 then keycode = 0 end if em cada formulário, sendo que da forma que fiz, basta um "Select Case 123 keycode = 0" na função, e todos os formulários ficarão com F12 desabilitados.

    Por outro lado, supondo que eu esteja no formulário "formCadastroCliente" e queira abrir um formulário de lista de cidades "formListaCidades" com a tecla F12, basta que eu implemente, no trecho que falei acima:

    Código:
    select case 123
        if EstáCarregado("formCadastroCliente") then
            docmd.openform "formListaCidades"
        end if
        
        bloqTecla = true

    Abraço.

    Conteúdo patrocinado


    [Resolvido]Macro AutoKeys com condicional Empty Re: [Resolvido]Macro AutoKeys com condicional

    Mensagem  Conteúdo patrocinado


      Data/hora atual: 17/5/2024, 08:49