![]() |
Fensterpositionen speichern?
Guten Morgen!
Wie kann man am einfachsten Fensterpositionen bei sehr vielen Formen speichern? Gruß Heike |
Re: Fensterpositionen speichern?
Delphi-Quellcode:
Am einfachsten über die Variablen
Form1.Top -> Abstand vom oberen Desktop Rand Form1.Left -> Abstand vom Linken Desktop Rand Form1.Width -> Breite der Fenster Form1.Height -> Höhe der Fenster |
Re: Fensterpositionen speichern?
Ich nehme mal an du willst die Position einer form abspeichern, so das sie an der gleichen Position erscheint wenn sie das naechste Mal wieder erstellt wird. Das nennt sich Persistenz von Daten. Die JVCL hat dazu geeignete Komponenten. Ich glaube das Beispiel JvAppStorage ist dafuer zustaendig. die Daten werden wahlweise in die Registry, ein INI-File oder ein XML File gespeichert.
|
Re: Fensterpositionen speichern?
Zitat:
Das ist Klar. Ich hatte mich bestimmt unklar ausgedrückt. Ich erzeuge dynamisch viele Formen. (Form1 .. Form20...) Die genaue Anzahl ist unbestimmt. Jetzt möchte ich die Position der Formen speichern. Jetzt ist es sehr umständlich z. B. 20 mal Form1.Top usw. zu coden. Vorallen wenn man das Ende nicht kennt. Gruß Heike |
Re: Fensterpositionen speichern?
Du wirst deine Fenster ja irgendwie verwalten müssen in einem Array oder einer Liste. Diese Verwaltungsstruktur kannst du ja durchgehen. Oder du leitest deine Formulare von einem eignen Fomrluar ab, welches du schon um die gewünschten Eigenschaften und Methoden erweitert hast.
|
Re: Fensterpositionen speichern?
Bei der RxLibrary sind zwei Komponenten dabei, die das unterstützen.
Beide speichern die Werte in einem ini-File oder in der Registry TFormPlacement - Kann die Grösse und Position des Forms speichern TFormStorage - Kann die Grösse und Position des Forms speichern - Kann die Properties der anderen Komponenten auf dem Form speichern |
Re: Fensterpositionen speichern?
Ansonsten schau die mal die Eigenschaften des Screen Objektes an. Wenn du die Formulare erstellst, dann sollte Screen.FormCount und Screen.Forms[] diese mit aufführen. Darüber kannst du iterieren und im Zusammenhang mit dem Namen/ClassName die Positionen speichern und wiederherstellen.
|
Re: Fensterpositionen speichern?
Delphi-Quellcode:
Hallo hab mal folgenden Code geschrieben. Vielleicht hilft er dir ja ein wenig weiter. procedure TForm1.Forms_spichern; var Formen:TForm; i:Integer; F:TextFile; Temp:String; Max_Forms:Integer; begin Max_Forms:=4; //Anzahl der Formen AssignFile(F,'C:\Forms.txt'); ReWrite(F); For i:=1 to Max_Forms do Begin Formen:= TForm ( FindComponent ('Form'+InttoStr(i) )); Temp:=Inttostr(Formen.Top); Writeln(F,Temp); Temp:=Inttostr(Formen.Left); Writeln(F,Temp); Temp:=Inttostr(Formen.Top); Writeln(F,Temp); Temp:=Inttostr(Formen.Height); Writeln(F,Temp); End; CloseFile(F); end; |
Re: Fensterpositionen speichern?
FindComponent() findet immer nur Unterelemente des Elementes, dessen FindComponent() aufgerufen wird. Da ich aber kein Element kenne, welches Formulare als Unterkomponenten hat, wüsste ich auch nicht, wie FindComponent() Formulare finden könnte/sollte.
|
Re: Fensterpositionen speichern?
Hallo,
ich leite alle meine Forms von einem Basis-Form ab, dort wird im OnClose die Position gespeichert (bei ModalResult mrOK) und im FormCreate geladen. Wie du Formulare ableitest, steht im Handbuch. Bei deinen "alten" musst du wie folgt vorgehen - dfm öffnen (nicht die pas) ich geh davon aus, dass die dfm im TextFormat vorliegt, sonst halt ändern - object in inherited ändern - speichern, Datei schliessen - pas öffnen - uses "unit das Basis-Forms" - TForm1 = class(TForm) ändern in TForm1 = class(TBaseForm) - in FormCreate als 1. Zeile ein inherited - bei OnClose-Benutzung im jeweiligen Form muss auch noch ein inherited rein Die Benutzung eines Basisforms hat auch noch andere Vorteile, z.B. Vista-spezifische Sachen einbauen (siehe die letzten Entwickler-Zeitungen), bestimmte wiederverwendbare Routinen reinpacken usw. Heiko |
Alle Zeitangaben in WEZ +1. Es ist jetzt 02:17 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