Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi wo Initialisierungen von Formularen durchführen. (https://www.delphipraxis.net/120419-wo-initialisierungen-von-formularen-durchfuehren.html)

diver03 10. Sep 2008 21:01


wo Initialisierungen von Formularen durchführen.
 
Hallo,

ich bin zwar kein Neuling, was Programmieren angeht, aber Object Programmierung ist schon neu für mich.
Habe vor vielen Jahren viel in Fortran, Pascal und C programmiert, als es noch keine Objekte gab.

Weiß auch nicht, ob das Thema hier richtig ist. Wenn nicht, bitte verschieben.

Nun zu meiner Frage. (der Titel kling vielleicht etwas komisch)

Ich habe ein Berechnungprogramm geschrieben, was zur Zeit nur aus einem Formular besteht, das aber voll ist mit
Labels und Edit Boxen, deshalb möchte ich bei Bedarf ein zweites Formular öffnen für weiter Daten.
Ich habe das Programm so aufgebaut, dass ich zwische Deutsch und Englisch umschalten kann.
Dazu wird in einer Procedur eine entsprechende Sprachdatei eingelesen und entsprechend die
Label.Caption geändert.

Zu Programmstart wird nun in der "Create" Procedur des Hauptformulars die Sprach Procedur aufgerufen.

Da das zweite Formular nach dem ersten erzeugt wird, bekomme ich verständlicher Weise eine Fehlermeldung,
wenn einem Label vom zweiten Formular ein Text zugewiesen wird, bevor das 2. Formular erzeugt wird.

Die Frage ist nun, wo kann man eine Procedur einbinden, nachdem alle Formulare erzeugt wurden, bevor das
Programm dann auf eine Ereignis wartet?
Kann man einen Aufruf im Programm vor der Zeile Application.Run einfügen, oder ist das kein guter Delphi Stil?

Alles verstanden?

MfG
Jens Peter

mkinzler 10. Sep 2008 21:05

Re: wo Initialisierungen von Formularen durchführen.
 
Kannst du machen. Du könntest aber im 1. Formular (Sprachwahl) die weiteren Formulare erzeugen.

toms 10. Sep 2008 21:09

Re: wo Initialisierungen von Formularen durchführen.
 
Hallo

Das OnShow Ereignis der Hauptform wird ausgeführt, sobald alle Formulare erzeugt wurden.

diver03 10. Sep 2008 21:37

Re: wo Initialisierungen von Formularen durchführen.
 
Hallo

danke für eure Antworten.

@mkinzler: ich habe ins Hauptprogramm vor Application.Run jetzt einen Proceduraufruf "FormShow"
eingefügt (nach der Erzeugung aller Formulare und damit scheint es zu funktioniern.
Scheint deshalb, weil ich es eben nur schnell mit einem Label getestet habe.

@toms: mit onShow geht es nicht, bzw. habe ich es nicht geschafft.
onShow wird schon vor dem Create des zweiten Formulars ausgeführt.

Delphi-Quellcode:
begin
  Application.Initialize;
  Application.Title := 'Test R 3.1.0';
  Application.CreateForm(TForm_Hauptformular, Form_Hauptformular);
  Application.CreateForm(TDruck_einrichten, Druck_einrichten);
  Application.CreateForm(TForm_MDaten, Form_MDaten);
  Form_Hauptformular.FormShow(Form_Hauptformular);
  Application.Run;
end.

toms 10. Sep 2008 21:53

Re: wo Initialisierungen von Formularen durchführen.
 
Zitat:

Zitat von diver03
@toms: mit onShow geht es nicht, bzw. habe ich es nicht geschafft.
onShow wird schon vor dem Create des zweiten Formulars ausgeführt.

Kann ich nicht nachvollziehen und wäre mir neu.
Die Hauptform wird er durch Application.Run sichtbar gemacht, außer die Form wird zuvor "manuell" sichtbar gemact.

diver03 10. Sep 2008 22:18

Re: wo Initialisierungen von Formularen durchführen.
 
vielleicht habe ich auch nur nicht so ganz verstanden, wie ich das anwenden muss.

Ich habe im Hauptformular im Objectinspector bei onShow meine eigene Procedur "FormShow"
eingetragen, die, die ich jetzt vor den ...Run Befehl gesetzt habe.
Ist das so richtig?

Nun noch eine andere Frage.
Wien kann ich erreichen, dass die Texte von zwei Editfeldern aus zwei verschiedenen
Formularen immer den gleichen Inhalt haben, auch dann, wenn ich eines der Felder änder?
Ich muss noch dazu sagen, dass das eine Feld inactiv und read only ist.

diver03 10. Sep 2008 22:22

Re: wo Initialisierungen von Formularen durchführen.
 
mir die Frage schon selber beantwortet.
Habe onChange benutzt.

toms 10. Sep 2008 22:27

Re: wo Initialisierungen von Formularen durchführen.
 
Zitat:

Zitat von diver03
mir die Frage schon selber beantwortet.
Habe onChange benutzt.

Zur Info -> Es gilt hier die Regel: Neue Frage zu einem anderen Thema -> Neues Thema eröffnen.

Delphi-Quellcode:
Form_Hauptformular.FormShow(Form_Hauptformular);
Ist unnötig, da die Hauptform durch Run angezeigt wird.

diver03 10. Sep 2008 22:34

Re: wo Initialisierungen von Formularen durchführen.
 
Zitat:

Form_Hauptformular.FormShow(Form_Hauptformular);
das hat nicht wirklich was mit "Show" zu tun, mir ist nur kein anderer Name
auf die Schnelle eingefallen.
Ich werde die procedur noch umbennen in "SprachenLaden"

Danke erstmal für die hilfreichen Tipps.

Gruß
Jens

dataspider 11. Sep 2008 10:23

Re: wo Initialisierungen von Formularen durchführen.
 
Hi,

ich nutze für ähnliche Probleme Application.OnIdle.
Im MainForm Constructor weise ich Application.OnIdle eine Methode zu.
Delphi-Quellcode:
constructor TfrmMain.Create(AOwner: TComponent);
begin
  inherited Create(AOwner);
  Application.OnIdle := ApplicationOnIdle;
  ...
end;

procedure TfrmMain.ApplicationOnIdle(Sender: TObject; var Done: Boolean);
begin
  Application.OnIdle := nil;
  SetLanguage; // z.B.
end;
Wobei die Procedure nicht in das Hauptformular gehört, aber na ja...

Cu, Frank


Alle Zeitangaben in WEZ +1. Es ist jetzt 20:00 Uhr.
Seite 1 von 2  1 2      

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