![]() |
Formular Position speichern
Hallo,
ich arbeite daran die Positionen der Formulre meiner Anwendung zu speichern und auch wieder zu lesen. Im Prinzip ist mein Problem: Ich speichere den Namen (und weitere Daten) des Formulares in einer Tabelle. Das Feld in dem der Name des Formulares steht ist ein VarChar, also String. Nun muss ich beim Öffnn der Formulare dieses String in ein TForm (o.ä.) umwandeln um dann Width, Top etc zuzuweisen. Ich scheitere aber daran, den ausgelesenen String in ein TForm umzuwandeln. Kann mir jemand helfen? |
AW: Formular Position speichern
Und warum lässt du die Form die Werte nicht selber speichern und laden?
Der Form sollte ihr Name doch bekannt sein |
AW: Formular Position speichern
Stichwort: Ini-Datei, Registry. Im OnClose speichern und beim OnCreate wieder lesen.
|
AW: Formular Position speichern
Sugar,
ein bisschen mehr Infos bitte. ÄHeiko |
AW: Formular Position speichern
Zitat:
|
AW: Formular Position speichern
|
AW: Formular Position speichern
Hallo Forum,
habe ich mich wirklich so unverständlich ausgedrückt? Entschuldigung. Also, mal weiter ausgeholt: Ich erweitere eine ältere interne Anwendung über die unsere User sich schon immer beschwert haben, weil die Fensterpositionen nicht gespeichert werden und man nicht die Möglichkeit hat sich auf den Bildschirmen zurecht gerückten Formulare, dessen Größe und Position zu "merken". Hintergrund: Kommt ein Anruf in der Zentrale an zeigt das Hauptformular den Stammsatz des Anrufers an, soweit erkennbar. Der User muss dann weitere Fenster "manuell" öffnen um bspw. Historie, Rechnungen etc. im Blick zu haben. Ich möchte nun, dass der User sich seine drei, vier Fenster öffnen und auf den Bildschirmen platzieren kann UND diese "Ansicht" als Szenario speichern. Öffnet der User dann das Programm, lese ich in der Datenbank was er als Szenario gespeichert hat und öffne und platziere diese Fenster. So die Idee... Ich dachte mir nun, ich speichere in einer Tabelle den Usernamen, den Namen der Form (Ja, die Eigenschaft NAME),Top, Height, Width, left und ein bit ob das Fenster beim Start sichtbar sein soll. Was ich nun nicht weiß wie man es umsetzt ist: Ich hole mir den Namen der Form als String, nur wie wandele ich diesen String um, so dass ich damit die Form mit diesem Namen anzeigen kann? Kurzes "Nebenproblem" noch dazu: Gibt es eine Möglichkeit alle offenen Formulare der Anwendung zu ermitteln? Also, nochmal Sorry für die vielleicht verwirrende Anfrage. Ich hoffe es ist nun klarer was ich vorhabe. Danke für die bisherige Hilfe Gruß Sugar [edit]ps. @hathor: Dein Link ist nicht verfügbar [edit2]: Zu dem Ermitteln der offenen Formulare habe ich etwas gefunden:
Delphi-Quellcode:
Wenn in Name etwas steht ist es eine geöffnete Form meiner App.
For i:=0 to Screen.FormCount-1 do
begin Screen.Forms[i].Name |
AW: Formular Position speichern
Zitat:
Delphi-Quellcode:
if FormName='MyForm' then
begin MyForm:=TMyForm.Create(Application); MyForm.Show; end; |
AW: Formular Position speichern
@bcvs
Ich dachte halt es geht eleganter. So muss ich bei jeder neu hinzukommenden Form auch die Abfrage anpassen... das wollte ich umgehen |
AW: Formular Position speichern
Zitat:
Delphi-Quellcode:
Liste := TClassList;
Liste.Add(TFormXYZ); -... wenn Du nun ein bestimmtes Formular suchst:
Delphi-Quellcode:
function FOrmErzeugen(AFormularName: String): TForm;
var FormClass: TFormClass; idxForm: Integer; begin FormClass := nil; for idxForm := 0 to Liste.Count -1 do begin if Liste.Item[idxForm].ClassName = AFormularName then FormClass := Liste.Item[idxForm] end; if Assigned(FOrmClass) then result := FormClass.Create(Application) else .... Und wenn dir das ständige Durchlaufen der ClassList zu langsam ist, dann sortiere die Liste nach den Namen, dann kannst Du schneller suchen.... Nachtrag: Wenn Du ein aktuelleres Delphi hast, kannst Du hier auch mit einer generischen Liste arbeiten.... |
Alle Zeitangaben in WEZ +1. Es ist jetzt 17:26 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