Ich denke, ich habe alles richtig gemacht, wie du gesagt hast... Aber soll mich keiner Fragen warum der immer noch nicht tut... Hier der gesamte Code:
'Ereignisdeklarationen:
Private Declare Function ReleaseCapture Lib "user32" () As Long
Private Declare Function SetCapture Lib "user32" (ByVal hwnd As Long) As Long
Public Event Click() ' wird ausgelöst, wenn auf den Button geklickt wird
Public Event MouseEnter() ' wird ausgelöst, wenn die Maus den Button "betritt"
Public Event MouseLeave() ' wird ausgelöst, wenn die Maus den Button verlässt
Dim MouseIn As Boolean
'Event Click() 'MappingInfo=UserControl,UserControl,-1,Click
'Event Click()
'Event Click() 'MappingInfo=UserControl,UserControl,-1,Click
'ACHTUNG! DIE FOLGENDEN KOMMENTIERTEN ZEILEN NICHT ENTFERNEN ODER VERÄNDERN!
'MappingInfo=Label1,Label1,-1,Caption
Public Property Get Caption() As String
Caption = Label1.Caption
End Property
Public Property Let Caption(ByVal New_Caption As String)
Label1.Caption() = New_Caption
PropertyChanged "Caption"
End Property
Private Sub Label2_Click()
RaiseEvent Click
End Sub
Private Sub Label2_MouseDown(Button As Integer, Shift As Integer, X As Single, _
Y As Single)
butnorm.Visible = False
buthigh.Visible = False
End Sub
Private Sub Label2_MouseUp(Button As Integer, Shift As Integer, X As Single, Y _
As Single)
butnorm.Visible = True
buthigh.Visible = True
End Sub
Private Sub UserControl_MouseMove(Button As Integer, Shift As Integer, X As _
Single, Y As Single)
Call CheckMouse(X, Y) ' Maus überprüfen
If MouseIn = True Then butnorm.Visible = False
If MouseIn = False Then butnorm.Visible = True
End Sub
'Eigenschaftenwerte vom Speicher laden
Private Sub UserControl_ReadProperties(PropBag As PropertyBag)
Label1.Caption = PropBag.ReadProperty("Caption", "FlatButton")
End Sub
'Eigenschaftenwerte in den Speicher schreiben
Private Sub UserControl_WriteProperties(PropBag As PropertyBag)
Call PropBag.WriteProperty("Caption", Label1.Caption, "FlatButton")
End Sub
'Private Sub Label1_Click()
'RaiseEvent Click
'End Sub
Private Sub UserControl_Resize()
On Error Resume Next
Width = 2130
Height = 375
End Sub
Private Sub CheckMouse(ByVal X As Single, ByVal Y As Single)
' Hier wird überprüft, ob sich die Maus innerhalb des
' Controls befindet oder eben nicht
With UserControl
If X < 0 Or Y < 0 Or X > .ScaleWidth Or Y > .ScaleHeight Then
ReleaseCapture
MouseIn = False ' außerhalb
Else
SetCapture .hwnd
MouseIn = True ' innerhalb
End If
End With
End Sub Hier die Sachen auf der Form (nach Ebene geordnet):
Label2 = Unsichtbares Label (darauf liegt das Click-Ereignis)
Label1 = Die Beschriftung des Buttons
butnorm = Bild des Buttons im normalen Zustand
buthigh = Bild des Buttons im Highlight-Zustand
butclick = Bild des Buttons im geklickten Zustand |