AW: Control-Objekt in einer Klasse erzeugen
23.09.2023 09:40:36
Speedy77
Hallo Thorsten,
erst einmal danke für Deine Antwort...
Hintergrund ist die Erstellung einer Progressbar die auf einem Frame basiert.
Ich bin meinem Ziel aber schon ein ganzes Stück näher gekommen. Mein Problem war nur der Zeitpunkt für die Zuordnung der Eigenschaften....
prinzipiell sieht meine fertiges Konstrukt jetzt so aus...
Im Klassenmodul:
Option Explicit
Private Progressbar As MSForms.frame
Private myPBLab As MSForms.Label
Private Sub CreateLabel()
Set myPBLab = Progressbar.Controls.Add( _
"Forms.Label.1", _
"ShowValue", _
True)
With Progressbar
.BackColor = RGB(255, 255, 255)
.BorderColor = 0
.borderStyle = fmBorderStyleSingle
.Caption = ""
.KeepScrollBarsVisible = fmScrollBarsNone
.ScrollBars = fmScrollBarsNone
.SpecialEffect = fmSpecialEffectFlat
End With
With myPBLab
.borderStyle = fmBorderStyleNone
.Caption = 100
.Top = 2
.Left = 2
.Height = Progressbar.Height - 8
.Width = Progressbar.Width - 9
.BackColor = RGB(50, 50, 255)
.Font.Name = "Candara"
.Font.Size = .Height - (Int(.Height / 10) + 2)
.ForeColor = RGB(255, 255, 10)
.SpecialEffect = fmSpecialEffectFlat
.textAlign = fmTextAlignLeft
.WordWrap = False
End With
End Sub
Public Property Set ProgressRahmen(ByRef new_Frame As MSForms.frame)
Set Progressbar = new_Frame
CreateLabel
End Property
Public Property Get PB_Top() As Integer
Top = Progressbar.Top
End Property
Public Property Let PB_Top(ByVal new_Top As Integer)
Progressbar.Top = new_Top
End Property
In der Userform bei der Initialisierung:
Option Explicit
Public my_ProgBar As cls_Progress
Private Sub UserForm_Initialize()
Set my_ProgBar = New cls_Progress
Set my_ProgBar.ProgressRahmen = Frame1
End Sub
und der Aufruf im Programm erfolgt dannn ganz normal beim laden der Userform...