![]() |
form 2mal starten
hi
wie kann ich verhinden das ein form 2mal gestartet werden kann ? modal ist leider keine loesung! Vielen dank !! |
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 ![]() Nachtrag: SOnst geht ShowModal schon, da man den Button, der das Formular öffnet, nicht mehr anklickbar ist, solange das 2. Form sichtbar ist. |
Re: form 2mal starten
Wenn die ganze Anwendung nur einmal gestartet werden darf, dann such mal nach
![]() 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. |
Re: form 2mal starten
danke matze
das mit dem programmstart habe ich schon so . ich wollte nur das mehrfachstarten der anderen formulare verhindern! |
Re: form 2mal starten
Wenn Dein Formular TForm2 ist, dann so:
Delphi-Quellcode:
...:cat:...
procedure ShowForm2;
begin if Form2 = nil then Form2 := TForm2.Create(Application); Form2.Show; Form2.BringToFront; end; |
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:
Gibt's da einen ähnlichen Weg für Delphi32? :angle2:
class Miep
{ static Miep instance; private Miep() {} public Miep CreateInstance() { if (instance == null) instance = new Miep(); return instance; } } |
Re: form 2mal starten
Hallo,
ich würde es mit TApplication.ComponentCount versuchen. Ich bin mir ziemlich sicher, dass durch
Delphi-Quellcode:
das Form in die Collection aufgenommen wird.
TForm2.Create(Application);
Dann kann man über die Collection iterieren und mit
Delphi-Quellcode:
darauf reagieren.
If Application.Component is TForm2
Damit das klappt muss man natülich, wenn Form2 freigegeben wird
Delphi-Quellcode:
das wieder aus der Collection entfernen.
TApplication.RemoveComponent
Das wäre jetzt mein Ansatz |
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 |
Re: form 2mal starten
vielen dank an alle
ich habe mich am ende fuer den vorschlag von Sakura entschlossen !! funktioniert wunderbar !! |
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 15:27 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