Entwickler-Ecke
Grafische Benutzeroberflächen (VCL & FireMonkey) - 2. Form geht bei Programmstart mit auf
Fabian E. - Do 01.05.08 17:33
Titel: 2. Form geht bei Programmstart mit auf
hallo zusammen,
ich habe hier ein sehr merkwürdiges Problem.
Ich habe in meiner Anwedung mehrere Formulare.
Sobald ich nun meine Anwedung starte, wird korrekterweiße die Mainform angezeigt.
Allerdings kommt dazu noch eine andere Form. :shock:
Ich habe keine Ahnung vorher... Ich rufe sie nicht auf und gar nichts... :(
Die wird erst bei einem OnClick eines Buttons angezeigt, der wiederrum auf einer anderen Form ist...
Hat jemand eine Idee? Vielleicht irgendwas in der IDE?
Der Fehler ist erst seit kurzem vorhanden... soweit ich weiß habe ich nur einen neuen Button auf der Form platziert... :(
gruß
FSS - Do 01.05.08 17:47
Kannst du den entsprechenden Quelltext posten in dem du den Fehler vermutest, dann kann ich es mal anschauen?
Clemens L. - Do 01.05.08 18:44
Delphi 2007 habe ich zwar nicht, aber in Delphi 6 gibt es unter "Projekt -> Optionen..." Die Registerkarte Formulare wo steht welche Formulare automatisch erzeugt werden sollen. Da kann man die rausnehmen / reintun, vielleicht ist das bei dir der Fall.
Gausi - Do 01.05.08 18:53
Hast du bei der Form vielleicht im OI die Eigenschaft Visible auf True gestellt?
Fabian E. - Do 01.05.08 19:04
Gausi hat folgendes geschrieben: |
Hast du bei der Form vielleicht im OI die Eigenschaft Visible auf True gestellt? |
Ja hatte ich :autsch:
Ich hab eben festgestellt, dass man das so verhindern kann und dachte mir so, dass das ja nicht grade die schönste Lösung sei... :roll:
Hmm... Naja okay... :lol:
Aber danke. Wusste gar nicht, dass das solche Auswirkungen hat...
Aber eine Frage bleibt noch... Warum war es Visible? ;)
Naja, egal... Für die Zukunft weiß ich es! :)
Danke!
gruß
zuma - Fr 02.05.08 08:58
Es ist Visible, weil du a) die eigenschaft gesetzt hast und b) das Fenster bei Programmstart implizit miterzeugst.
in deiner Haupt-Unit wird irgendwo
Application.CreateForm(TDeinFenster, DeinFenster);
aufgerufen, dadurch erzeugst du das Fenster schon beim start der Hauptunit.
verhindern des erzeugens geht z.b. so:
methode nach dem End der Fenster-implementation von Form2 deklarieren
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22:
| type TForm2 = class(TForm) private public end; procedure zeigeFenster2; implementation
procedure zeigeFenster2; begin Application.CreateForm(TForm2, Form2); try Form2.show; finally Form2.Release; end; end; |
natürlich sollte dann Form2 in Form1 in der (unteren) Uses eingebunden sein.
nun reicht ein zeigeForm2 in Form1 und das Fenster wird erst zur Laufzeit erzeugt, wenn es benötigt wird.
Nun musst du in deinem Projekt unter Optionen -> Formulare
das Form2 von 'automatisch erzeugen' nach 'verfügbare Formulare' verschieben
(bei Neu/Formular werden die immer unter 'autom. erzeugen' eingetragen)
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2025 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!