Form1 + Form2 Problem :(
-
Tut mir leid, aber das verstehe ich jetzt leider nicht. Was soll mir das helfen? Wie man auf Variablen zugreift weiss ich doch. Wenn ich das Form2->Memo1 über Button machen würde, würde es ja auch gehen... nur scheinbar nicht beim direkten Start.

-
existiert Form2 zum Zeitpunkt des Zugriffs überhaupt?
-
Hallo
ja die Forms werden ja auch der Reihe nach estellt.
Als erstes wird dein Mainform erzeugt.
Wenn du dann im Konstruktor schon auf eines der anderen Forms zugreifst, kommt natürlich eine Zugriffsverletzung, andere Forms sind noch nicht erzeugt wurden.
Du solltest also dein Konzept verändern. Ich empfehle die Log-Aufrufe unabhängig von einem Form zu machen.bis bald
akari
-
Form2 ist keine zur Laufzeit erstellte Komponente. Deine Frage würde schlussfolgernd bedeuten, man kann dies festlegen. Dann würde sich mir die Frage aufzwängen: "wie?"
-
Linnea schrieb:
existiert Form2 zum Zeitpunkt des Zugriffs überhaupt?
Nein.
In der OnShow sollte es allerdings funktionieren.
-
akari schrieb:
Wenn du dann im Konstruktor schon auf eines der anderen Forms zugreifst, kommt natürlich eine Zugriffsverletzung, andere Forms sind noch nicht erzeugt wurden.
Das ist erlich gesagt doof und ein Designfehler in CBuilder?, wenn das wirklich nicht gehen sollte. Diverse Programme haben beim Start sofort 2 Forms wo etwas passiert, das hier irritiert mich jetzt ein wenig.
Ich würde jetzt nur die Möglichkeit sehen zu "tricksen" und einen Timer reinzusetzen der nach ~2s erst wirklich das startet was ich starten möchte.
In der Hoffnung das bis dahin Borland endlich alle Formulare erstellt hat.Oder im TForm2::TForm2 eine Variable aus TForm1 auswerten und mit der Abarbeitung beginnen.
-
Hallo
theoretisch kannst du in der Projektcode-Datei die Reihenfolge schon ändern.
Aber die Reihenfolge gibt aber auch an, welches Form dein Mainform ist.
Und zwar immer das erste, welches auch immer zuerst erstellt wird.bis bald
akari
-
Das ist kein Designfehler. Zuerst werden die Konstruktoren abgearbeitet.
Du kannst die Formulare ja auch manuell erstellen. Nimm das zweite Form aus der Liste der automatisch zu erzeugenden Forms und erstelle selbst eine Instanz.
-
Das ist jetzt wohl etwas ausserhalb meines Wissens. Könntest du, falls nicht zuviel Aufwand, bitte mit Code zeigen?
Im übrigen habe ich es über die TForm2::TForm2 Variante gelöst.
-
Maiky schrieb:
Das ist jetzt wohl etwas ausserhalb meines Wissens. Könntest du, falls nicht zuviel Aufwand, bitte mit Code zeigen?
Ich denke der Code alleine würde Dir nichts nützen, so lange Du nicht weiß, was da, warum passieren muß.
Ich kann Deine Kenntnisse nicht einschätzen, aber ein Formular läßt sich, wie jedes andere Objekt auch, mit new erzeugen. Solltest Du das nicht verstehen, oder umsetzen können, solltest Du Dir vielleicht die Grundlagen etwas intensiver aneignen.
-
Wie man eine Instanz erstellt ist mir klar, nur wo soll ich diese erstellen? in TForm1::OnCreate ?
Ich habe an diesem Rechner leider keine Entwicklung, aber die Zeile die ich dafür rausnehmen soll steht in Project1.cpp? nehme ich mal an wo die Formulare initialisiert werden.