RMI@
|
CAMPO BELO MG - BRASIL
|
|
Postada em 18/12/2008 11:23 hs
Olá a todos... Gostaria de saber se tem como identificar o campo/controle onde o cursor do mouse se encontra posicionado. Por ex. o Usuário pressiona F12 e na rotina eu verifico onde ele está o cursor (endereço, telefone, etc). Obrigado.
|
|
|
|
Sandro
não registrado
|
|
ENUNCIADA !
|
|
|
Postada em 18/12/2008 15:21 hs
Olá, Você pode criar uma rotina semelhante a essa: Private Sub Identifica_Controle() Dim R As RECT Dim P As POINTAPI Dim Controle As Control GetCursorPos P For Each Controle In Controls GetWindowRect Controle.hwnd, R If (P.X >= R.Left) And (P.X <= R.Right) And _ (P.Y >= R.Top) And (P.Y <= R.Bottom) Then Me.Caption = Controle.Name End If Next Set Controle = Nothing End Sub Depois, em cada controle, coloque a chamada a esta procedure no evento MouseMove. Da forma como ela está ela iré exibir na barra de títulos do formulário o nome do controle. Você pode adaptá-la às suas necessidades. Um abraço, Sandro.
|
|
|
RMI@
|
CAMPO BELO MG - BRASIL
|
|
Postada em 19/12/2008 08:50 hs
Sandro, obrigado pela ajuda. Deu um erro na declaração: Dim R As RECT me parece que precisa de alguma dll nas propriedades do projeto ne? Abraço!
|
|
|
Sandro
não registrado
|
|
ENUNCIADA !
|
|
|
Postada em 19/12/2008 09:02 hs
Olá, Desculpe, na verdade faltou declarar o tipo RECT, POINTAPI e a própria DLL. Aqui vai: 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 Private Declare Function GetCursorPos Lib "user32" Alias "GetCursorPos" (lpPoint As POINTAPI) As Long Private Declare Function GetWindowRect Lib "user32" Alias "GetWindowRect" (ByVal hwnd As Long, lpRect As RECT) As Long
Esta rotina serve para você chamar de qualquer controle que possua o evento MouseMove, de forma genérica, apenas chamando a função. Uma forma mais sofisticada seria fazer um hook (gancho) para o mouse e rastrear em qual janela ele está, mas isso é relativamente perigoso, pois você pode derrubar o IDE do VB... Sandro.
|
|
|