AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Sonstige Fragen zu Delphi Delphi Form dynamisch erzeugt...2mal angezeigt?
Thema durchsuchen
Ansicht
Themen-Optionen

Form dynamisch erzeugt...2mal angezeigt?

Ein Thema von Pseudemys Nelsoni · begonnen am 16. Aug 2004 · letzter Beitrag vom 18. Aug 2004
Antwort Antwort
Seite 1 von 2  1 2      
Benutzerbild von Pseudemys Nelsoni
Pseudemys Nelsoni

Registriert seit: 24. Dez 2002
Ort: Hamburg-Harburg
3.551 Beiträge
 
#1

Form dynamisch erzeugt...2mal angezeigt?

  Alt 16. Aug 2004, 15:40
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?
Mario
MSN: cyanide@ccode.de
  Mit Zitat antworten Zitat
mytar

Registriert seit: 30. Mai 2004
Ort: Zermatt
411 Beiträge
 
Delphi 6 Enterprise
 
#2

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

  Alt 16. Aug 2004, 15:43
Vermutlich weil du mit Actions, womöglich mit einer Action-Komponente hantierst.

greetz
mytar
Francis Obikwelu
  Mit Zitat antworten Zitat
Benutzerbild von Pseudemys Nelsoni
Pseudemys Nelsoni

Registriert seit: 24. Dez 2002
Ort: Hamburg-Harburg
3.551 Beiträge
 
#3

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

  Alt 16. Aug 2004, 15:44
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?
Mario
MSN: cyanide@ccode.de
  Mit Zitat antworten Zitat
Benutzerbild von Bowler
Bowler

Registriert seit: 8. Sep 2003
Ort: Bochum
148 Beiträge
 
Delphi XE7 Enterprise
 
#4

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

  Alt 16. Aug 2004, 15:51
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...

Gruß
Christian
Christian Rüsken
  Mit Zitat antworten Zitat
Benutzerbild von Pseudemys Nelsoni
Pseudemys Nelsoni

Registriert seit: 24. Dez 2002
Ort: Hamburg-Harburg
3.551 Beiträge
 
#5

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

  Alt 16. Aug 2004, 15:58
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?
Mario
MSN: cyanide@ccode.de
  Mit Zitat antworten Zitat
Benutzerbild von Bowler
Bowler

Registriert seit: 8. Sep 2003
Ort: Bochum
148 Beiträge
 
Delphi XE7 Enterprise
 
#6

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

  Alt 16. Aug 2004, 16:06
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.
Christian Rüsken
  Mit Zitat antworten Zitat
Benutzerbild von Leuselator
Leuselator

Registriert seit: 18. Mär 2003
Ort: Berlin
589 Beiträge
 
Delphi 8 Architect
 
#7

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

  Alt 16. Aug 2004, 16:12
reicht es Dir, das Fenster Modal darzustellen?
Tim Leuschner
Programmierer = moderner Sysiphos: stets wenn er meint, den Stein seiner Dummheit auf den Berg des Wissens gewuchtet zu haben, erblickt er einen völlig neuen Aspekt und der Dummfels poltert mit Getöse zurück ins Tal der Unwissenheit...
  Mit Zitat antworten Zitat
Benutzerbild von Pseudemys Nelsoni
Pseudemys Nelsoni

Registriert seit: 24. Dez 2002
Ort: Hamburg-Harburg
3.551 Beiträge
 
#8

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

  Alt 16. Aug 2004, 16:45
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

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?
Mario
MSN: cyanide@ccode.de
  Mit Zitat antworten Zitat
mytar

Registriert seit: 30. Mai 2004
Ort: Zermatt
411 Beiträge
 
Delphi 6 Enterprise
 
#9

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

  Alt 16. Aug 2004, 16:46
Er meint statt mit Show deine Instanz von TForm mit ShowModal zu öffnen.

greetzmytar
Francis Obikwelu
  Mit Zitat antworten Zitat
Benutzerbild von Pseudemys Nelsoni
Pseudemys Nelsoni

Registriert seit: 24. Dez 2002
Ort: Hamburg-Harburg
3.551 Beiträge
 
#10

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

  Alt 16. Aug 2004, 17:25
moin,

hab gerade herausgefunden, das bereits das:

Code:
serverform := TForm2.Create(Form1);
meine neue form anzeigt....hm wie kann ich das denn nun verhindern?
Mario
MSN: cyanide@ccode.de
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 17:06 Uhr.
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