![]() |
SubForm in OnCreate() des MainForm bestücken
Hallo,
ich habe folgendes Problem: Mein Programm besteht aus einem MainForm, welches in OnCreate() aus einer ini-Datei absolut alle Einstellungen ausliest. Nun will ich das Programm um ein paar Funktionen erweitern. Für die Einstellungen ist auf dem MainForm aber kein Platz mehr, da ich mehrere TEdit-Felder benötige. Also muss ein SubForm her. Ferner möchte ich die Einstellungen nur extrem ungern irgendwo zwischenspeichern müssen. Mein Ziel ist es also, gleich - wie bisher - im OnCreate() des MainForm auch die Felder des SubForm mit bestücken zu können. ![]() Da das SubForm zu diesem Zeitpunkt aber noch nicht existiert, bekommt man mit den üblichen Methoden eine Exception. Gibt es irgend eine vernünftige Möglichkeit? Ich habe bedauerlicher Weise nichts gefunden. Gruß, Alex |
AW: SubForm in OnCreate() des MainForm bestücken
Zitat:
Da wie du selbst sagst Form2 zu dem Zeitpunkt des Lesens nicht existiert, bleibt dir nichts anderes übrig als Zwischenzuspeichern. Oder, keine Ahnung ob das geht, im OnCreate von Form1 kreierst du auch schon Form2 und weißt die Werte zu. Einblenden tust du dann Form2 halt nur später. Oder du Arbeitest mit Karteikarten (k.A. wie das richtig heißt). |
AW: SubForm in OnCreate() des MainForm bestücken
Die StringList hat eine ganz brauchbare Möglichkeit, Variablen nach dem Key-Value-Prinzip zu speichern.
Das Formular würde ich nur dann erzeugen wenn es notwendig wird. |
AW: SubForm in OnCreate() des MainForm bestücken
Danke für die Hinweise.
Zitat:
Im Grunde liegt das an meiner Faulheit. Üblicherweise mache in meinen größeren Projekten immer eine Klasse TSetup, in der alle Einstellungen bei OnCreate() geladen und beim OnDestroy() zurück geschrieben werden. Zeige ich ein Einstellungsfenster an, dann schreibe ich vor einem ShowModal() des SubForms alle Werte in die Komponenten rein und sichere sie nach dem Schließen wieder zurück. Vielleicht kann man das auch eleganter machen? Ich wollte mir aber, weil es nur 6 Werte sind, den ganzen Aufwand sparen und diese einfach in den TEdits vorhalten. Falls es mit TStringList nichts wird, werde ich es wohl wieder so machen müssen. Und ich hatte mich schon so auf die eierlegende Wollmilchsau gefreut :-D Gruß, Alex |
AW: SubForm in OnCreate() des MainForm bestücken
Geht fast genauso wie das ini, aber das 2. Einlesen entfällt:
Delphi-Quellcode:
var
sl:TStringList; begin sl:=TStringList.Create; try sl.LoadFromFile('Test.ini'); sl.Values['FormGroesse']:='444'; MyForm.Height:=StrToInt(sl.Values['FormGroesse']); finally sl.Free; end; |
AW: SubForm in OnCreate() des MainForm bestücken
Wieder etwas dazugelernt!
Ich hätte nich gedacht, dass man mit einer TStringList so etwas machen kann. Dann braucht man TINIFile ja bloß noch, wenn man auf die Einteilung in Sections angewiesen ist und/oder man viele Einstellungen als Bool(ean) oder Zahlen speichert... Danke. Das macht es einfacher. Alex |
AW: SubForm in OnCreate() des MainForm bestücken
Nicht ganz, TIniFile geht über die WinAPI mit WritePrivateProfileString,... Ich kann mir vorstellen, dass da einige überprüfungen laufen, usw.
|
AW: SubForm in OnCreate() des MainForm bestücken
Warum aber das ganze in eine Stringlist?
Wenn schon Ini's dann kann man auch die, Direkt auslesen und speichern :wink: Gruss alfold |
AW: SubForm in OnCreate() des MainForm bestücken
Zitat:
Zitat:
|
AW: SubForm in OnCreate() des MainForm bestücken
Ich bezog mich hier drauf "ini"
Delphi-Quellcode:
Um meine Position und grösse des Formulars zu speichern verwende ich auch noch "ini". Was soll also da so verkehrt sein?
sl.LoadFromFile('Test.ini');
Gruss alfold |
AW: SubForm in OnCreate() des MainForm bestücken
Angenommen du lässt in einem Thread mehrere tausend mal eine Variable lesen, oder schreiben, dann wird wohl eine StringList schneller sein, oder?
Und wenn du dann noch eine teure SSD hast?:twisted: Ganz davon abgesehen, dass eine TIniFile nicht threadsicher ist; mehrere StringListen schon. |
AW: SubForm in OnCreate() des MainForm bestücken
Hab ich da was missverstanden? Es geht ja wohl nicht um irgendwelche Threads die xT mal Formulardaten speichern lesen verändern. Sowas passiert ja wohl nur, wenn es erzeugt wird bzw wieder geschlossen wird.
mh... und xT mal in wenigen sek, naja kann man auch machen :? wer lange weile hat8-) gruss alfold |
AW: SubForm in OnCreate() des MainForm bestücken
Zitat:
|
AW: SubForm in OnCreate() des MainForm bestücken
@Hansa :thumb:
besser hätt ichs auch nicht schreiben können 8-) Gruss alfold |
Alle Zeitangaben in WEZ +1. Es ist jetzt 21:07 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