Difference between revisions of "Storing collections in property bags"
From HashVB
m (Changed to a VB6 article) |
|||
(One intermediate revision by one user not shown) | |||
Line 1: | Line 1: | ||
− | {{ | + | {{VB6}} |
This is a very brief sample of how to store collections of objects in a property bag. This is most of use in custom controls. | This is a very brief sample of how to store collections of objects in a property bag. This is most of use in custom controls. | ||
Line 48: | Line 48: | ||
Another approach is to write each property of all the sub classes in the control. Unfortunately, this leads to hideous naming schemes. Using the method described above, each object is self contained. | Another approach is to write each property of all the sub classes in the control. Unfortunately, this leads to hideous naming schemes. Using the method described above, each object is self contained. | ||
+ | |||
+ | When this propertybag is finally stored in your form file, it will appear as: | ||
+ | |||
+ | Begin CCTabStrip.TabStrip TabStrip1 | ||
+ | Height = 2055 | ||
+ | Left = 240 | ||
+ | TabIndex = 3 | ||
+ | Top = 240 | ||
+ | Width = 4095 | ||
+ | _ExtentX = 7223 | ||
+ | _ExtentY = 3625 | ||
+ | BeginProperty Tabs {14A86EAB-1F15-4CAF-8047-A847E3230E70} | ||
+ | TabCount = 2 | ||
+ | BeginProperty Tab1 {C9FCBE2F-471D-4B4F-8A37-9332B4FC63E5} | ||
+ | Caption = "Tab strip" | ||
+ | EndProperty | ||
+ | BeginProperty Tab2 {C9FCBE2F-471D-4B4F-8A37-9332B4FC63E5} | ||
+ | Caption = "New tab" | ||
+ | EndProperty | ||
+ | EndProperty | ||
+ | End |
Latest revision as of 00:55, 13 June 2006
This article is based on Visual Basic 6. Find other Visual Basic 6 articles. |
This is a very brief sample of how to store collections of objects in a property bag. This is most of use in custom controls.
In the control itself:
Private Sub UserControl_ReadProperties(PropBag As PropertyBag) Set IntTabs = PropBag.ReadProperty("Tabs", IntTabs) End Sub Private Sub UserControl_WriteProperties(PropBag As PropertyBag) PropBag.WriteProperty "Tabs", IntTabs End Sub
Seeing as I create wrapper classes for my collections, heres what the wrapper does when told to "store" itself:
Private Sub Class_ReadProperties(PropBag As PropertyBag) Dim Count As Long Dim Index As Long Dim NewTab As CCTabStrip.Tab Count = PropBag.ReadProperty("TabCount", 0) For Index = 1 To Count Set NewTab = PropBag.ReadProperty("Tab" & CStr(Index)) IntTabs.Add NewTab Next End Sub Private Sub Class_WriteProperties(PropBag As PropertyBag) Dim Index As Long PropBag.WriteProperty "TabCount", IntTabs.Count For Index = 1 To IntTabs.Count PropBag.WriteProperty "Tab" & CStr(Index), IntTabs(Index) Next End Sub
I can then rely on each Tab object to write out its own stuff:
Private Sub Class_ReadProperties(PropBag As PropertyBag) Caption = PropBag.ReadProperty("Caption", "") Set Image = PropBag.ReadProperty("Image", Nothing) End Sub Private Sub Class_WriteProperties(PropBag As PropertyBag) PropBag.WriteProperty "Caption", Caption PropBag.WriteProperty "Image", Image End Sub
Another approach is to write each property of all the sub classes in the control. Unfortunately, this leads to hideous naming schemes. Using the method described above, each object is self contained.
When this propertybag is finally stored in your form file, it will appear as:
Begin CCTabStrip.TabStrip TabStrip1 Height = 2055 Left = 240 TabIndex = 3 Top = 240 Width = 4095 _ExtentX = 7223 _ExtentY = 3625 BeginProperty Tabs {14A86EAB-1F15-4CAF-8047-A847E3230E70} TabCount = 2 BeginProperty Tab1 {C9FCBE2F-471D-4B4F-8A37-9332B4FC63E5} Caption = "Tab strip" EndProperty BeginProperty Tab2 {C9FCBE2F-471D-4B4F-8A37-9332B4FC63E5} Caption = "New tab" EndProperty EndProperty End