AGB  ·  Datenschutz  ·  Impressum  







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

Formzustand wiederherstellen

Ein Thema von mael · begonnen am 4. Jan 2006 · letzter Beitrag vom 4. Jan 2006
Antwort Antwort
Benutzerbild von mael
mael

Registriert seit: 13. Jan 2005
391 Beiträge
 
Delphi XE3 Professional
 
#1

Formzustand wiederherstellen

  Alt 4. Jan 2006, 17:45
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?
HxD, schneller Hexeditor:
http://mh-nexus.de/hxd
  Mit Zitat antworten Zitat
Alexander

Registriert seit: 28. Aug 2002
Ort: Oldenburg
3.513 Beiträge
 
Turbo Delphi für .NET
 
#2

Re: Formzustand wiederherstellen

  Alt 4. Jan 2006, 18:11
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:
  (FindComponent('Button1') as TButton).Caption := 'Test'; Aber so richtig elegant ist das wohl auch noch nicht. Aber eine Möglichkeit
Alexander
  Mit Zitat antworten Zitat
Benutzerbild von Khabarakh
Khabarakh

Registriert seit: 18. Aug 2004
Ort: Brackenheim VS08 Pro
2.876 Beiträge
 
#3

Re: Formzustand wiederherstellen

  Alt 4. Jan 2006, 18:12
Wenn ich dich richtig verstanden habe, kannst du einfach die Form beim Klick auf OK streamen und nach Abbrechen die Properties wieder zurücksetzen.
http://www.delphipraxis.net/internal...=481051#481051
Am Besten leitest du einmalig eine Klasse, die diese Funktionalität bietet, von TForm und davon alle anderen Dialoge ab.

[add]
Zitat:
Aber so richtig elegant ist das wohl auch noch nicht.
Jupp
[/add]
Sebastian
Moderator in der EE
  Mit Zitat antworten Zitat
Benutzerbild von SirThornberry
SirThornberry
(Moderator)

Registriert seit: 23. Sep 2003
Ort: Bockwen
12.235 Beiträge
 
Delphi 2006 Professional
 
#4

Re: Formzustand wiederherstellen

  Alt 4. Jan 2006, 18:22
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.
Jens
Mit Source ist es wie mit Kunst - Hauptsache der Künstler versteht's
  Mit Zitat antworten Zitat
monta

Registriert seit: 18. Okt 2004
Ort: Dresden
141 Beiträge
 
#5

Re: Formzustand wiederherstellen

  Alt 4. Jan 2006, 18:48
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.
Johannes M.
  Mit Zitat antworten Zitat
Benutzerbild von mael
mael

Registriert seit: 13. Jan 2005
391 Beiträge
 
Delphi XE3 Professional
 
#6

Re: Formzustand wiederherstellen

  Alt 4. Jan 2006, 19:04
@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]
HxD, schneller Hexeditor:
http://mh-nexus.de/hxd
  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 01:20 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