Avatar billede broegger Nybegynder
12. august 2001 - 23:17 Der er 6 kommentarer og
3 løsninger

Musens koordinater

findes der ikke en eller anden kommando, API-kald eller et eller andet, der gør det muligt at aflæse musepilens koordinater og derefter afvikle nogle bestemte events, når cursoren befinder sig i et bestemt område af skærmen (fx. farveskift på en button)??? Haster... tak
Avatar billede jelzin101 Praktikant
12. august 2001 - 23:19 #1
du kan jo bruge on mouse move eventen.
Avatar billede broegger Nybegynder
12. august 2001 - 23:21 #2
Nej. Det jeg gerne vil er, at når man flytter cursoren henover en label skifter den farve, og når man fjerner den får label\'en den oprindelige farve igen. Med mouse move eventen forbliver label\'en den nye farve.
Avatar billede jelzin101 Praktikant
12. august 2001 - 23:29 #3
så kan du bare lave en mouse move på formen :)

(brug et par boolean værdier så den ikke står og skifter farve hele tiden)
Avatar billede solle Nybegynder
13. august 2001 - 00:10 #4
musens koordinator er x og y ?
Avatar billede jelzin101 Praktikant
13. august 2001 - 00:17 #5
eks.

Dim lab1, Form, lab2 As Boolean
Private Sub Form_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
lab1 = False: lab2 = False: Form = True
color
End Sub

Private Sub Label1_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
lab1 = True: lab2 = False: Form = False
Call color
End Sub
Private Sub Label2_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
lab1 = False: lab2 = True: Form = False
Call color
End Sub

Private Sub color()
If Form = True Then: Label1.BackColor = &H8000000F: Label2.BackColor = &H8000000F
If lab1 = True Then: Label1.BackColor = &H80000001
If lab2 = True Then: Label2.BackColor = &H80000001

End Sub
Avatar billede solle Nybegynder
13. august 2001 - 00:34 #6
Private Sub Form_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
Label1.Caption = X
Label2.Caption = Y

If X = 3510 And Y = 2505 Then
    \'Funktion et!
End If

If X = 225 And Y = 225 Then
    \'Funktion to!
End If

End Sub
Avatar billede jelzin101 Praktikant
13. august 2001 - 00:39 #7
solle - giver det ikke et problem hvis man er over f.eks. en label ??? så er det jo ikke formen man refererer til.
Avatar billede sjh Nybegynder
13. august 2001 - 13:38 #8
hvis det SKAL være API-kald kan du bruge dette, men det er ikke serlig fedt. ;)

Option Explicit

Private Declare Function GetCursorPos Lib \"user32\" (lpPoint As POINTAPI) As Long
Private Declare Function WindowFromPoint Lib \"user32\" (ByVal xPoint As Long, ByVal yPoint As Long) As Long

Private Type POINTAPI
    X As Long
    Y As Long
End Type

Function MouseOver(hWnd As Long) As Boolean
Dim ptMouse As POINTAPI
GetCursorPos ptMouse
    If WindowFromPoint(ptMouse.X, ptMouse.Y) = hWnd Then
      MouseOver = True
    Else
      MouseOver = False
    End If
End Function

Private Sub Form_Activate()
Do
  If MouseOver(Command1.hWnd) = True Then
    Command1.BackColor = &HFF0000 \'Blå
      Else
    Command1.BackColor = &HFF&    \'Rød
    End If
  DoEvents
Loop
End Sub

Private Sub Form_Load()
\'Command1.Style skal du sette til 1-Graphical
End Sub

Private Sub Form_Unload(Cancel As Integer)
End
End Sub
Avatar billede broegger Nybegynder
13. august 2001 - 17:40 #9
tak for hjælpen. Grunden til at jeg ikke selv kunne få det til at fungere var at jeg havde label\'en placeret bagest i ZOrder
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester