![]() |
ermitteln ob Fenster geöffnet wurde?
Wie kann man ermitteln, ob ein Fenster (Form) geöffnet wurde und darauf reagieren?
|
Re: ermitteln ob Fenster geöffnet wurde?
Hallo,
warum nicht so:
Code:
Wenns sichtbar ist, ist es doch geöffnet, oder?
If Form1.Visible then
begin //mach was end; mfg Helmi |
Re: ermitteln ob Fenster geöffnet wurde?
Guten Morgen,
indem Du das Ereignis "OnShow" des Forms auswertest. Gruß und schöne Tage Harald |
Re: ermitteln ob Fenster geöffnet wurde?
Vielen Dank für die Antworten.
Aber so einfach ist es wohl doch nicht. Wenn ich so abfrage, kommt eine Fehlemeldung, da das Fenster vileicht noch nicht auf ist. Mit OnShow kann ich erst reagieren wenn das Fenster bereits auf ist. Ich möchte von einer Hauptform aus ein weiteres Fenster öffnen und zuvor abfragen ob bereits ein Fenster auf ist und wenn ja ein anderes öffnen. |
Re: ermitteln ob Fenster geöffnet wurde?
Hallo,
wieso machst du es nicht so:
Code:
Oder versteh ich da was verkehrt?
If Form2.Visible then
Form3.Show; mfg Helmi |
Re: ermitteln ob Fenster geöffnet wurde?
Wenn ich mit If Form2.Visible then Form3.Show; abfrage, kommt eine Fehlermeldung da die Form2 noch nicht offen ist.
|
Re: ermitteln ob Fenster geöffnet wurde?
was für eine Fehlermeldung?
Wann erzeugt du die Forms? |
Re: ermitteln ob Fenster geöffnet wurde?
Ich hab mir die Situation mal nachgebaut :
-3 Formulare. -2 Buttons. Wenn ich in den 1.Button das schreibe :
Delphi-Quellcode:
und in den 2.Button das :
procedure TForm1.Button1Click(Sender : TObject)
begin if Form2.Visible = true then Form3.Show; end;
Delphi-Quellcode:
dann passiert beim Klick auf Button1 erstmal nichts. Wenn ich dann auf den 2.Button Klicke erscheint Form2 und wenn ich dann wieder auf Button1 klicke dann erscheint Form3, und zwar ohen irgendwelche Fehler :gruebel:
procedure TForm1.Button2Click(Sender : TObject)
begin Form2.Show; end; [edit]Rechtschreibfehler korrigiert[/edit] |
Re: ermitteln ob Fenster geöffnet wurde?
Ich hab die Vermutung dass er die Forms zur Laufzeit erzeugt
und dass er deshalb einen Fehler erhält Da würde doch Assigned helfen oder? |
Re: ermitteln ob Fenster geöffnet wurde?
Entschuldigung! Ich hatte vergessen zu schreiben, dass die Forms zur Laufzeit erzeugt werden! Ich habe zwar eine Lösung mit eine Variable, ist aber sehr umständlich und nicht so schön gelöst. Ich habe aber auch noch nicht so viel Erfahrung mit Delphi. Habe zuvor mit VB gearbeitet. Mir ist es sehr wichtig von Euch etwas zu lernen.
|
Re: ermitteln ob Fenster geöffnet wurde?
hallo smart,
lass mal etwas Code sprechen! Da würden wir uns leichter tun. mfg Helmi |
Re: ermitteln ob Fenster geöffnet wurde?
Liste der Anhänge anzeigen (Anzahl: 1)
Hallo,
ich hab dir mal ein Beispiel-Programm gemacht! Wenn du auf Button1 drückst, dann wird die Form "TestForm" erst angezeigt wenn sich auch erzeugt wurde. Button2 erzeugt eine Form. mfg Helmi |
Re: ermitteln ob Fenster geöffnet wurde?
Hier habe ich mal den Code:
Code:
Die Fenster müssen mit Application.CreateForm(TForm2, Form2); aufgerufen werden, da 2 Fenster zu gleich sichtbar sein sollen. Ähnlich wie meim Explorer, Auf der Hauptform soll beim klicken eines Buttons sich ein Fenster öffnen. Beim klicken auf einen zweiten Button soll sich ein weiters Fenster öffnen, aber erst wenn das erste schon offen ist.
--------------------------------
program MeinProgramm; uses Forms, Haupt in 'Haupt.pas' {Form1}, Fenster1 in 'Fenster1.pas' {Form2}, Fenster2 in 'Fenster2.pas' {Form3}; {$R *.RES} begin Application.Initialize; Application.CreateForm(TForm1, Form1); Application.Run; end. -------------------------------- unit Unit1; interface uses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs; type TForm1 = class(TForm) Button1: TButton; Button2: TButton; procedure FormCreate(Sender: TObject); procedure Button1Click(Sender: TObject); procedure Button2Click(Sender: TObject); private { Private-Deklarationen } public { Public-Deklarationen } end; var Form1: TForm1; implementation {$R *.DFM} procedure TForm1.FormCreate(Sender: TObject); begin end; procedure TForm1.Button1Click(Sender: TObject); begin if Form2.Visible = true then Application.CreateForm(TForm2, Form2); end; procedure TForm1.Button2Click(Sender: TObject); begin Application.CreateForm(TForm3, Form3); end; end. |
Re: ermitteln ob Fenster geöffnet wurde?
Hallo,
probiers mal so:
Code:
mfg
procedure TForm1.Button1Click(Sender: TObject);
begin If Assigned(Form3) then //ich vermute du meinst Form3 If Form3.Visible = true then Application.CreateForm(TForm2, Form2); end; procedure TForm1.Button2Click(Sender: TObject); begin Application.CreateForm(TForm3, Form3); end; Helmi |
Re: ermitteln ob Fenster geöffnet wurde?
Ahh... jetzt ja, es klappt. Also miss man mit Assigned immer abfragen wenn z.B. ein Fenster zur Laufzeit erzeugt wird.
Vielen Dank an Euch! |
Re: ermitteln ob Fenster geöffnet wurde?
Zitat:
Trotzdem gern geschehen :-) mfg Helmi |
Alle Zeitangaben in WEZ +1. Es ist jetzt 08:17 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