egroups / Form-Data-XML-Store-Helper

A simple form data store to xml helper for Delphi

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

A simple form data to xml store helper for Delphi.
Copyright (C) 2018 by Alexey Kolesnikov.
Email: ak@blu-disc.net
Website: https://blu-disc.net

You can use this software for whatever you want.


Usage:

  Create, add property names for storing, call Save/Load.
  Optionally you can make some actions before restoring (OnLoad event called after xml loaded, before restoring)
  and before saving (OnSave event called after xml created, before saving). Both methods give you the form root node.

  Property name can be:
    - Simple property name, like ItemIndex, Checked, Value, Text, etc.
    - ControlName|Property, like ComboBox1|Text
    - ClassName.Property, like TMemo.Lines

  You can store properties using three groups:
    - Required group: stores property always if found.
    - Custom group: stores the property by calling the specified procedure (TFormDataXmlStorePropProc).
    - Optional group: stores this property only if nothing has been found in the Required and Custom lists for this control.


Example of usage:

  XmlStore := TFormDataXmlStore.Create(aForm);
  XmlStore.OnLoad := XmlStore_OnLoad; // optional
  XmlStore.OnSave := XmlStore_OnSave; // optional
  XmlStore.AddPropertyRequired('Checked');   // will store Checked for all controls that have it
  XmlStore.AddPropertyRequired('ItemIndex'); // will store ItemIndex for all controls that have it
  XmlStore.AddPropertyRequired('cmbProjectLangCode|Text'); // will store Text for cmbProjectLangCode
  XmlStore.AddPropertyCustom('TMemo.Lines', XmlStoreMemoLines); // will store Lines for all TMemo using XmlStoreMemoLines procedure
  XmlStore.AddPropertyOptional('Text'); // will store Text for all controls that have it, and does not have anything from other lists

  ...

  XmlStore.Save(FileName);

  ...

  XmlStore.Load(FileName);

  ...

  procedure XmlStoreMemoLines(Control: TControl; Node: IXMLNode; XmlStoreCommand: TFormDataXmlStoreCommand);
  begin
    if XmlStoreCommand = apcSave then
      Node.AddChild('Lines').NodeValue := TMemo(Control).Lines.Text
    else
      TMemo(Control).Lines.Text := VarToStr(Node.ChildNodes['Lines'].NodeValue);
  end;

  ...

  procedure TfrmWizard.XmlStore_OnLoad(RootNode: IXMLNode);
  begin
    if RootNode.HasAttribute('ProjectFolder') then
      ProjectFolder := RootNode.Attributes['ProjectFolder'];
  end;

  procedure TfrmWizard.XmlStore_OnSave(RootNode: IXMLNode);
  begin
    RootNode.Attributes['ProjectFolder'] := ProjectFolder;
  end;

About

A simple form data store to xml helper for Delphi


Languages

Language:Pascal 100.0%