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 dynamisch erzeugt...2mal angezeigt? (https://www.delphipraxis.net/27849-form-dynamisch-erzeugt-2mal-angezeigt.html)

Pseudemys Nelsoni 16. Aug 2004 15:40


Form dynamisch erzeugt...2mal angezeigt?
 
moin,

ich habe mir ein Form "designt" und wollte dieses zur laufzeit beliebig erzeugen...wenn ich das tue mit:

Delphi-Quellcode:
procedure TForm1.Action1Execute(Sender: TObject);
var
  serverform: TForm2;
begin
  serverform := TForm2.Create(self);
  serverform.Show;
end;

dann erscheint Form2 je nach clicks 2xmal... also 2,3,4,6...usw woher kommt das?

mytar 16. Aug 2004 15:43

Re: Form dynamisch erzeugt...2mal angezeigt?
 
Vermutlich weil du mit Actions, womöglich mit einer Action-Komponente hantierst.

greetz
mytar :-D

Pseudemys Nelsoni 16. Aug 2004 15:44

Re: Form dynamisch erzeugt...2mal angezeigt?
 
hm was hat das damit zu tun mit welcher komponente ich mein form erstelle? den code den ein button hat führt er ja nich doppelt aus oder?

Bowler 16. Aug 2004 15:51

Re: Form dynamisch erzeugt...2mal angezeigt?
 
Ich würde mal grob vermuten, dass liegt daran, dass die Form-Variable lokal an die Procedure gebunden ist.
Wenn Du die Prozedur aufrufst, dann wird eine Variable deklariert, und dann ein Objekt der Form-Klasse (Tform2) in diese Variable instanziert. Danach wird das Form angezeigt, und der Programmablauf verschwindet aus der Methode. Danach ist die Variable wieder unbekannt, und wenn du die Funktion dann wieder aufrufst, dann geht das Spiel von vorne los.

Das Programm erzeugt dir deswegen pro Klick ein Formular. Wenn Du die Variable in der Klassen-Definition vom Form1 deklarierst, dann kannst du das nur einmal erstellen, und anzeigen. Aber dann solltest du auch vor dem erstellen aufpassen, ob es bisher noch nicht existiert (mit Assigned).

Hoppla, ganz schön konfus, was ich da geschrieben habe. Ich hoffe, es ist etwas verständlich... :-D

Gruß
Christian

Pseudemys Nelsoni 16. Aug 2004 15:58

Re: Form dynamisch erzeugt...2mal angezeigt?
 
hallo bowler ^^

Zitat:

Das Programm erzeugt dir deswegen pro Klick ein Formular
das ist ja das problem, mir werden gleich 2 neue formulare pro klick erstellt, nicht eins :(

hast du ne idee wie ich das ändenr könnte?

Bowler 16. Aug 2004 16:06

Re: Form dynamisch erzeugt...2mal angezeigt?
 
Hm, das ist seltsam. Erstmal sorry, da hatte ich oben was falsch verstanden.
Da fällt mir momentan auch nichts zu ein. Versuche dochmal, rein zu debuggen (schreibt mal das so?!). Setze auf das Create einen Breakpoint, und dann gehst du mit F7 und F8 durch den Code, und schaust, warum das Fenster 2x erstellt wird. Aus irgendeinem Grund muss ja irgendwo 2x der entsprechende Code aufgerufen werden. Das wäre mein erster Ansatz.


Was anderes....das TForm2 hat nicht zufällig die Visible-Property auf TRUE?

Das nächste wäre, dass ich in den Projekt-Einstellungen mal gucken würde, ob das Form autoamtisch erstellt wird. Das ggf. ändern, denn dann kannst du relativ sicher sein, dass es nur erstellt wird, wenn du es im Code angibst....ich weiss nicht, wie Delphi das genau macht.

Leuselator 16. Aug 2004 16:12

Re: Form dynamisch erzeugt...2mal angezeigt?
 
reicht es Dir, das Fenster Modal darzustellen?

Pseudemys Nelsoni 16. Aug 2004 16:45

Re: Form dynamisch erzeugt...2mal angezeigt?
 
hoi

Zitat:

Was anderes....das TForm2 hat nicht zufällig die Visible-Property auf TRUE?
Doch hat es, da es aber ein MDIChild (ist eine mdi anwendung, hab vergessen das zu erwähnen) ist kann man diesen wert nicht ändern.

Zitat:

Versuche dochmal, rein zu debuggen
Habe ich, beide fenster werden hier:

Delphi-Quellcode:
  serverform := TServerForm.Create(Form1);
  serverform.Show;
erzeugt :cry:

Zitat:

Das nächste wäre, dass ich in den Projekt-Einstellungen mal gucken würde, ob das Form autoamtisch erstellt wird. Das ggf. ändern
Hatte ich dort auch schon rausgenommen. :(

Zitat:

reicht es Dir, das Fenster Modal darzustellen?
wie meinst du das?

mytar 16. Aug 2004 16:46

Re: Form dynamisch erzeugt...2mal angezeigt?
 
Er meint statt mit Show deine Instanz von TForm mit ShowModal zu öffnen.

greetzmytar :-D

Pseudemys Nelsoni 16. Aug 2004 17:25

Re: Form dynamisch erzeugt...2mal angezeigt?
 
moin,

hab gerade herausgefunden, das bereits das:

Code:
serverform := TForm2.Create(Form1);
meine neue form anzeigt....hm wie kann ich das denn nun verhindern?


Alle Zeitangaben in WEZ +1. Es ist jetzt 00:56 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