Hallo Markus,
ich habe nicht wirklich Zeit und die Nerven um das ganze nun mal zu testen. Aber mal nen kleiner Ausschnitt der dir weiterhelfen sollte:
Hinweis: Beim Setzen von Eigenschaftswerten, d.h. in der Property Let - Prozedur, müssen Sie das Control davon benachrichtigen. Verwenden Sie dazu die property Changed Methode, dies ist für das spätere Speichern wichtig.
Bsp:
Public Property Let Backcolor(Byval NewValue as long)
m\_backcolor=NewValue
Usercontrol.Backcolor=NewValue
PropertyChanged "Backcolor"
End Property
Speichern der Eigenschaftswerte
Was passiert mit dem eingestellten Wert der Eigenschaft, wenn der Entwurfsmodus beendet wird?
Wie nicht anders zu erwarten gibt es da eine Antwort und die heisst Usercontrol_WriteProperties. Dabei handelt es sich um ein UserControl spezifisches Ereignis, das beim Anwender immer dann eintritt, wenn der Entwurfsmodus verlassen wird. Der eigentliche Wert der Eigenschaft kann in dieser Ereignisprozedur in ein PropertyBag geschrieben werden. Verwenden sie dazu die WriteProperty - Methode.
Bsp.:
Private Sub Usercontrol\_WriteProperties(Probbag as PropertyBag)
ProbBag.WriteProperty "Backcolor",m\_Backcolor
end sub
Unter dem gleichen Namen können sie den Wert der Eigenschaft wiueder auslesen, wenn das REadproperty - Ereignis auftritt.
(Eintritt in den Entwurfsmodus oder Programmstart)
Bsp.:
Private Sub Usercontrol\_ReadProperties(Probbag as Propertybag)
m\_Backcolor=Propbag.readproperty("Backcolor")
usercontrol.backcolor=m\_Backcolor)
end sub
Über das InitProperties - ereignis lassen sich zusaetzlich Default Werte festlegen, die beim einfügen der Komponente gesetzt werden.
Bsp.:
private Sub Usercontrol\_InitProperties()
m\_backcolor=qbcolor(12)
end sub
Wenn du dir nun dein Source anschaust und den hier siehst du das versuchst den wert über readProperties auszulesen, du ihn aber nicht gespeichert hast! Somit wirst du nie den neuen Wert bekommen.
Ändere mal deinen Source entsprechend ab und du wirst sehen das es geht *zwinker*
MfG Alex