Strona: [  << <   1   > >>  ]  z  1     
Autor Temat: Label +Kursor
DJK



Typ: neutral
Postów: 871
Zarejestrowany: Feb 2004
Label +Kursor

Witam

Jak sprawdzić, że kursor znajduje się nad labelem lub się nad nim nie znajduje ?


_____________________________________________
Jeśli można coś zrobić w sposób optymalny to czemu nie

30-03-2005 12:32
Pokaż profil DJK  Wyślij email do DJK   Odwiedź stronę DJK  
Tamgo




Typ: neutral
Postów: 129
Zarejestrowany: Aug 2004

Powiem nieśmiało, bo nie wiem na ile się tobie to przyda i czy moja podpowiedź jest trafna. W każdym razie w tym przykładzie wykorzystano API do wykrywania myszy nad obiektem (tu przycisk), czasu jej obecności, czy została poruszona i pozycji kursora. Rzecz dotyczy co prawda troszkę innego problemu (pokazania info o obiekcie w labelu) ale.... może coś z tego jednak wykorzystasz. W każdym razie chciałem pomóc.
przykład ściągnięty ze stronki: http://www.vb-helper.com/index_controls.html ;    
Użyj zdarzenia MouseMove przycisku do pokazania informacji. Zastosuj Timera i funkcję - API GetCursorPos, aby wykrywać oddalanie się kursora myszy od obiektu.

Private Sub Command1_MouseMove(Button As Integer, Shift As _
    Integer, X As Single, Y As Single)
    DisplayButtonMessage Command1, "Command 1"
End Sub

' Jeśli nie pokazujemy wiadomości, to
' umożliwi nam jej pokazanie stoper,
' który wykrywa kiedy mysza przestaje się poruszać.
Private Sub DisplayButtonMessage(ByVal cmd As _
    CommandButton, ByVal txt As String)
    ' Sprawdzaj, czy już pokazujemy wiadomość.
    If Timer1.Enabled Then Exit Sub

    ' Oblicza dla przycisku współrzędne ekranu.
    upper_left.X = ScaleX(cmd.Left, ScaleMode, vbPixels)
    upper_left.Y = ScaleY(cmd.Top, ScaleMode, vbPixels)
    ClientToScreen hwnd, upper_left
    lower_right.X = ScaleX(cmd.Left + cmd.Width, ScaleMode, _
        vbPixels)
    lower_right.Y = ScaleY(cmd.Top + cmd.Height, ScaleMode, _
        vbPixels)
    ClientToScreen hwnd, lower_right

    ' Pokaż wiadomość i uruchom Timer.
    lblStatus.Caption = txt
    Timer1.Enabled = True
End Sub

' Sprawdzaj, czy kursor porusza się.
Private Sub Timer1_Timer()
Dim pt As POINTAPI

    ' Odczytaj pozycję kursora
    GetCursorPos pt

    ' Sprawdzaj, czy mysz jest nad przyciskiem.
    If pt.X < upper_left.X Or pt.X > lower_right.X Or _
      pt.Y < upper_left.Y Or pt.Y > lower_right.Y _
    Then
        ' Jak długo jest ponad przyciskiem.
        Timer1.Enabled = False
        lblStatus.Caption = ""
    End If
End Sub

[Post edytowany dnia 31-03-2005 00:06 przez Tamgo]

30-03-2005 23:58
Pokaż profil Tamgo  Wyślij email do Tamgo        4484571
Wszystkich odpowiedzi: 1 :: Maxymalnie na stronę: 20
Strona: [  << <   1   > >>  ]  z  1