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

    Mantendo o foco na guia da ribbon

    DamascenoJr.
    DamascenoJr.
    Moderador
    Moderador


    Respeito às regras : Respeito às Regras 100%

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

    Mantendo o foco na guia da ribbon Empty Mantendo o foco na guia da ribbon

    Mensagem  DamascenoJr. 9/10/2020, 06:19

    No código de ação do botão adiciono um linha para salvar o id do botão em uma variável temporária
    Código:
    Call TempVars.Add("vtControl", control.Id)

    No fechamento de um objeto que tem ribbon própria diferente da ribbon principal (o que causa a perda do foco)
    Código:
    Call fncFocoNaGuia

    Funções auxiliares
    Código:
    Public Sub fncFocoNaGuia()

        Dim objXMLDoc   As Object
        Dim objGuia     As Object
        Dim objAtt      As Object

        If objGuias Is Nothing Then
            Set objXMLDoc = CreateObject("MSXML2.DOMDocument")
            Call objXMLDoc.LoadXML(DLookup("RibbonXml", "USysRibbons", "RibbonName = """ & CurrentDb.Properties("CustomRibbonID").Value & """"))
            Set objGuias = objXMLDoc.SelectNodes("/customUI/ribbon/tabs/tab")
            Set objXMLDoc = Nothing
        End If
        
        If objGuias.Length = 1 Then GoTo sair
        
        For Each objGuia In objGuias
            If fncControleNaGuia(objGuia) Then
            
                #If VBA7 Then
                    For Each objAtt In objGuia.Attributes
                        If objAtt.Name = "id" Then objRibbon.ActivateTab objAtt.Value
                    Next objAtt
                #Else
                    For Each objAtt In objGuia.Attributes
                        If objAtt.Name = "keytip" Then Call DoCmd.OpenForm("frmFocoGuia", , , , , acHidden, objAtt.Value)
                    Next objAtt
                #End If
                
                Exit For
                
            End If
        Next objGuia
        
    sair:
        Call TempVars.Remove("vtControl")

    End Sub

    Código:
    Private Function fncControleNaGuia(objControle As Object) As Boolean

        Dim objCtl          As Object
        Dim objAtt          As Object

        For Each objCtl In objControle.ChildNodes
            If objCtl.ChildNodes.Length > 0 Then
                If fncControleNaGuia(objCtl) Then
                    fncControleNaGuia = True
                    Exit Function
                End If
            Else
                For Each objAtt In objCtl.Attributes
                    If objAtt.Name = "id" Then
                        If TempVars("vtControl") = objAtt.Value Then
                            fncControleNaGuia = True
                            Exit Function
                        End If
                    End If
                Next objAtt
            End If
        Next objCtl

    End Function

    Nos casos de a ribbon ser do access 2007, então é preciso dar o atributo keytip as guias no xml e ter um formulário auxiliar com o seguinte código no evento Timer
    Código:
    Call CreateObject("WScript.shell").SendKeys("%" & Me.OpenArgs & "%")
    Me.TimerInterval = 0
    Call DoCmd.Close(acForm, Me.Name, acSaveNo)

    Adaptado da dúvida 7 do link abaixo
    usandoaccess.com.br/tutoriais/criar-ribbons-access-frutos-do-suporte.asp?id=1
    Anexos
    Mantendo o foco na guia da ribbon AttachmentbdRibbonFoco.zip
    Você não tem permissão para fazer download dos arquivos anexados.
    (29 Kb) Baixado 107 vez(es)


    .................................................................................
    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.

    Ítalo.JFB gosta desta mensagem

    Alvaro Teixeira
    Alvaro Teixeira
    Moderador Global
    Moderador Global


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 7922
    Registrado : 15/03/2013

    Mantendo o foco na guia da ribbon Empty Re: Mantendo o foco na guia da ribbon

    Mensagem  Alvaro Teixeira 9/10/2020, 10:21

    Olá Ivan,

    Parabéns e obrigado pela partilha.

    cheers

    Ítalo.JFB gosta desta mensagem


      Data/hora atual: 17/5/2024, 03:24