Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi form 2mal starten (https://www.delphipraxis.net/33576-form-2mal-starten.html)

tgreif 9. Nov 2004 12:44


form 2mal starten
 
hi

wie kann ich verhinden das ein form 2mal gestartet werden kann ?

modal ist leider keine loesung!

Vielen dank !!

Matze 9. Nov 2004 12:46

Re: form 2mal starten
 
:hi:

Möchtest du ein Formular nur einmal starten oder deine komplette Anwendung?

Falls die Anwendung nur einmal gestartet werden soll, macht man das so.

Nachtrag: SOnst geht ShowModal schon, da man den Button, der das Formular öffnet, nicht mehr anklickbar ist, solange das 2. Form sichtbar ist.

Ultimator 9. Nov 2004 12:49

Re: form 2mal starten
 
Wenn die ganze Anwendung nur einmal gestartet werden darf, dann such mal nach Hier im Forum suchenMutex.

Wenn aber nur eine Form nur einmal gestartet werden darf, dann definiere doch im Hauptprogramm eine Variable vom Typ Boolean, die du auf true setzt, sobald die Form geöffnet wird, und auf false, wenn die Form wieder geschlossen wird.
Dann kannst du die Variable abfragen, bevor die Form gestartet wird und je nachdem entscheiden, ob sie geöffnet werden kann oder nicht.

tgreif 10. Nov 2004 09:41

Re: form 2mal starten
 
danke matze

das mit dem programmstart habe ich schon so .

ich wollte nur das mehrfachstarten der anderen formulare verhindern!

sakura 10. Nov 2004 09:46

Re: form 2mal starten
 
Wenn Dein Formular TForm2 ist, dann so:
Delphi-Quellcode:
procedure ShowForm2;
begin
  if Form2 = nil then
    Form2 := TForm2.Create(Application);
  Form2.Show;
  Form2.BringToFront;
end;
...:cat:...

Robert_G 10. Nov 2004 10:46

Re: form 2mal starten
 
Ich hatte mich schonmal auf die Suche begeben, aber damlas nix gefunden...
Gibt es wirklich keine Lösung für ein Singleton in Delphi OHNE globale Variable ( :? ) ?
Nachtrag:
Ich meine, in C# habe cih ja static member für meine Klassen (Ich glaube sogar Delphi.Net kann das :gruebel: ), aber unter Win32 hätte ich auch ganz gerne ein Singleton (Wenn auch nur um bestehenden Code von diesen ekligen Variablen zu befreien...)
Das hier würde ja nur eine Instanz von Miep ermöglichen:
Code:
class Miep
{
   static Miep instance;
   
   private Miep()
   {}

   public Miep CreateInstance()
   {
      if (instance == null)
        instance = new Miep();
     
      return instance;
   }
}
Gibt's da einen ähnlichen Weg für Delphi32? :angle2:

Jens Schumann 10. Nov 2004 10:58

Re: form 2mal starten
 
Hallo,
ich würde es mit TApplication.ComponentCount versuchen.
Ich bin mir ziemlich sicher, dass durch
Delphi-Quellcode:
TForm2.Create(Application);
das Form in die Collection aufgenommen wird.
Dann kann man über die Collection iterieren und mit
Delphi-Quellcode:
If Application.Component is TForm2
darauf reagieren.
Damit das klappt muss man natülich, wenn Form2 freigegeben wird
Delphi-Quellcode:
TApplication.RemoveComponent
das wieder aus der Collection entfernen.
Das wäre jetzt mein Ansatz

Robert_G 10. Nov 2004 11:15

Re: form 2mal starten
 
@Jens
Das wäre eine annehmbare Notlösung. ;)
Da ich mich demnächst mal wieder über 2 D32 -Projekte setzen muss ( :roll: ) komme ich wohl nicht drumrum mich heute Abend hinzuhocken und mir was "hübscheres" einfallen zu lassen* oder deine Lösung zu nehmen.

*Wobei mir da gerade auch nur eine Liste von Instanzen einfällt. :gruebel:

edit: Schlechtschreibung

tgreif 10. Nov 2004 11:26

Re: form 2mal starten
 
vielen dank an alle


ich habe mich am ende fuer den vorschlag von Sakura entschlossen !!
funktioniert wunderbar !!

Morpheus 10. Nov 2004 11:33

Re: form 2mal starten
 
Hoi,
also ich hab zufällig grade das gleiche Problem....
Aber bei mit funktioniert der Vorschlag von Sakura leider nicht, denn wenn ich mein Formular einmal geschlossen habe und es wieder aufrufen will, kommt es nicht wieder :(

mfg
der morph


Alle Zeitangaben in WEZ +1. Es ist jetzt 11:23 Uhr.
Seite 1 von 2  1 2      

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