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]Problema com uso do InvalidateControl

    avatar
    paulo.teixeira
    Novato
    Novato


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 14
    Registrado : 18/12/2022

    [Resolvido]Problema com uso do InvalidateControl Empty [Resolvido]Problema com uso do InvalidateControl

    Mensagem  paulo.teixeira 7/2/2023, 14:09

    Pesquisei no fórum mas não encontrei nada que se referisse a este problema

    No meu projeto, criei uma ribbon com várias abas e grupos, que quando o sistema inicia, estão todos os controles desabilitados (enabled = False)

    No evento OnLoadRibbon: Todos os comando se iniciam desabilitados

    Código:
    Sub OnRibbonLoad(ribbon As IRibbonUI)
        ' Callbackname in XML File "onLoad"

        Set gobjRibbon = ribbon
        
        bolEnabled = False
        
        
    End Sub

    Na função GetEnabled

    Código:
    Sub GetEnabled(control As IRibbonControl, ByRef enabled)
      
        Select Case control.Id
            
            Case Else
                enabled = bolEnabled

        End Select

    End Sub

    Na abertura do sistema, abre uma tela de login, a qual após informar o dados de login e senha, libera para o sistema, onde cada grupo de usuários tem acesso a determinados controles ou não.

    Código:
    Private Sub Comando14_Click()

    If usuario = usuarioTab And senha = senhaTab And usuario = "Administrador" Then
        
        bolEnabled = True
        gobjRibbon.Invalidate
        DoCmd.Close
                
    ElseIf usuario = usuarioTab And senha = senhaTab And usuario = "Aux. Administrativo I" Then 'Vanderleia
        
        bolEnabled = True
        
        gobjRibbon.InvalidateControl "btnEquipamento"
        gobjRibbon.InvalidateControl "btnFuncionario"
        gobjRibbon.InvalidateControl "btnVeiculo"
        gobjRibbon.InvalidateControl "btnProdutos"
        gobjRibbon.InvalidateControl "btnEntEstoque"
        gobjRibbon.InvalidateControl "btnCombustivel"
        gobjRibbon.InvalidateControl "btnEnergia"
        gobjRibbon.InvalidateControl "btnAgua"
        gobjRibbon.InvalidateControl "btnAdministrativo"
        gobjRibbon.InvalidateControl "btnComunicacao"
        gobjRibbon.InvalidateControl "btnSaiEstoque"
        gobjRibbon.InvalidateControl "btnMEquipamento"
        gobjRibbon.InvalidateControl "btnMVeiculo"
        gobjRibbon.InvalidateControl "btnOutros"
        gobjRibbon.InvalidateControl "btnManutSistema"
        gobjRibbon.InvalidateControl "btnEpi"
        gobjRibbon.InvalidateControl "btnSoja"
        gobjRibbon.InvalidateControl "btnMilho"
        gobjRibbon.InvalidateControl "btnTrigo"
        gobjRibbon.InvalidateControl "btnAveia"
        gobjRibbon.InvalidateControl "btnAzevem"
        gobjRibbon.InvalidateControl "btnArroz"
        gobjRibbon.InvalidateControl "btnTriticale"
        gobjRibbon.InvalidateControl "btnESoja"
        gobjRibbon.InvalidateControl "btnEMilho"
        gobjRibbon.InvalidateControl "btnETrigo"
        gobjRibbon.InvalidateControl "btnEAveia"
        gobjRibbon.InvalidateControl "btnEAzevem"
        gobjRibbon.InvalidateControl "btnEArroz"
        gobjRibbon.InvalidateControl "btnETriticale"
        gobjRibbon.InvalidateControl "btnFSoja"
        gobjRibbon.InvalidateControl "btnFMilho"
        gobjRibbon.InvalidateControl "btnFTrigo"
        gobjRibbon.InvalidateControl "btnFAveia"
        gobjRibbon.InvalidateControl "btnFAzevem"
        gobjRibbon.InvalidateControl "btnFArroz"
        gobjRibbon.InvalidateControl "btnFTriticale"
        gobjRibbon.InvalidateControl "btnGeral"
        
        DoCmd.Close

    Else
        MsgBox ("Usuário ou senha incorretos"), vbInformation, "Atenção"
        
    End If

    End Sub

    Se eu logar como "administrador, funciona normalmente

    Se eu logar como "Aux Administrativo I", e definir o InvalidateControl para apenas os controles do primeiro grupo (descritos abaixo), funciona corretamente
    Código:
       gobjRibbon.InvalidateControl "btnEquipamento"
        gobjRibbon.InvalidateControl "btnFuncionario"
        gobjRibbon.InvalidateControl "btnVeiculo"
        gobjRibbon.InvalidateControl "btnProdutos"

    Porém se eu tentar executar o comando como descrito acima, com todos esses InvalidateControl, no qual ingloba vários controle, de vários grupos e abas, ele simplesmente libera tudo, até os quais eu não coloquei para liberar.

    Já tentei de várias formas, inclusive usar o GetVisible em vez do GetEnabled, também não funcionou, gerando o mesmo problema, onde mostrava todos os comandos, até os quais eu não queria.

    Se alguém puder me auxiliar, fico grato!
    Anexos
    [Resolvido]Problema com uso do InvalidateControl AttachmentCapturar tela (Telefone).JPG
    Você não tem permissão para fazer download dos arquivos anexados.
    (24 Kb) Baixado 8 vez(es)
    avatar
    paulo.teixeira
    Novato
    Novato


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 14
    Registrado : 18/12/2022

    [Resolvido]Problema com uso do InvalidateControl Empty Re: [Resolvido]Problema com uso do InvalidateControl

    Mensagem  paulo.teixeira 8/2/2023, 16:33

    Up!
    DamascenoJr.
    DamascenoJr.
    Moderador
    Moderador


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 3845
    Registrado : 22/11/2016

    [Resolvido]Problema com uso do InvalidateControl Empty Re: [Resolvido]Problema com uso do InvalidateControl

    Mensagem  DamascenoJr. 9/2/2023, 01:34

    A resposta está clara.

    Se seus controles serão habilitados de acordo com o valor da variável bolEnabled. Se você definir ela como True e usar o InvalidateControl para todos os controles então todos os controles serão habilitados. Simples assim.

    O que você busca é habilitar determinado botão de acordo com o tipo de usuário. Então nesse caso cada botão deverá ser avaliado. A estrutura será mais ou menos assim

    Código:
    Sub GetEnabled(control As IRibbonControl, ByRef enabled)
      
        Select Case control.Id

            Case "btnEquipamento"
               enabled = (usuario = "Aux. Administrativo I") or (usuario = "Administrador")

            Case "ExemploBotãoExcluisivoAdministrador"
               enabled = (usuario = "Administrador")

            Case "btnProdutos"
                 enabled = (usuario = "Aux. Administrativo I") or (usuario = "Administrador")

            Case Else
                enabled = bolEnabled

        End Select

    End Sub


    .................................................................................
    Ajude-se a ser ajudado, anexe seu projeto.
    Sempre tente entender o código,
    não somente copie e cole.
    Positive as mensagens que achar útil clicando no '+' no canto superior direito delas.

    paulo.teixeira gosta desta mensagem

    avatar
    paulo.teixeira
    Novato
    Novato


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 14
    Registrado : 18/12/2022

    [Resolvido]Problema com uso do InvalidateControl Empty Re: [Resolvido]Problema com uso do InvalidateControl

    Mensagem  paulo.teixeira 9/2/2023, 11:13

    Obrigado DamascenoJr, mais uma vez me ajudando
    Não tenho muita experiência em programação, estava tentando revalidar os controles por outro lado, não dava certo mesmo, testei agora e funcionou perfeitamente.
    Muito obrigado!!

    Conteúdo patrocinado


    [Resolvido]Problema com uso do InvalidateControl Empty Re: [Resolvido]Problema com uso do InvalidateControl

    Mensagem  Conteúdo patrocinado


      Data/hora atual: 16/7/2024, 13:12