Hi,
in einer Anwendung sollen alles Forms erst dann erstellt werden wenn sie benötigt werden. Es soll auch kein MainForm geben, lediglich ein DatenModul soll von Anfang an verfügbar sein. Lösche ich aus der Projekt-Datei die Zeile Application.CreateForm(...); mit der das MainForm erzeugt wurde, startet die Anwendung zwar, nach erstellen des DatenModul beendet sich das Programm aber sofort. Mit folgenden Code kann ich das verhindern:
Delphi-Quellcode:
program Project3;
uses
Forms,
Unit2 in 'Unit2.pas' {Form2},
Unit3 in 'Unit3.pas' {DataModule3: TDataModule};
{$R *.res}
begin
Application.Initialize;
Application.MainFormOnTaskbar := False;
Application.CreateForm(TDataModule3, DataModule3);
Application.ShowMainForm := False;
Application.Run;
while not Application.Terminated do
Application.ProcessMessages;
end.
Bisher hat alles wunderbar auf diese Weise funktioniert.
Jetzt wollte ich aber wissen: Kann das irgendwelche Seiteneffekte erzeugen? Oder die Performance der Anwendung mindern? Gibt es noch andere Möglichkeiten eine Anwendung ohne MainForm zu erzeugen (keine Konsolen-App)?
EDIT: Mit HandleMessage geht es auch:
Delphi-Quellcode:
while not Application.Terminated do
Application.HandleMessage;
Was ist besser? HandleMessage oder ProccesMessages? Das TApplication-Ojbekt macht intern auch nicht anderes als
Delphi-Quellcode:
...
repeat
try
HandleMessage;
except
HandleException(Self);
end;
until Terminated;
...