AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Hauptformular speichern

Ein Thema von eleonora · begonnen am 11. Jun 2003 · letzter Beitrag vom 11. Jun 2003
Antwort Antwort
eleonora

Registriert seit: 24. Jan 2003
80 Beiträge
 
#1

Hauptformular speichern

  Alt 11. Jun 2003, 09:52
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
  Mit Zitat antworten Zitat
Benutzerbild von Stanlay Hanks
Stanlay Hanks

Registriert seit: 1. Mär 2003
2.078 Beiträge
 
Delphi 2005 Professional
 
#2
  Alt 11. Jun 2003, 10: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
  Mit Zitat antworten Zitat
Benutzerbild von Phoenix
Phoenix
(Moderator)

Registriert seit: 25. Jun 2002
Ort: Hausach
7.639 Beiträge
 
#3
  Alt 11. Jun 2003, 11: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.
Sebastian Gingter
Phoenix - 不死鳥, Microsoft MVP, Rettungshundeführer
Über mich: Sebastian Gingter @ Thinktecture Mein Blog: https://gingter.org
  Mit Zitat antworten Zitat
eleonora

Registriert seit: 24. Jan 2003
80 Beiträge
 
#4
  Alt 11. Jun 2003, 15: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
  Mit Zitat antworten Zitat
eleonora

Registriert seit: 24. Jan 2003
80 Beiträge
 
#5
  Alt 11. Jun 2003, 16: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
  Mit Zitat antworten Zitat
Mario

Registriert seit: 7. Apr 2003
567 Beiträge
 
Delphi 2006 Enterprise
 
#6
  Alt 11. Jun 2003, 16: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.
Schöne Grüße,
Mario Noack
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 18:22 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz