AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Object-Pascal / Delphi-Language Delphi wo Initialisierungen von Formularen durchführen.
Thema durchsuchen
Ansicht
Themen-Optionen

wo Initialisierungen von Formularen durchführen.

Ein Thema von diver03 · begonnen am 10. Sep 2008 · letzter Beitrag vom 11. Sep 2008
Antwort Antwort
Seite 1 von 2  1 2      
diver03

Registriert seit: 11. Dez 2007
24 Beiträge
 
Turbo Delphi für Win32
 
#1

wo Initialisierungen von Formularen durchführen.

  Alt 10. Sep 2008, 21:01
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
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.851 Beiträge
 
Delphi 11 Alexandria
 
#2

Re: wo Initialisierungen von Formularen durchführen.

  Alt 10. Sep 2008, 21:05
Kannst du machen. Du könntest aber im 1. Formular (Sprachwahl) die weiteren Formulare erzeugen.
Markus Kinzler
  Mit Zitat antworten Zitat
Benutzerbild von toms
toms
(CodeLib-Manager)

Registriert seit: 10. Jun 2002
4.648 Beiträge
 
Delphi XE Professional
 
#3

Re: wo Initialisierungen von Formularen durchführen.

  Alt 10. Sep 2008, 21:09
Hallo

Das OnShow Ereignis der Hauptform wird ausgeführt, sobald alle Formulare erzeugt wurden.
Thomas
  Mit Zitat antworten Zitat
diver03

Registriert seit: 11. Dez 2007
24 Beiträge
 
Turbo Delphi für Win32
 
#4

Re: wo Initialisierungen von Formularen durchführen.

  Alt 10. Sep 2008, 21:37
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.
  Mit Zitat antworten Zitat
Benutzerbild von toms
toms
(CodeLib-Manager)

Registriert seit: 10. Jun 2002
4.648 Beiträge
 
Delphi XE Professional
 
#5

Re: wo Initialisierungen von Formularen durchführen.

  Alt 10. Sep 2008, 21:53
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.
Thomas
  Mit Zitat antworten Zitat
diver03

Registriert seit: 11. Dez 2007
24 Beiträge
 
Turbo Delphi für Win32
 
#6

Re: wo Initialisierungen von Formularen durchführen.

  Alt 10. Sep 2008, 22:18
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.
  Mit Zitat antworten Zitat
diver03

Registriert seit: 11. Dez 2007
24 Beiträge
 
Turbo Delphi für Win32
 
#7

Re: wo Initialisierungen von Formularen durchführen.

  Alt 10. Sep 2008, 22:22
mir die Frage schon selber beantwortet.
Habe onChange benutzt.
  Mit Zitat antworten Zitat
Benutzerbild von toms
toms
(CodeLib-Manager)

Registriert seit: 10. Jun 2002
4.648 Beiträge
 
Delphi XE Professional
 
#8

Re: wo Initialisierungen von Formularen durchführen.

  Alt 10. Sep 2008, 22:27
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.

Form_Hauptformular.FormShow(Form_Hauptformular); Ist unnötig, da die Hauptform durch Run angezeigt wird.
Thomas
  Mit Zitat antworten Zitat
diver03

Registriert seit: 11. Dez 2007
24 Beiträge
 
Turbo Delphi für Win32
 
#9

Re: wo Initialisierungen von Formularen durchführen.

  Alt 10. Sep 2008, 22:34
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
  Mit Zitat antworten Zitat
Benutzerbild von dataspider
dataspider

Registriert seit: 9. Nov 2003
Ort: 04539 Groitzsch
1.350 Beiträge
 
Delphi 11 Alexandria
 
#10

Re: wo Initialisierungen von Formularen durchführen.

  Alt 11. Sep 2008, 10:23
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
Frank Reim
  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 12:55 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