Hab den Dialog jetzt mit ins Projekt eingefügt, allerdings fehlt dazu noch eine Demo
(aber da gibt's ja weiter oben wenigstens ein paar Beispiele)
Die meißten Änderungen gab es vorallem in den Tools, wo die eine Klasse nun so aussieht:
Delphi-Quellcode:
TXMLProjectOptions = Class
Constructor Create;
Destructor Destroy;
Property AutorOrCompany: String;
Property Project: String;
Property OptionsVersion: String;
Property AllowedLocations: TXMLPOLocations;
Property FileName: TWideString;
Property Protection: AnsiString;
Function ExistingLocations: TXMLPOLocations;
Function PossibleLocations: TXMLPOLocations;
Function Open: Boolean;
Function Open (Location: TXMLPOLocation): Boolean;
Property ActiveLocation: TXMLPOLocation;
Property ReadOnly: Boolean;
Procedure BeginUpdate;
Property Value [Name: String]: Variant;
Property ValueFmt [Name: String; Fmt: Variant]: Variant;
Procedure SaveObject (Name: String; Value: TObject);
Procedure LoadObject (Name: String; Value: TObject);
Property Protect [Name: String]: Boolean;
Function Exists (Name: String): Boolean;
Function GetValueDef (Name: String; Default: Variant): Variant;
Function GetValueDef (Name: String; Default, Min, Max: Variant): Variant;
Function TryGetValue (Name: String; Var Value: Variant): Boolean;
Function TryLoadObject(Name: String; Value: TObject): Boolean;
Procedure DeleteValue (Name: String);
Procedure EndUpdate;
Procedure Save (Location: TXMLPOLocation; DeleteOther: Boolean);
Procedure Close;
Procedure Delete (Location: TXMLPOLocation);
Procedure DeleteAllOptionFiles;
Property OnSelectLocation: TXMLPOSelectLocation;
Property OnException: TXMLPOErrorProc;
Function GetPath (Location: TXMLPOLocation): String;
Property Tag: Integer;
End;
Vorallem die ...Def- und Try...-Funktionen würden überarbeitet/erweitert und es gab Änderungen in der Verzeichnisbehandlung.
Delphi-Quellcode:
Self.Left := Options.GetValueDef('window\left', Left);
ComboBox1.ItemIndex := Options.GetValueDef('view', 1, 0, ComboBox1.Items.Count - 1);
Als nächstes wird der
SAX-Parser überarbeitet
und es wird eine Umkehrklasse dazu entstehen, also so das man auch sehr sehr große
XML-Dateien effektiv erstellen kann.
[add]
Options.ValueFmt['directory\name%d', i]
hatte ich vergessen zu erwähnen ... dort kann man einen Parameter (aktuell leider nur String oder Integer) angeben, welcher dann via Format eingefügt wird ... wollte mir damit etwas das Leben erleichtern, da ich vorher soetwas hatte
Options.ValueFmt['directory\name' + IntToStr(i)]