Delphi-PRAXiS
Seite 2 von 3     12 3      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Frage zu FormCreate (https://www.delphipraxis.net/114271-frage-zu-formcreate.html)

RavenIV 22. Mai 2008 16:00

Re: Frage zu FormCreate
 
Zitat:

Zitat von HiWieGehts
OnCreate und OnShow werden aufgerufen, bevor die Form angezeigt wird. Daher auch das von die beschriebene verhalten.
Mache aus deinem TForm1.FormCreate ein TForm1.InitShowMessage. Diese rufst du dann nachdem Show für Form1 auf.
Eine weitere, nicht sehr schöne Möglichkeit, ist die Verwendung eines Timers. Diesen startest du im OnCreate oder OnShow und im OnTimer mache dein ShowMessage.

Dann doch lieber OnActivate mit einem Merker.
Alles andere ist Murks.
Das hätten die Leute bei meinem alten Arbeitgeber so gemacht, weill sie Luschen sind und es nicht besser konnten.

HiWieGehts 22. Mai 2008 16:07

Re: Frage zu FormCreate
 
Zitat:

Zitat von RavenIV
Zitat:

Zitat von HiWieGehts
OnCreate und OnShow werden aufgerufen, bevor die Form angezeigt wird. Daher auch das von die beschriebene verhalten.
Mache aus deinem TForm1.FormCreate ein TForm1.InitShowMessage. Diese rufst du dann nachdem Show für Form1 auf.
Eine weitere, nicht sehr schöne Möglichkeit, ist die Verwendung eines Timers. Diesen startest du im OnCreate oder OnShow und im OnTimer mache dein ShowMessage.

Dann doch lieber OnActivate mit einem Merker.
Alles andere ist Murks.
Das hätten die Leute bei meinem alten Arbeitgeber so gemacht, weill sie Luschen sind und es nicht besser konnten.

So eine Antwort kann wohl nur jemand schreiben, der beim Lesen einer Zeile die vorhergehende schon wieder vergessen hat.

S20000 22. Mai 2008 16:08

Re: Frage zu FormCreate
 
Hi,

kannst du das etwas näher erklären?

Zitat:

Mache aus deinem TForm1.FormCreate ein TForm1.InitShowMessage. Diese rufst du dann nachdem Show für Form1 auf.

Die Muhkuh 22. Mai 2008 16:10

Re: Frage zu FormCreate
 
Delphi-Quellcode:
type
  TForm1 = class(TForm)
    [...]
  private
    FFirstShow: Boolean;
  end;

implementation

procedure TForm1.Create(Sender: TObject);
begin
  FFirstShow := true;
end;

procedure TForm1.Activate(Sender: TObject);
begin
  if (FFirstShow) then
  begin
    ShowMessage('Hallo!');
    FFirstShow := false;
  end;
end;
Btw. stimme ich Raven zu, dass das mit dem Marker die eleganteste Lösung ist.

dominikkv 22. Mai 2008 16:13

Re: Frage zu FormCreate
 
oder du regelst das ganze gleich in der Projektdatei (Projekt -> Quelltext anzeigen)

Apollonius 22. Mai 2008 16:18

Re: Frage zu FormCreate
 
Das geht nicht. Die Formulare werden erst in Application.Run angezeigt, und das kehrt erst ganz am Ende zurück.

Die Muhkuh 22. Mai 2008 16:19

Re: Frage zu FormCreate
 
"Falsch", werden sie nicht. :zwinker:

Nutze in meinem Projekt folgendes:

Delphi-Quellcode:
begin
  Application.Initialize;

  flogin := Tflogin.Create(Application);
  if flogin.ShowModal = mrOK then
  begin
    Application.CreateForm(Tfmain, fmain);
    Application.Run;
  end;
end.
Geht ohne Probleme ;)

Apollonius 22. Mai 2008 16:22

Re: Frage zu FormCreate
 
Ja, ShowModal kann Application.Run ersetzen, wie man im VCL-Code sieht.

S20000 22. Mai 2008 16:25

Re: Frage zu FormCreate
 
Vielen Dank, die Idee mit dem Merker ist gut!

dominikkv 22. Mai 2008 16:26

Re: Frage zu FormCreate
 
Zitat:

Zitat von Apollonius
Das geht nicht. Die Formulare werden erst in Application.Run angezeigt, und das kehrt erst ganz am Ende zurück.

Delphi-Quellcode:
begin
  Application.Initialize;
  Application.MainFormOnTaskbar := True;
  Application.CreateForm(TForm1, Form1);

  Form1.Show;
  Form1.Refresh;
  Form1.MyOwnCreate; // Eigene procedure, hier kannst du deine nachricht anzeigen lassen

  Application.Run;
end.


Alle Zeitangaben in WEZ +1. Es ist jetzt 03:10 Uhr.
Seite 2 von 3     12 3      

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