AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

abfragen, ob eine Form offen ist.

Ein Thema von smart · begonnen am 23. Jul 2007 · letzter Beitrag vom 24. Jul 2007
Antwort Antwort
Seite 2 von 2     12   
Benutzerbild von bitsetter
bitsetter

Registriert seit: 17. Jan 2007
1.169 Beiträge
 
Turbo Delphi für Win32
 
#11

Re: abfragen, ob eine Form offen ist.

  Alt 23. Jul 2007, 12:41
Hi,

ich bin mir zwar nicht sicher, aber geht es nicht mitIf Form1.Showing Then ... ?

Edit:
wenn du die Formulare dynamisch erstellst würde dann ja doch ein Test mitif Assigned(Form) then ... reichen um festzustellen ob das Objekt schon erzeugt wurde.
Gruß bitsetter
"Viele Wege führen nach Rom"
Wolfgang Mocker (geb. 1954), dt. Satiriker und Aphoristiker
  Mit Zitat antworten Zitat
h826839

Registriert seit: 23. Apr 2007
4 Beiträge
 
#12

Re: abfragen, ob eine Form offen ist.

  Alt 23. Jul 2007, 14:29
hi... nochmal


wenn den Programm ein MDI ist dann Funktioniert auch

if (Main.ActiveMDIChild is Form5) then ...
mfg h826839
  Mit Zitat antworten Zitat
Benutzerbild von RavenIV
RavenIV

Registriert seit: 12. Jan 2005
Ort: Waldshut-Tiengen
2.875 Beiträge
 
Delphi 2007 Enterprise
 
#13

Re: abfragen, ob eine Form offen ist.

  Alt 23. Jul 2007, 14:37
Zitat von smart:
...Ich möchte einfach erreichen, dass man eine Form nicht zweimal aufrufen (öffnen) kann. ...
Dazu gibt es schon einige Beiträge hier.
Such mal nach "eine Instanz", "OneInstance", "mehrfach starten", oder "Mutex". Dann wirst Du geholfen.
Klaus E.
Linux - das längste Text-Adventure aller Zeiten...
Wer nie Linux mit dem vi konfiguriert hat, der hat am Leben vorbei geklickt.
  Mit Zitat antworten Zitat
Muetze1
(Gast)

n/a Beiträge
 
#14

Re: abfragen, ob eine Form offen ist.

  Alt 23. Jul 2007, 14:39
Zitat von h826839:
wenn den Programm ein MDI ist dann Funktioniert auch

if (Main.ActiveMDIChild is Form5) then ...
Nein, das bedeutet nur, das die aktuelle, aktive Form das Child ist, nicht aber, dass es nicht sichtbar ist, da es auch sichtbar und nicht aktiv sein kann. Diese Abfrage ist somit auch bei MDI nicht zweckerfüllend...

Zitat von RavenIV:
Zitat von smart:
...Ich möchte einfach erreichen, dass man eine Form nicht zweimal aufrufen (öffnen) kann. ...
Dazu gibt es schon einige Beiträge hier.
Such mal nach "eine Instanz", "OneInstance", "mehrfach starten", oder "Mutex". Dann wirst Du geholfen.
Eine Form einmalig zeigen ist was anderes als ein Programm einmalig starten können...
  Mit Zitat antworten Zitat
Benutzerbild von Codewalker
Codewalker

Registriert seit: 18. Nov 2005
Ort: Ratingen
945 Beiträge
 
Delphi XE2 Professional
 
#15

Re: abfragen, ob eine Form offen ist.

  Alt 24. Jul 2007, 08:22
Du könntest doch einfach im OnCreate Deines Forms einen Mutex erzeugen
Delphi-Quellcode:
dwMutex : DWORD;
{ .... }
dwMutex := CreateMutex(nil,true,'Test'); // Schauen, ob das Programm schon mal läuft
ihn im OnClose wieder freigeben
CloseHandle(dwMutex);
und dann einfach vor dem CreateForm prüfen, ob der Mutex schon existiert
Delphi-Quellcode:
dwMutex := CreateMutex(nil,true,'Test'); // Mutex erzeugen
  try
    if GetLastError <> ERROR_ALREADY_EXISTS then // Mutex noch nicht erzeugt
     CreateForm( {... und so weiter }
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.

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.
  Mit Zitat antworten Zitat
Benutzerbild von SirThornberry
SirThornberry
(Moderator)

Registriert seit: 23. Sep 2003
Ort: Bockwen
12.235 Beiträge
 
Delphi 2006 Professional
 
#16

Re: abfragen, ob eine Form offen ist.

  Alt 24. Jul 2007, 08:47
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.
Jens
Mit Source ist es wie mit Kunst - Hauptsache der Künstler versteht's
  Mit Zitat antworten Zitat
Benutzerbild von Codewalker
Codewalker

Registriert seit: 18. Nov 2005
Ort: Ratingen
945 Beiträge
 
Delphi XE2 Professional
 
#17

Re: abfragen, ob eine Form offen ist.

  Alt 24. Jul 2007, 11:29
Klar, das geht - dann wirds natürlich noch einfacher
  Mit Zitat antworten Zitat
Benutzerbild von SirThornberry
SirThornberry
(Moderator)

Registriert seit: 23. Sep 2003
Ort: Bockwen
12.235 Beiträge
 
Delphi 2006 Professional
 
#18

Re: abfragen, ob eine Form offen ist.

  Alt 24. Jul 2007, 11:34
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.
Jens
Mit Source ist es wie mit Kunst - Hauptsache der Künstler versteht's
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 2     12   


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 23:34 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