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
No fechamento de um objeto que tem ribbon própria diferente da ribbon principal (o que causa a perda do foco)
Funções auxiliares
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
Adaptado da dúvida 7 do link abaixo
usandoaccess.com.br/tutoriais/criar-ribbons-access-frutos-do-suporte.asp?id=1
- 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
- bdRibbonFoco.zip
- Você não tem permissão para fazer download dos arquivos anexados.
- (29 Kb) Baixado 118 vez(es)