Olá!
Encontrei aqui no fórum um código muito bom para aplicação de efeitos especiais em controles. No formulário principal ele funciona no perfeito, porém, ao chamar a função no subform não retorna a ação esperada.
Alguém sabe como adaptar o código abaixo para rodar em subform?
Public Sub InitialiseEvents(ByRef frmThisForm As Form)
' Elaborado pelo meu colega e amigo, ChrisO de Brisbane na Australia
' Colocado na sala de exemplos do http://maximoaccess.forumotion.com/,
' por JPaulo com autoriza??o do autor
Dim ctl As Control
On Error Resume Next
For Each ctl In frmThisForm
If ctl.ControlType = acSubform Then
If ctl(ctl.Name, 9) = "sub" Then
'ctl.OnGotFocus = "=HandleFocus('" & frmThisForm.Name & "', '" & ctl.Name & "', 'Got')"
'ctl.OnLostFocus = "=HandleFocus('" & frmThisForm.Name & "', '" & ctl.Name & "', 'Lost')"
ctl.OnMouseMove = "=HandleMouseMove('" & frmThisForm.Name & "', '" & ctl.Name & "')"
End If
End If
Next ctl
Forms(frmThisForm.Name).Section(acDetail).OnMouseMove = "=HandleMouseMove('" & frmThisForm.Name & "', '" & "Detail" & "')"
Err.Clear
End Sub
Public Function HandleMouseMove(ByVal strFormName As String, _
ByVal strControlName As String)
' Elaborado pelo meu colega e amigo, ChrisO de Brisbane na Australia
' Colocado na sala de exemplos do http://maximoaccess.forumotion.com/,
' por JPaulo com autoriza??o do autor
Static strHighlightedControl As String
If strHighlightedControl <> "" And strHighlightedControl <> strControlName Then
HandleFocusMenu strFormName, strHighlightedControl, "Lost"
strHighlightedControl = ""
End If
If strControlName <> "Detail" And strControlName <> strHighlightedControl Then
strHighlightedControl = strControlName
HandleFocus strFormName, strHighlightedControl, "Got"
End If
End Function
Public Function HandleFocus(ByVal strFormName As String, _
ByVal strControlName As String, _
ByVal strChange As String)
' Elaborado pelo meu colega e amigo, ChrisO de Brisbane na Australia
' Colocado na sala de exemplos do http://maximoaccess.forumotion.com/,
' por JPaulo com autoriza??o do autor
Static lngForeColour As Long
Static lngFontWeight As Long
Static lngBorderStyle As Long
Static lngBorderColour As Long
Static lngBackStyle As Long
Static lngBackColour As Long
Static lngSpecialEffect As Long
On Error Resume Next
With Forms(strFormName)(strControlName)
Select Case strChange
Case "Got"
' Salva a corrente configura??o.
lngBorderStyle = .BorderStyle
' Define a configura??o pretendida
.BorderStyle = 1
Case "Lost"
.BorderStyle = lngBorderStyle
End Select
End With
Err.Clear
End Function
Encontrei aqui no fórum um código muito bom para aplicação de efeitos especiais em controles. No formulário principal ele funciona no perfeito, porém, ao chamar a função no subform não retorna a ação esperada.
Alguém sabe como adaptar o código abaixo para rodar em subform?
Public Sub InitialiseEvents(ByRef frmThisForm As Form)
' Elaborado pelo meu colega e amigo, ChrisO de Brisbane na Australia
' Colocado na sala de exemplos do http://maximoaccess.forumotion.com/,
' por JPaulo com autoriza??o do autor
Dim ctl As Control
On Error Resume Next
For Each ctl In frmThisForm
If ctl.ControlType = acSubform Then
If ctl(ctl.Name, 9) = "sub" Then
'ctl.OnGotFocus = "=HandleFocus('" & frmThisForm.Name & "', '" & ctl.Name & "', 'Got')"
'ctl.OnLostFocus = "=HandleFocus('" & frmThisForm.Name & "', '" & ctl.Name & "', 'Lost')"
ctl.OnMouseMove = "=HandleMouseMove('" & frmThisForm.Name & "', '" & ctl.Name & "')"
End If
End If
Next ctl
Forms(frmThisForm.Name).Section(acDetail).OnMouseMove = "=HandleMouseMove('" & frmThisForm.Name & "', '" & "Detail" & "')"
Err.Clear
End Sub
Public Function HandleMouseMove(ByVal strFormName As String, _
ByVal strControlName As String)
' Elaborado pelo meu colega e amigo, ChrisO de Brisbane na Australia
' Colocado na sala de exemplos do http://maximoaccess.forumotion.com/,
' por JPaulo com autoriza??o do autor
Static strHighlightedControl As String
If strHighlightedControl <> "" And strHighlightedControl <> strControlName Then
HandleFocusMenu strFormName, strHighlightedControl, "Lost"
strHighlightedControl = ""
End If
If strControlName <> "Detail" And strControlName <> strHighlightedControl Then
strHighlightedControl = strControlName
HandleFocus strFormName, strHighlightedControl, "Got"
End If
End Function
Public Function HandleFocus(ByVal strFormName As String, _
ByVal strControlName As String, _
ByVal strChange As String)
' Elaborado pelo meu colega e amigo, ChrisO de Brisbane na Australia
' Colocado na sala de exemplos do http://maximoaccess.forumotion.com/,
' por JPaulo com autoriza??o do autor
Static lngForeColour As Long
Static lngFontWeight As Long
Static lngBorderStyle As Long
Static lngBorderColour As Long
Static lngBackStyle As Long
Static lngBackColour As Long
Static lngSpecialEffect As Long
On Error Resume Next
With Forms(strFormName)(strControlName)
Select Case strChange
Case "Got"
' Salva a corrente configura??o.
lngBorderStyle = .BorderStyle
' Define a configura??o pretendida
.BorderStyle = 1
Case "Lost"
.BorderStyle = lngBorderStyle
End Select
End With
Err.Clear
End Function