TIPO DE OBJETO

USUARIO.EXCLUIDOS 19/03/2004 11:06:09
#16084
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,
USUARIO.EXCLUIDOS 20/03/2004 03:25:41
#16243
Resposta escolhida
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ê)

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.
USUARIO.EXCLUIDOS 20/03/2004 03:44:14
#16244
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