AW: UF per MouseMove-Ereignis de-/aktivieren
04.07.2013 10:17:14
fcs
Hallo David,
die Übernahme der Maus-Parameter in ein Userform für Auswertungen ist kein Problem.
Entweder du speicherst die Werte in Variablen, die in einem allgemeinen Modul als Public deklariert sind oder du weist die Werte Steuerelementen (z.B. Textboxen) des Userforms zu.
Die Möglichkeit das Userform beim Verlassen des Bildes wieder auszublenden/entladen funktioniert nur, indem man einen Randbereich des Bildes hierfür reserviert. Dabei darf dann die Mausbewegung nicht zu schnell sein, damit MouseMove korrekt reagiert.
Du kannst aber nicht gleichzeitig im Userform Aktionen ausführen und die Mausbewegungen am Bild auswerten. Alle Auswertungen, die du machen willst, müssen in der MouseMove-Prozedur erfolgen.
Die Ergebnisse der Auswertung kannst du dann im UF anzeigen. Evtl. kann man abhängig von MouseMove-Parametern das MouseMove-Ereignis so steuern, dass die Kontrolle an das UF übergeben wird und durch Aktionen im UF wieder aktiviert wird.
Leider funktioniert momentan das Hochgeladenen einer Datei. Deshalb nachfolgenden ein Beispiel für Userform1 mit 5 Textboxen zur Anzeige der Maus- und Tasteninfo inkl. Beispiele zur Auswertung der Parameter.
Gruß
Franz
Private Sub Image1_MouseMove(ByVal Button As Integer, ByVal Shift As Integer, _
ByVal X As Single, ByVal Y As Single)
Dim bolAusblenden As Boolean
Dim strText As String
Const dblRand As Double = 10 'Rand des Bildes, der für das Ausblenden des UF sorgt
'Werte in Public-Variablen deklariert in einem allgemeinen Modul einlesen
lngShift = Shift: lngButton = Button: dblMouseX = X: dblMouseY = Y
varCaller = "Image1"
bolAusblenden = False
With Me.Image1
Select Case X
Case Is .Width - dblRand
bolAusblenden = True
Case Else
Select Case Y
Case Is .Height - dblRand
bolAusblenden = True
End Select
End Select
End With
With UserForm1
If .Visible = True And bolAusblenden = True Then
Unload UserForm1
Else
If .Visible = False And bolAusblenden = False Then
.Show vbModeless
End If
With .TextBox1
.Value = Shift
Select Case Shift
Case 0
.BackColor = &H80000005 'weiß
Case 1 'shift gedrückt
.BackColor = &HFFFF& 'gelb
Case 2 'Strg/Ctrl gedrückt
.BackColor = &HFF& 'rot
Case 3 'shift + Strg gedrückt
.BackColor = &HFF00& 'grün
Case 4 'Alt gedrückt
.BackColor = &HFF00FF 'violett
Case 5 'shift + Altgedrückt
.BackColor = &HFFFF00 'hellblau
Case 6 'Strg+Alt gedrückt
.BackColor = &H80FF& 'gold/orange
Case 7 'shift+Strg+Alt gedrückt
.BackColor = &HFF0000 'blau
End Select
End With
With .TextBox2
.Value = Button
Select Case Button
Case 0
.BackColor = &H80000005 'weiß
Case 1 'linke Maustaste gedrückt
.BackColor = &HFFFF& 'gelb
Case 2 'rechte Maustaste gedrückt
.BackColor = &HFF& 'rot
Case 3 'linke]rechte Maustaste gedrückt
.BackColor = &HFF00& 'grün
End Select
End With
.TextBox3 = X
.TextBox4 = Y
strText = ""
Select Case X
Case Is = Me.Image1.Width / 2
strText = "rechts"
End Select
Select Case Y
Case Is = Me.Image1.Height / 2
strText = strText & "-unten"
End Select
.TextBox5 = "Image1 " & strText
End If
End With
End Sub