Sign in Join
Wiki copytemporary

TXMLPropStorage/de

Deutsch · English · Español · Français · Polski · Português · Русский

Einleitung

TXMLPropStorage ist eine Komponente, um ausgewählte Eigenschaften zu speichern / wiederherzustellen (entweder von TForm oder jedem Bedienelement darauf). Sie arbeitet mit der TForm.SessionProperties Eigenschaft. Zu finden ist sie auf dem Tab Misc in der Komponentenpalette.

Verwendung

  1. Legen Sie eine TXMLPropStorage Komponente auf dem Formular ab und setzen Sie die Eigenschaft Dateiname, zum Beispiel auf: session.xml
  2. Öffnen Sie das Bearbeitungsfenster der SessionProperties Eigenschaft von TForm im Objektinspektor.
  3. Fügen Sie hier Eigenschaften des Formulars und/oder Bedienelemente hinzu, die in session.xml gespeichert werden sollen.
  4. Kompilieren Sie die Anwendung.

Ihre Anwendung wird jetzt die ausgewählte Eigenschaft von session.xml lesen und zur Laufzeit anwenden (wie Width, Height, Left, Top für TForm).

TINIPropStorage funktioniert auf die selbe Weise wie TXMLPropStorage, ausgenommen dass die Sessioninformation in einer INI-Datei gespeichert werden.

StoredValues Eigenschaft

TINIPropStorage und TXMLPropStorage haben die Eigenschaft StoredValues, die einige Werte sichert (Es ist sinnvoll, keine andere Konfigurationsdateien zu benutzen).

Schreiben wir doch eine einfache Demo dazu:

pascal
CheckGroup1.Checked[0] := StrToBool(XMLPropStorage1.StoredValue['item0_checked']);
pascal
XMLPropStorage1.StoredValue['item0_checked'] := BoolToStr(CheckGroup1.Checked[0]);

Sie können die Eigenschaft Key von StoredValues.Items[n] ändern, wenn Sie vertrauliche Informationen speichern wollen. (Dabei werden die Funktionen XOREncode und XORDecode der RTL zum Speichern und Laden verwendet).

Property Storage auf Frames

TXMLPropStorage funktioniert nur auf Formularen automatisch. Um es auf Frames einzusetzen, müssen einige Zeilen Code eingefügt werden.

pascal
constructor TFrame1.Create(TheOwner: TComponent);
begin
  inherited Create(TheOwner);
  SessionProperties := 'Panel1.Width;Panel3.Width';
  XMLPropStorage1.RootNodePath := 'TApplication/Frame1'; // wenn das Frame mehrfach verwendent wird und die Einstellungen nicht identisch sein sollen, setzen Sie hier für jede Instanz einen eigenen Namen
  XMLPropStorage1.Restore;
end;

destructor TFrame1.Destroy;
begin
  XMLPropStorage1.Save;
  inherited Destroy;
end;

Anmerkungen

TXMLPropStorage hat einen Vorgabe-Handler, wenn Sie keinen Dateinamen festlegen. Unter Windows werden die Einstellungen im Anwendungsverzeichnis als PROGRAMNAME.xml gespeichert.

Unter Unix/Linux/macOS werden sie im Home-Verzeichnis des aktuellen Benutzers als .PROGRAMNAME gespeichert.

Es ist daher eine gute Idee, den Dateinamen für Unix-Programme leer zu lassen, die durch normale Benutzer gestartet zu werden.

Ein Fehlerbericht 13949, note 28856 bemerkt: "The StoredValues[] array can only be used during the OnRestoreProperties or OnSaveProperties events. Outside these events, the values will not be stored." and "If you want to save/load values that are not published properties of a component or control, you should save them in a OnSaveProperties event, and load them using the OnRestoreProperties event."

Siehe auch

Hardware Access


From the Free Pascal wiki, page "TXMLPropStorage/de", as it stood on 2022-04-20 after a change by Socke, out of the wiki's dump of 2024-05-26. Copyright stays with the author who wrote it, according to the old wiki's Licensing page. If you have concerns about this material, message the admin.

Revision 1, last changed by WikiArchive .

Talk about this page

Nobody has opened a bench for this page yet. Sign in to open one.