Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  CATIA V5 Programmierung
  Mausposition mit Label vergleichen

Antwort erstellen  Neues Thema erstellen
CAD.de Login | Logout | Profil | Profil bearbeiten | Registrieren | Voreinstellungen | Hilfe | Suchen

Anzeige:

Darstellung des Themas zum Ausdrucken. Bitte dann die Druckfunktion des Browsers verwenden. | Suche nach Beiträgen nächster neuer Beitrag | nächster älterer Beitrag
Autor Thema:  Mausposition mit Label vergleichen (1630 mal gelesen)
SirKlabauter
Mitglied
cand. Ing.


Sehen Sie sich das Profil von SirKlabauter an!   Senden Sie eine Private Message an SirKlabauter  Schreiben Sie einen Gästebucheintrag für SirKlabauter

Beiträge: 45
Registriert: 21.09.2006

CATIA: V5R16
Programmiersprache: VBA

erstellt am: 24. Apr. 2008 15:30    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

Hallo an alle,

Ich hab mal wieder ein Problem. Ich wollte mir ein Kontextmenü basteln.
Das mache ich Über eine Userform ein paar Label drauf und fertig. Die Einzelnen Aktionen des Kontextmenüs werden über Label_Click ausgelöst.
Damit das ganze auch schön aussieht wollte ich die Hintergrundfarbe von dem Label ändern wenn sich der Mauscursor drauf befindet. Zuerst wollte ich das mit

Private Sub Label2_MouseMove(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single)
    If X >= 0 And X <= Label2.Width - 0 And Y >= 0 And Y <= Label2.Height - 0 Then
Label2.SpecialEffect = fmSpecialEffectRaised
'Else
'Frame1.SpecialEffect = fmSpecialEffectFlat
End If

Ich habe aber ein Problem das Label wieder zurück zu färben, wenn sich die Maus nicht mehr darauf befindet.

Dann wollte ich das Problem ganz anders angehen und über die Mausposition lösen.

Declare Function GetCursorPos Lib "user32" (lpPoint As POINTAPI) As Long

Lib "user32.dll" (lpPoint As POINTAPI) As Long

Private Type POINTAPI
  x As Long
  y As Long
End Type

Dim CP As POINTAPI
Private Sub Timer1_Timer ()
  GetCursorPos CP
  Label1.Caption = "X: " & CP.x & " / Y: " & CP.y
End Sub

Wenn ich die Position des Cursors kenne könnte man sie ja mit der Position des Labels vergleichen.

Userform1.Left+Label1.Left


Nur das ganze funktioniert nicht ganz richtig. Wenn das Label und die Maus laut Koordinaten die gleiche Position haben sollten bin ich ein ganzes Stück links von dem Label. Je weiter sich die Userform rechts befindet desto größer wird der Abstand.

Jetzt zu meiner Frage:

Kann es sein das die Mausposition in einer anderen Einheit gemessen wird als die Position der Userform und Label

------------------
Hinweise auf Rechtschreibfehler kann man sich bitte sparen.

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

YellowDevil
Mitglied
PI, Makroentwicklung, NC Automatisierung


Sehen Sie sich das Profil von YellowDevil an!   Senden Sie eine Private Message an YellowDevil  Schreiben Sie einen Gästebucheintrag für YellowDevil

Beiträge: 67
Registriert: 21.12.2006

erstellt am: 25. Apr. 2008 06:24    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für SirKlabauter 10 Unities + Antwort hilfreich

Moin,
http://www.shadoware.de/vb/mouseout.html

dieser Link sollte dir ein wenig weiter helfen können.

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

SirKlabauter
Mitglied
cand. Ing.


Sehen Sie sich das Profil von SirKlabauter an!   Senden Sie eine Private Message an SirKlabauter  Schreiben Sie einen Gästebucheintrag für SirKlabauter

Beiträge: 45
Registriert: 21.09.2006

CATIA: V5R16
Programmiersprache: VBA

erstellt am: 25. Apr. 2008 16:16    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

Danke für die Antwort. Das hat bei mir aber nicht funktioniert. Er hat immer an der Stelle wo er die Hwnd-Eigenschaft zuweisen will einen Fehler angezeigt.


Das mit den Einheiten hab ich jetzt auch schon raus gefunden. VBA rechnet in Twips und die Mausposition wird in Pixel ausgegeben.
Da hab ich vier schönen Funktionen in den Weiten des WWWs gefunden.

'Twips in Pixel X
Function TwipsToPixelsX(Twips As Long) As Long
  TwipsToPixelsX = Twips / screen.TwipsPerPixelX
End Function

'Pixel in Twips X
Function PixelsToTwipsX(Pixels As Long) As Long
  PixelsToTwipsX = Pixels * screen.TwipsPerPixelX
End Function

'Twips in Pixel Y
Function TwipsToPixelsY(Twips As Long) As Long
  TwipsToPixelsY = Twips / screen.TwipsPerPixelY
End Function

'Pixel in Twips Y
Function PixelsToTwipsY(Pixels As Long) As Long
  PixelsToTwipsY = Pixels * screen.TwipsPerPixelY
End Function


Leider funktionieren die bei mir auch nicht. Mein VBA kennt die "Screen." nicht. Ist das eine API Funktion

------------------
Hinweise auf Rechtschreibfehler kann man sich bitte sparen.

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Anzeige.:

Anzeige: (Infos zum Werbeplatz >>)

Darstellung des Themas zum Ausdrucken. Bitte dann die Druckfunktion des Browsers verwenden. | Suche nach Beiträgen

nächster neuerer Beitrag | nächster älterer Beitrag
Antwort erstellen


Diesen Beitrag mit Lesezeichen versehen ... | Nach anderen Beiträgen suchen | CAD.de-Newsletter

Administrative Optionen: Beitrag schliessen | Archivieren/Bewegen | Beitrag melden!

Fragen und Anregungen: Kritik-Forum | Neues aus der Community: Community-Forum

(c)2023 CAD.de | Impressum | Datenschutz