Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Hauptformular speichern (https://www.delphipraxis.net/5558-hauptformular-speichern.html)

eleonora 11. Jun 2003 08:52


Hauptformular speichern
 
Hallo!

Ich habe eine Hauptformular mit mehreren Radiobuttons und CheckBoxen. Das Hauptformular kann ich so einstellen das es meinen Anforderungen entspricht, d.h. wenn ich nur 4 RadioButtons von 5 brauche dann lösche ich eines davon mit einem sogenannten Konfigurationsformular. Nachdem ich alles eingestellt habe möchte ich nun das ganze Hauptformular mit sämtlichen Änderungen speichern!

Wie mache ich das?
Geht das auch mit ini-Dateien?

Danke!

Eleonora

Stanlay Hanks 11. Jun 2003 09:33

Wieso nicht. Du müsstest nur immer alles ganz genau speichern.
Wenn du z.B. 5 Checkboxen hast dann könnte deine Ini so aussehen:

[Checkbox1]
Name=Checkbox1
left=12
top=15
caption=Checkbox
parent=Form1

Phoenix 11. Jun 2003 10:13

Es gibt noch eine weitere Möglichkeit:

Du kannst ein einmal angepasstes Formular in einen Stream (TStream.ReadComponent, TStream.WriteComponent) schreiben und auch wieder aus einem Stream auslesen.

Das dürfte schneller gehen, und Du brauchst Dich um den aktuellen Status des Objektes keine Sorgen zu machen, denn es kommt genauso wieder raus, wie Du es reingeschrieben hast.

Es gibt nur ein Problem: Wenn Du die Klasse des Objektes änderst und neu compilierst kann das Programm mit einem alten de-serialisierten Objekt nichts mehr vernünftiges anfangen.

Du musst also in dem Fall die alte Klasse beibehalten, das Objekt hierhin einlesen, per Cast in das neue Objekt umwandeln, und dann wieder serialisieren - das lässt sich allerdings automatisieren.

Die Sache ist dann geschickt, wenn Du z.B. das Formular in einer Datenbank ablegen willst oder ähnliches. Zudem ist das Verfahren schneller, da das Objekt gleich in der richtigen Form geladen wird, und nicht erst anhand von INI-Einträgen jedesmal zur Laufzeit wieder neu umgebaut werden muss.

eleonora 11. Jun 2003 14:52

Hallo!

Erst einmal danke für die Hilfe!

Ich habe das jetzt mal mit der ini probiert, da ich ein paar Einstellungen mit der schon gemacht habe.

Mein Problem ist nun das es aber nicht so richtig funktionieren möchte!

Ich habe in meinem Hauptfenster 4 Checkboxen, die ich auf Visible gestellt habe. Nach dem Start des Programms öffne ich ein Fenster wo ich einstellen kann, dass auf dem Hauptformular jetzt 2 Checkboxen beim starten angezeigt werden sollen. Anschliessend möchte ich diese Einstellung im Hauptformular speichern. Das klappt allerdings nicht so richtig!

Unter Speichern schreibe ich dies:
Zitat:

ini := TiniFile.Create((extractfilepath(paramstr(0))+'era ser.ini'));
if Radiobutton.Checked
then begin
ini.writestring('Sektion1', Einstellung1', 'string');
end;
Habe das ganze auch schon mit writebool probiert!

Unter FormCreate benutze ich den Code um die ini-Datei wieder auszulesen!
Weiss jemand was falsch ist?

Danke und sorry für so viel Text!

Eleonora

eleonora 11. Jun 2003 15:16

Hallo!

Ich habe den Fehler gefunden! Es lag daran, dass ich die ini-Datei beim auslesen nicht auf false gestellt hatte!

Trotzdem Danke!!!!

Eleonora

Mario 11. Jun 2003 15:24

Delphi-Quellcode:
if Radiobutton.Checked
then begin
ini.writestring('Sektion1', Einstellung1', 'string');
end;
Beachte, wenn beim ersten Mal die Bedingung OK ist, wird der Wert geschrieben. Wenn beim zweiten Durchlauf die Bedingung dann falsch ist, wird der Wert nicht mehr geschrieben. Das ist vielleicht OK, aber in der Ini steht der Wert trotzdem noch (vom ersten Durchlauf). Und dass hast Du vielleicht nicht gewollt.


Alle Zeitangaben in WEZ +1. Es ist jetzt 18:21 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