![]() |
MainForm nicht anzeigen, wenn Prog. direkt beendet wird
Hallo,
es gibt bei uns schon länger ein Programm, dass im FormCreate des MainForms prüft, ob der Nutzer berechtigt ist das Programm zu nutzen. Falls nicht kommt eine showmessage und das Programm wird beendet. Dabei blitzt aber nochmal kurz das Mainform auf, was ausser mir scheinbar keinen stört, aber ich find das blöd, deswegen woll ich mal fragen, wie man das verhindern kann? |
AW: MainForm nicht anzeigen, wenn Prog. direkt beendet wird
Verleg doch die Prüfung aus dem FormCreate direkt in die *.dpr. Erst bei gültiger Prüfung werden die Formulare dann angelegt.
Delphi-Quellcode:
if IsOK then
begin Application.Initialize; Application.CreateForm(...); Application.Run; end; |
AW: MainForm nicht anzeigen, wenn Prog. direkt beendet wird
Hast du schonmal versucht, im FormCreate das
Delphi-Quellcode:
zu setzen?
Application.ShowMainForm := false;
|
AW: MainForm nicht anzeigen, wenn Prog. direkt beendet wird
Alternativ sollte auch das gehen:
Delphi-Quellcode:
Application.Run wird nur dann aufgerufen, wenn die im Create des Hauptformulars zu prüfenden Bedingungen für den Programmstart zutreffen, erst dann wird (wie mir scheint) das Formular angezeigt. Das MainForm bekommt eine Public-Variabel bIsOK vom Typ Boolean, der Du im FormCreate das Ergebnis Deiner Prüfung als boolschen Wert zuweist, damit muss Du die Prüfung nicht verlagern. Sinnvoller wäre aber, die Prüfung in eine eigene Funktion zu packen, die Du dann im FormCreate oder in der DPR aufrufen kannst. Das ist abhängig davon, ob Du zur Prüfzeit schon Zugriff auf ein initialisiertes MainForm benötigst oder nicht.
begin
Application.Initialize; Application.CreateForm(MainformOderWieEsAuchHeissenMag); if MainformOderWieEsAuchHeissenMag.IsOk then begin Application.Run; end; end; |
AW: MainForm nicht anzeigen, wenn Prog. direkt beendet wird
Oder eventuell ein
![]() |
AW: MainForm nicht anzeigen, wenn Prog. direkt beendet wird
Delphi-Quellcode:
ist in diesem Fall das Beste. MainForm bleibt so lange vorerst unsichtbar, bis es zB mit
Application.ShowMainForm := False
Delphi-Quellcode:
sichtbar gemacht wird.
Show
|
AW: MainForm nicht anzeigen, wenn Prog. direkt beendet wird
Zitat:
Das gilt auch für weite Formulare, welche automatisch erstellt werden ... alles was Visible=True hat, wird sichtbar und dazu eben noch die MainForm, bei ShowMainForm=True. Aber da könnte man versuchen das Visible auf False zu setzen, wobei es hier vermutlich auch wieder aufblinken würde, wenn es vorher schon Visible war. |
AW: MainForm nicht anzeigen, wenn Prog. direkt beendet wird
Application.Terminate und Halt(255) würden ebenso gehen.
Wenn Application.ShowMainForm := False und dann das Beenden des Programmes oder das Show vergessen werden, dann läuft die Anwendung halt unsichtbar, was nicht zwingend erwünscht sein muss. Wenn Application.Run nicht aufgerufen wird, beendet sich das Programm auf dem regulären Weg. |
AW: MainForm nicht anzeigen, wenn Prog. direkt beendet wird
Danke schonmal. Werd das Montag mal alles ausprobieren. Jetzt ist WE.
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:51 Uhr. |
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 by Thomas Breitkreuz