![]() |
Formzustand wiederherstellen
Hallo,
Häufiger habe ich die Situation, daß ich einen Dialog, nach dem Drücken auf "Abbrechen" wieder in den OK-Zustand (= Zustand der letzten Bestätigung per OK-Button) versetzen möchte.. Also nicht in seinen Ausgangszustand, sondern in den den er hatte nachdem OK gedrückt wurde. Zur Verdeutlichung: Stellt euch einen Suchdialog vor, wo man Sachen einstellt, Z.B. "Suchen ab Textanfang", "Rückwärtssuche", "Ganze Wörter" etc. Wenn ich jetzt auf "Abbrechen" drücke sollten die Radiobuttons bzw. Checkboxen wiederhergestellt werden. Drücke ich aber auf "Okay" sollten die Werte als Zustand gespeichert werden. Öffne ich nun wieder erneut den Suchendialog, und stelle etwas um, dann soll nach dem Abbrechen der vorherige "OK-Zustand" wiederhergestellt werden. Mein Problem hierbei ist, daß ich das nicht für jeden Dialog machen möchte: sprich Variablen definieren, für jedes einzelne Control den Zustand merken und im richtigen Moment wiederherstellen. Ich habe schon einiges versucht aber keine allgemeine Lösung hinbekommen. Ideen? |
Re: Formzustand wiederherstellen
Du könntest alle Komponenten auf der Form durchiterieren und dann alles, was du benötigst (Caption, Zustände der Radiobuttons etc.), z.B. in einer Ini speichern. Du könntest z.B. die Eigenschaften dieser Komponenten jeweils in eine Sektion dieser Ini schreiben.
Danach lädst du alles wieder aus der Ini heraus. Du musst natürlich den Namen und evtl. auch den Typ der Komponenten speichern. Dann kannst du z.B. so wieder die alten Zustände erzeugen:
Delphi-Quellcode:
Aber so richtig elegant ist das wohl auch noch nicht. Aber eine Möglichkeit :)
(FindComponent('Button1') as TButton).Caption := 'Test';
|
Re: Formzustand wiederherstellen
Wenn ich dich richtig verstanden habe, kannst du einfach die Form beim Klick auf OK streamen und nach Abbrechen die Properties wieder zurücksetzen.
![]() Am Besten leitest du einmalig eine Klasse, die diese Funktionalität bietet, von TForm und davon alle anderen Dialoge ab. [add] Zitat:
[/add] |
Re: Formzustand wiederherstellen
wie gibt man dem OK-Button aber den Focus wenn das Formular nicht sichtbar ist? Wenn so ein Formular neu kreiert wurde hat automatisch das erste Control den Focus. Wenn der Focus umgetzt wurde und man das Formular schließt kann man aber nicht einfach wieder dem ersten Control den Focus geben.
|
Re: Formzustand wiederherstellen
was das Speichern eines Forms betrifft, gibt es bei den RXComponents eine Namens FormStorage.
Diese speichert soweit ich das sehe, Sachen wie state, Aktives Control und so in einer IniDatei. |
Re: Formzustand wiederherstellen
@Khabarakh:
Das mit dem Streamen habe ich mir auch überlegt, geht aber leider nicht: Ein Problem ist z.B. daß Standardwerte für Eigenschaften nicht gespeichert werden und daher auch nicht wiederhergestellt werden können. Z.B. ein TEdit ohne Caption speichert nicht einen leeren string, sondern gar nichts in den Stream. Um die Standardwerte zu erhalten muß ich also den Dialog neu erstellen, aber dann gehen mir andere Informationen verloren die ich in der Forminstanz gespeichert habe. FormStorage schaue ich mir mal an. [edit]Ist leider (wie in der JVCL, haben die wohl von der RXLib) nur eine "Komfortklasse". Aber im Prinzip muß man immernoch alle Eigenschaften per Hand angeben.[/edit] |
Alle Zeitangaben in WEZ +1. Es ist jetzt 02:50 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