![]() |
[TSettings] Einstellungen speichern - der einfache Weg
Hi!
Hier wollen wir euch eine neue Entwicklung vorstellen: die Settings-Komponenten. Für die, die es ganz eilig haben: Den Download-Link gibts unter "Wie installiert man das?". Warum könnte mich das interessieren? Die Settings-Komponenten bieten folgende Vorteile/Features:
Wie funktionierts? Als Grundlage braucht meine eine TSettingsXXX - Komponente. Am besten, wir gehen das an einem Beispiel durch. Nehmen wir mal an, ich will meine Settings in einer XML-Datei speichern. Also droppe ich eine TSettingsXMLFile irgendwo (bei mehreren Formularen idealerweise auf einem Datenmodul). Als nächstes setzt man die Filename-Property. Das kann im Objektinspektor oder per Code erfolgen. Hier mein Vorschlag:
Delphi-Quellcode:
Für den obigen Code (das bestimmen des APPData-Verzeichnisses) muss man noch die Units ShlObj und
procedure TForm1.FormCreate(Sender: TObject);
begin SettingsXMLFile1.FileName := IncludeTrailingPathDelimiter(GetShellFolder(CSIDL_APPDATA)) + 'settings.xml'; if FileExists(SettingsXMLFile1.FileName) then SettingsXMLFile1.Load; end; ![]() Am Ende, also beim schliessen des Programms, sollte man natürlich die Einstellungen auch wieder wegschreiben.
Delphi-Quellcode:
Ok, jetzt sollte man natürlich auch etwas in die Settings reinschreiben:
procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin SettingsXMLFile1.Save; end;
Delphi-Quellcode:
Wie man sieht, werden alle Settings per Pfad referenziert. So ein Pfad beginnt immer mit einem Slash.
procedure TForm1.FormShow(Sender: TObject);
const LastRunPath = '/Application/LastRun'; begin if SettingsXMLFile1.Exists(LastRunPath) then Caption := 'Last run: ' + DateTimeToStr(SettingsXMLFile1.GetValue(LastRunPath, null)); SettingsXMLFile1.SetValue(LastRunPath, Now); end; Ok, ich seh ein, das das ein wenig trivial ist. :) Viel wichtiger sind für den Endbenutzer ja z.B. die Postion des Formulars, dessen Größe und dergleichen. Aber anstatt dies per Hand/Code in die Settings zu schreiben, machen wir uns das Leben ein wenig leichter und droppen eine TSettingsLinkForm auf das zu speichernde Formular. TSettingsLinks dienen dazu, Komponenten mit einem TSettingsXXX-Object zu verbinden, um Eigenschaften der Komponenten zu speichern bzw. zu laden. Jetzt müssen wir noch den Link mit den Settings verknüpfen (Eigenschaft "Settings") und dem SettingsLink sagen, für welche Eigenschaften des Formulars er verantwortlich ist (Eigenschaft "SaveProperties"). In diesem Fall würde ich "Top, Left, Width und Height" vorschlagen. Fertig. Das wars schon. Einfach das Testprogramm starten und wenn ihr alles so gemacht habt wie ich, sollte das Fenster immer wieder an der gleichen Stelle erscheinen. Für andere Komponenten gibt es dann entweder spezielle Links (z.B. TSettingsLinkVST, TSettingsLinklistView) bzw. einen Standard-Link TSettingsLinkComponent für alles, was von TComponent abegleitet ist. Wie installiert man das? Als erstes musst du dir die Sourcen besorgen. Das geht per SVN von ![]() ![]() Je nachdem, ob man den VirtualTree nutzt installiert man alle 4 Packages aus dem Projects-Verzeichnis oder nur die 2 Basisprojekte. Alle Abhängigkeiten sollten sich innerhalb des Repositories lösen lassen (siehe ![]() ![]() Offiziell wird zu Zeit Delphi 2006 & 2007 unterstützt. Aber mit eine wenig Einsatz, sollte es in den meisten anderen Versionen auch laufen. Was gibts noch?
Wie gehts weiter? Das ganze Projekt befindet sich noch in Entwicklung. Wer Vorschläge hat, kann sie gern hier oder als SVN-Patch (mit Kommentar bitte :)) unterbreiten. Viel Spass. |
Re: [TSettings] Einstellungen speichern - der einfache Weg
Naja,
ich finde es sehr umständlich wenn man mal überlegt wie einfach es doch mit INI-Files geht :hi: |
Re: [TSettings] Einstellungen speichern - der einfache Weg
Zitat:
Wie lange brauchst du, um den Code zu schreiben, der die Formularposition in eine Ini schreibt und wieder aus ihr lädt? 2 Minuten? Mit den Settings-Komponenten brauchst du nur 10-20 Sekunden. Ich glaube das ist weniger umständlich. Und außerdem: Unterstützen Ini-Files reguläre Ausdrücke? Nein. Kann ich ohne den Code zu verändern anstatt in eine Ini in einen Stream speichern, den ich dann in die Datenbank schiebe? Nein. Erlauben Ini-Files die Kaskadierung von Einstellungen? Nein. |
Re: [TSettings] Einstellungen speichern - der einfache Weg
Was beinhaltet GDIPlusSupport? Nur der GDIPlus-Wrapper?
|
Re: [TSettings] Einstellungen speichern - der einfache Weg
Eigentlich ja.
Wo brauchst du das denn? Bei mir heißen das GDI-Package "GDIPlus100". *wunder* //Fehler gefunden. Ja, das ist das offizielle GDI-Package von ![]() |
Re: [TSettings] Einstellungen speichern - der einfache Weg
Habe mir mal die Libraries gezogen. Beim Testen wurde dann von PNGSupport das fehlende Package angemahnt
[Edit: Das liegt mir vor ;-)] |
Re: [TSettings] Einstellungen speichern - der einfache Weg
Dann ist es wohl wieder mal eine Disharmonie der Package-Namen. :)
|
Re: [TSettings] Einstellungen speichern - der einfache Weg
Hi,
würde mir ja gern die Sachen mit SVN ziehen, jedoch wie sind die Zugangsdaten für TortoiseSVN? Die 'Settings.zip' ist ja leider leer und alle Dateien einzeln mit 'Ziel speichern unter' ziehen mach kein Spaß. Gruß |
Re: [TSettings] Einstellungen speichern - der einfache Weg
Zitat:
|
Re: [TSettings] Einstellungen speichern - der einfache Weg
Danke
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 05:30 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz