![]() |
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? |
Re: Form dynamisch erzeugt...2mal angezeigt?
Vermutlich weil du mit Actions, womöglich mit einer Action-Komponente hantierst.
greetz mytar :-D |
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?
|
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 |
Re: Form dynamisch erzeugt...2mal angezeigt?
hallo bowler ^^
Zitat:
hast du ne idee wie ich das ändenr könnte? |
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. |
Re: Form dynamisch erzeugt...2mal angezeigt?
reicht es Dir, das Fenster Modal darzustellen?
|
Re: Form dynamisch erzeugt...2mal angezeigt?
hoi
Zitat:
Zitat:
Delphi-Quellcode:
erzeugt :cry:
serverform := TServerForm.Create(Form1);
serverform.Show; Zitat:
Zitat:
|
Re: Form dynamisch erzeugt...2mal angezeigt?
Er meint statt mit Show deine Instanz von TForm mit ShowModal zu öffnen.
greetzmytar :-D |
Re: Form dynamisch erzeugt...2mal angezeigt?
moin,
hab gerade herausgefunden, das bereits das:
Code:
meine neue form anzeigt....hm wie kann ich das denn nun verhindern?
serverform := TForm2.Create(Form1);
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:19 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 by Thomas Breitkreuz