Wie speichern Sie eigentlich Anwender-Einstellungen, die der User z.B. in einem "Einstellung-Dialog" vorgenommen hat? Hmmm... Klar - in INI-Dateien... oder auch in der Registry. Warum eigentlich nicht mit Hilfe des PropertyBag-Objekts? Hmmm... auch Klar - weil dieses viele VB-Progger gar nicht kennen. Und wenn doch, dann nur in Verbindung mit UserControls, bei denen man das PropertyBag-Objekt ja von Haus aus zum Speichern und Wiederherstellen von Einstellungen verwenden muss. Warum das PropertyBag-Objekt also nicht auch für ganz normale Einstellungen verwenden? Das "schöne" am PropertyBag-Objekt ist, dass sich beliebige Datentypen speichern lassen - also z.B. auch Bilder. Haben Sie mal versucht die Picture-Eigenschaft eines Image- oder PictureBox-Controls in einer INI-Datei oder in der Registry zu speichern? Mit dem PropertyBag-Objekt ist dies ohne Probleme möglich. Alle Einstellungen werden in einer einzigen Datei gespeichert - und können aus dieser auch wieder gelesen werden. Sie brauchen sich auch nicht darum zu kümmern, an welcher Position in der Datei, welche Einstellung steht - das alles erledigt das PropertyBag-Objekt für Sie. Nun aber (endlich) zur praktischen Anwendung des PropertyBag-Objekts. Speichern von Einstellungen ' Speichern Private Sub Properties_Save() Dim F As Integer ' Neues PropertyBag-Objekt erstellen Dim myPropBag As New PropertyBag ' Einstellungen zunächst im PropertyBag-Objekt speichern With myPropBag .WriteProperty "UserName", txtUserName.Text, "" .WriteProperty "UserID", Val(txtUserID.Text), 0 .WriteProperty "UserPic", picUser.Picture, Nothing End With ' Jetzt den Inhalt des PropertyBags speichern ' Falls die Datei existiert - vorher löschen! If Dir$(App.Path & "\user.dat", vbNormal) <> "" Then _ Kill App.Path & "\user.dat" F = FreeFile Open App.Path & "\user.dat" For Binary As #F Put #F, , myPropBag.Contents Close #F End Sub Wie Sie am obigen Code sehen, wird über die WriteProperty-Methode eine Einstellung im PropertyBag-Objekt gespeichert. Der erste Parameter bestimmte den Namen, über den Sie dann später die Einstellung wieder den Controls oder Variablen zuweisen können. Der zweite Parameter legt den zu speichernden Inhalt fest. Hierbei kann es sich um einen beliebigen Datentyp handeln. Der dritte Parameter ist optional und legt den Default-Wert (Standard-Wert) der Einstellung fest. Die Angabe ist dahingehend nützlich, dass die Einstellung nur dann gespeichert wird, wenn Sie vom Default-Wert abweicht. Ist das PropertyBag mit allen Daten gefüllt, so kann dieses über seine Contents-Eigenschaft in eine Datei gespeichert werden. Aber Achtung! Die Datei muss im binären Format geöffnet werden, da ein späteres Einlesen sonst zu einem Laufzeitfehler führt! Lesen der Einstellung ' Lesen Private Sub Properties_Load() Dim F As Integer Dim vInhalt As Variant ' Neues PropertyBag-Objekt erstellen Dim myPropBag As New PropertyBag ' Datei-Inhalt einlesen If Dir$(App.Path & "\user.dat", vbNormal) <> "" Then F = FreeFile Open App.Path & "\user.dat" For Binary As #F Get #F, , vInhalt Close #F ' Inhalt dem PropertyBag-Objekt zuweisen myPropBag.Contents = vInhalt ' Einstellungen den Controls zuweisen With myPropBag txtUserName.Text = .ReadProperty("UserName", "") txtUserID.Text = CStr(.ReadProperty("UserID", 0)) Set picUser.Picture = .ReadProperty("UserPic", Nothing) End With End If End Sub Fazit:Das PropertyBag-Control eignet sich hervorragend, um Anwender- oder Anwendungseinstellungen zu speichern - vor allem, wenn es sich um Einstellungen verschiedener Datentypen handelt (wie Bilder, oder ähnliches). Dieser Tipp wurde bereits 28.772 mal aufgerufen. Voriger Tipp | Zufälliger Tipp | Nächster Tipp
Anzeige
Diesen und auch alle anderen Tipps & Tricks finden Sie auch auf unserer aktuellen vb@rchiv Vol.6 (einschl. Beispielprojekt!) Ein absolutes Muss - Geballtes Wissen aus mehr als 8 Jahren vb@rchiv! - nahezu alle Tipps & Tricks und Workshops mit Beispielprojekten - Symbol-Galerie mit mehr als 3.200 Icons im modernen Look Weitere Infos - 4 Entwickler-Vollversionen (u.a. sevFTP für .NET), Online-Update-Funktion u.v.m. |
sevWizard für VB5/6 Professionelle Assistenten im Handumdrehen Erstellen Sie eigene Assistenten (Wizards) im Look & Feel von Windows 2000/XP - mit allem Komfort und zwar in Windeseile :-) Tipp des Monats Oktober 2024 Heinz Prelle Firewall-Status unter WinXP/Vista prüfen Das Beispiel prüft, ob die Firewall unter Windows XP/Vista eingeschaltet ist oder nicht. Zudem wird eine Abfrage durchgeführt ob es sich bei dem zugrundeliegenden Betriebssystem um Windows XP/Vista handelt oder nicht. Access-Tools Vol.1 Über 400 MByte Inhalt Mehr als 250 Access-Beispiele, 25 Add-Ins und ActiveX-Komponenten, 16 VB-Projekt inkl. Source, mehr als 320 Tipps & Tricks für Access und VB |
||||||||||||||||
Microsoft, Windows und Visual Basic sind entweder eingetragene Marken oder Marken der Microsoft Corporation in den USA und/oder anderen Ländern. Weitere auf dieser Homepage aufgeführten Produkt- und Firmennamen können geschützte Marken ihrer jeweiligen Inhaber sein. |