Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi Formular erst anzeigen, dann MessageDlg (https://www.delphipraxis.net/85684-formular-erst-anzeigen-dann-messagedlg.html)

Timelesk 3. Feb 2007 09:26


Formular erst anzeigen, dann MessageDlg
 
Hallo,

wenn ich ihn der Procedure TFormular.FormShow ein Showmessage aufrufen lasse, wird dieses ja bekanntlich angezeigt, bevor das Formular sichtbar wird.

Wie kann ich erst das Formular sichtbar machen und danach den MessageDlg / die Showmessage aufrufen?
Es muss beim Start überprüft werden, ob die ausgewählte Datei + zugehörige Dateien existieren.
Dementsprechend soll eine Fehlermeldung erscheinen.

Als einzige Lösungsmöglichkeit fällt mir derzeit ein Timer ein, der von FormShow auf TRUE gesetzt wird und mit Intervall 100 eine Variable prüft, welche bei TRUE den Aufruf der Showmessage hervorruft.

Aber gibt es da keine "schönere" Lösung?


Vielen Dank

gruß
Timelesk

Timelesk 3. Feb 2007 09:38

Re: Formular erst anzeigen, dann MessageDlg
 
Ich bin's nochmal!

Gerade eben hab ich ein neues Projekt geladen und dabei ist mir die Projekt.dpr ins Auge gefallen.

Ich habe folgendes ausprobiert:
Delphi-Quellcode:
program MeinProgramm;
{...}
begin
  Application.CreateForm(TFormular, Formular);
  Formular.Show;      //Zeige Hauptformular
  Formular.loadFiles; //Prüfe, ob die benötigten Dateien existieren
  Application.Run;    //Starte Programm ?
end.
Somit erscheint erst das Formular und danach die Fehlermeldung! Genau wie ich es wollte.

Nun würde mich aber noch interessieren, warum das Application.Run an letzter Stelle stehen darf?
Die Delphi-Hilfe half mir dabei leider nicht sehr viel weiter:
Zitat:

Die Methode Run enthält die Hauptbotschaftenschleife der Anwendung. Der Aufruf von Run kehrt erst zurück, wenn die Botschaftenschleife der Anwendung beendet wird.

gruß
Timelesk

Jürgen Thomas 3. Feb 2007 09:58

Re: Formular erst anzeigen, dann MessageDlg
 
Hallo,

ich verstehe Deine Frage nicht ganz, vor allem nicht, warum Du das "darf" so betonst. Entscheidend ist: Du darfst verschiedene Maßnahmen vorher, nachher und nebenbei organisieren. (Beispiel: Prüfung, ob das Programm bereits aktiv ist, und ggf. Abbruch.)

Gruß Jürgen

Timelesk 3. Feb 2007 10:04

Re: Formular erst anzeigen, dann MessageDlg
 
Hi,

mich hat es gewundert, dass ich Formulare aufrufen kann, bevor Application.Run ausgeführt wird.

Warum soll Application.Run überhaupt ausgeführt werden?
Das Programm funktioniert doch eigentlich auch so.

Was erledigt Application.Run so wichtiges, dass es aufgerufen werden muss, aber dennoch für die Funktionalität nicht so bedeutend ist, dass egal ist, wann es aufgerufen wird?
Bzw. egal ist es nicht! Application.Run muss als letzte Anweisung in der DPR stehen, da alle nachfolgenden Anweisungen nicht mehr ausgeführt werden.


Danke

gruß
Timelesk

sirius 3. Feb 2007 10:06

Re: Formular erst anzeigen, dann MessageDlg
 
Zitat:

Was erledigt Application.Run so wichtiges, dass es aufgerufen werden muss, aber dennoch für die Funktionalität nicht so bedeutend ist, dass egal ist, wann es aufgerufen wird?
Es wartet die ganze Zeit auf Windowmessages und schickt sie an die entsprechenden Formulare/Handles.
Und wenn die Message WM_close kommt, beendet sich diese Funktion.

Timelesk 3. Feb 2007 10:11

Re: Formular erst anzeigen, dann MessageDlg
 
Hi sirius,

das ist doch mal ne gute Erklärung (im Gegensatz zur Delphi-Hilfe...)
Also startet Application.Run die WindowMessages-Überprüfung, welche automatisch mit dem Beenden des Programmes gestoppt wird!

Vielen Dank für die schnellen Antworten.

gruß
Lukas


Alle Zeitangaben in WEZ +1. Es ist jetzt 21:05 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