AGB  ·  Datenschutz  ·  Impressum  







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

SubForm in OnCreate() des MainForm bestücken

Ein Thema von Schwedenbitter · begonnen am 10. Mär 2011 · letzter Beitrag vom 10. Mär 2011
Antwort Antwort
Seite 1 von 2  1 2      
Schwedenbitter

Registriert seit: 22. Mär 2003
Ort: Finsterwalde
622 Beiträge
 
Turbo Delphi für Win32
 
#1

SubForm in OnCreate() des MainForm bestücken

  Alt 10. Mär 2011, 10:43
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.OnShow() fällt aus, weil ich nicht jedesmal die ini-Datei neu einlesen möchte.

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
Alex Winzer
  Mit Zitat antworten Zitat
Jumpy

Registriert seit: 9. Dez 2010
Ort: Mönchengladbach
1.737 Beiträge
 
Delphi 6 Enterprise
 
#2

AW: SubForm in OnCreate() des MainForm bestücken

  Alt 10. Mär 2011, 11:20
Ferner möchte ich die Einstellungen nur extrem ungern irgendwo zwischenspeichern müssen.

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).
Ralph
  Mit Zitat antworten Zitat
WM_CLOSE

Registriert seit: 12. Mai 2010
Ort: königsbronn
398 Beiträge
 
RAD-Studio 2009 Pro
 
#3

AW: SubForm in OnCreate() des MainForm bestücken

  Alt 10. Mär 2011, 12:05
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.
  Mit Zitat antworten Zitat
Schwedenbitter

Registriert seit: 22. Mär 2003
Ort: Finsterwalde
622 Beiträge
 
Turbo Delphi für Win32
 
#4

AW: SubForm in OnCreate() des MainForm bestücken

  Alt 10. Mär 2011, 12:21
Danke für die Hinweise.

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.
Das hört sich interessant an. Könntest Du mir dazu mal einen Link geben oder Stichworte zum Selbersuchen geben? Danke.

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

Gruß, Alex
Alex Winzer
  Mit Zitat antworten Zitat
WM_CLOSE

Registriert seit: 12. Mai 2010
Ort: königsbronn
398 Beiträge
 
RAD-Studio 2009 Pro
 
#5

AW: SubForm in OnCreate() des MainForm bestücken

  Alt 10. Mär 2011, 12:44
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;
  Mit Zitat antworten Zitat
Schwedenbitter

Registriert seit: 22. Mär 2003
Ort: Finsterwalde
622 Beiträge
 
Turbo Delphi für Win32
 
#6

AW: SubForm in OnCreate() des MainForm bestücken

  Alt 10. Mär 2011, 13:40
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
Alex Winzer
  Mit Zitat antworten Zitat
WM_CLOSE

Registriert seit: 12. Mai 2010
Ort: königsbronn
398 Beiträge
 
RAD-Studio 2009 Pro
 
#7

AW: SubForm in OnCreate() des MainForm bestücken

  Alt 10. Mär 2011, 13:43
Nicht ganz, TIniFile geht über die WinAPI mit WritePrivateProfileString,... Ich kann mir vorstellen, dass da einige überprüfungen laufen, usw.
  Mit Zitat antworten Zitat
alfold

Registriert seit: 29. Jun 2010
Ort: Neustrelitz
393 Beiträge
 
Delphi 7 Enterprise
 
#8

AW: SubForm in OnCreate() des MainForm bestücken

  Alt 10. Mär 2011, 13:46
Warum aber das ganze in eine Stringlist?
Wenn schon Ini's dann kann man auch die, Direkt auslesen und speichern

Gruss alfold
  Mit Zitat antworten Zitat
Hansa

Registriert seit: 9. Jun 2002
Ort: Saarland
7.554 Beiträge
 
Delphi 8 Professional
 
#9

AW: SubForm in OnCreate() des MainForm bestücken

  Alt 10. Mär 2011, 13:54
Warum aber das ganze in eine Stringlist?
Ganz einfach : warum einfach, wenn es auch kompliziert geht ?

Die StringList hat eine ganz brauchbare Möglichkeit, Variablen nach dem Key-Value-Prinzip zu speichern.
Und damit eine INI-Datei nachzubilden ? Mit Verlaub gesagt : das ist Schwachsinn.
Gruß
Hansa
  Mit Zitat antworten Zitat
alfold

Registriert seit: 29. Jun 2010
Ort: Neustrelitz
393 Beiträge
 
Delphi 7 Enterprise
 
#10

AW: SubForm in OnCreate() des MainForm bestücken

  Alt 10. Mär 2011, 14:01
Ich bezog mich hier drauf "ini"
 sl.LoadFromFile('Test.ini'); Um meine Position und grösse des Formulars zu speichern verwende ich auch noch "ini". Was soll also da so verkehrt sein?

Gruss alfold
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


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 17:04 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