Tjena! Du kan lösa det på följande sätt:commonbutton
I ett formulär kan man lägga commonbutton i en array så att alla har samma namn med skiljer sig åt via index och caption. hur gör man det om man skapat knapparna i en class
class
dim withEvent Button() as commonButton går inte
Eller är det bättre att skapa knapparna i ett formulär. För fördelen med att skapa knapparn i classen är att man kan styra vilka knappar classen ska svara på?? Sv: commonbutton
<code>
'Class: clsReciver
Option Explicit
Public Sub Click(Index As Long)
MsgBox "Knapp: " & Index
End Sub
'Class: clsButton
Option Explicit
Public WithEvents Button As VB.CommandButton
Public EventReciver As clsReciver
Public Index As Long
Private Sub Button_Click()
EventReciver.Click Index
End Sub
'Form: Form1
Option Explicit
Private mReciver As clsReciver
Private mCollection As Collection
Private Sub Form_Load()
Dim Index As Long
Dim Button As clsButton
Set mReciver = New clsReciver
Set mCollection = New Collection
For Index = 1 To 10
Set Button = New clsButton
Set Button.Button = AddButton(Index)
Set Button.EventReciver = mReciver
Button.Index = Index
mCollection.Add Button
Next
End Sub
Private Function AddButton(Index As Long) As CommandButton
Set AddButton = Controls.Add("VB.CommandButton", "Knapp" & Index)
AddButton.Top = AddButton.Height * (Index - 1)
AddButton.Caption = "Knapp " & Index
AddButton.Visible = True
End Function
Private Sub Form_Unload(Cancel As Integer)
Set mCollection = Nothing
End Sub
</code>
Anledning till att jag inte laggt mCollection i classen clsReciver är för att detta skulle skapa en cirkulärreferens om den innehöll några objekt som var bundna till sig.