TIPO DE OBJETO
Estou escrevendo com mais uma dúvida, que deve ser fácil para alguns, mas para mim não está sendo, não.
Em um UserControl, eu preciso descobrir quais os objetos estão "colados" á ele no Form. Assim, eu gero um Loop percorrendo cada controle do Parent do UserControl, comparando suas posições com as do próprio controle e a do ponteiro do mouse. Mas o intuito é o de apenas saber qual controle está com o ponteiro do mouse (não o foco).
Não teria uma forma mais "inteligente" de eu fazer isso?
Grato,
Em um UserControl, eu preciso descobrir quais os objetos estão "colados" á ele no Form. Assim, eu gero um Loop percorrendo cada controle do Parent do UserControl, comparando suas posições com as do próprio controle e a do ponteiro do mouse. Mas o intuito é o de apenas saber qual controle está com o ponteiro do mouse (não o foco).
Não teria uma forma mais "inteligente" de eu fazer isso?
Grato,
Cara, confesso que tive de abrir o vb, mas estudei um pouquinho as propriedades e métodos intrÃssecos de um UserControl e cheguei, finalmente, a conclusão e resposta a sua dúvida. Veja. (Aprendà isso hoje, graças a você)
Espero ter te ajudado.
Public Sub CountControls()
Dim i As Integer
For i = 0 To UserControl.ContainedControls.Count - 1
MsgBox UserControl.ContainedControls(i).Name
Next
End Sub
Espero ter te ajudado.
Ah desculpe, Tem uma forma melhor para você descobrir qual deles está com o mouse em sima. veja:
Private Type RECT
Left As Long
Top As Long
Right As Long
Bottom As Long
End Type
Private Type POINTAPI
X As Long
Y As Long
End Type
'Declare the API-Functions
Private Declare Function GetCursorPos Lib "user32" (lpPoint As POINTAPI) As Long
Private Declare Function GetWindowRect Lib "user32" (ByVal hwnd As Long, lpRect As RECT) As Long
Public Sub GetControl()
Dim i As Integer, Rec As RECT, Point As POINTAPI
For i = 0 To UserControl.ContainedControls.Count - 1
On Error GoTo prox
GetWindowRect UserControl.ContainedControls(i).hwnd, Rec
GetCursorPos Point
If (Point.X (maior que)= Rec.Left And Point.X (menor que)= Rec.Right) And (Point.Y (maior que)= Rec.Top And Point.Y (menor que)= Rec.Bottom) Then
MsgBox "Mouse em cima do controle: " & UserControl.ContainedControls(i).Name
End If
prox:
Next
End Sub
Tópico encerrado , respostas não são mais permitidas