![]() |
Re: abfragen, ob eine Form offen ist.
Hi,
ich bin mir zwar nicht sicher, aber geht es nicht mit
Delphi-Quellcode:
?
If Form1.Showing Then ...
Edit: wenn du die Formulare dynamisch erstellst würde dann ja doch ein Test mit
Delphi-Quellcode:
reichen um festzustellen ob das Objekt schon erzeugt wurde.
if Assigned(Form) then ...
|
Re: abfragen, ob eine Form offen ist.
hi... nochmal
wenn den Programm ein MDI ist dann Funktioniert auch
Delphi-Quellcode:
if (Main.ActiveMDIChild is Form5) then ...
|
Re: abfragen, ob eine Form offen ist.
Zitat:
Such mal nach "eine Instanz", "OneInstance", "mehrfach starten", oder "Mutex". Dann wirst Du geholfen. |
Re: abfragen, ob eine Form offen ist.
Zitat:
Zitat:
|
Re: abfragen, ob eine Form offen ist.
Du könntest doch einfach im OnCreate Deines Forms einen Mutex erzeugen
Delphi-Quellcode:
ihn im OnClose wieder freigeben
dwMutex : DWORD;
{ .... } dwMutex := CreateMutex(nil,true,'Test'); // Schauen, ob das Programm schon mal läuft
Delphi-Quellcode:
CloseHandle(dwMutex);
und dann einfach vor dem CreateForm prüfen, ob der Mutex schon existiert
Delphi-Quellcode:
dwMutex muss dann nur irgendwo global deklariert sein, aber das sollte ja das kleinere Problem sein. Ist vielleicht nicht die einfachste Lösung, aber sollte so funktionieren.
dwMutex := CreateMutex(nil,true,'Test'); // Mutex erzeugen
try if GetLastError <> ERROR_ALREADY_EXISTS then // Mutex noch nicht erzeugt CreateForm( {... und so weiter } Grüße Tom EDIT: Na, der Mutex im OnCreate ist ja doppelt gemoppelt. So schlägt der ja fehl. Also das OnCreate ist wohl unnötig. |
Re: abfragen, ob eine Form offen ist.
der Mutex kann auch im OnCreate erzeugt werden und im Falle des existierens wird eine exception augelöst. Dadurch würde der Destructor aufgerufen werden und es wird nicht nochmal erstellt.
|
Re: abfragen, ob eine Form offen ist.
Klar, das geht - dann wirds natürlich noch einfacher :mrgreen:
|
Re: abfragen, ob eine Form offen ist.
Generell finde ich das aber eigentlich die falsche herangehensweise. Wenn man eine Instanz erzeugt hat, hat man ja die Instanzvariable anhand der man das prüfen kann.
Es wurde ja auch geschrieben das es anhand einer Stringvariablen geht (wo drin steht ob gestartet oder nicht). Warum sollte es also nicht mit der Instanzvariablen klappen? Da ist irgendwas im argen. Und selbst ohne Instanzvariable sollte anstelle der Stringvariablen dann doch eine Bool-Variable genügen. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 23:19 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-2025 by Thomas Breitkreuz