Variable von Unit1 an Unit2
-
Indem du den entsprechenden Header inkludierst. Siehe auch die FAQ im Abschnitt 'Forms'.
-
Das in der FAQ entspricht nicht ganz so meinen Wünschen.
Ich hab mir das eher so in diesem schema forgestellt.Unit2
#include "Unit1.h" #include "Unit2.h" String Titel; Form1->Button1->Caption = Form2->Titel;Das funktioniert natürlich nicht, sonst bräuchte ich ja nicht nachfragen.
Würde das in so einer Variante gehen?
-
Hallo
Warum sollte das was du da willst anderts sein als das was in der FAQ steht? Nein du kannst es nicht einfach kopieren, aber das Prinzip ist das gleiche. Und das hast du nicht verstanden.
Unit2.h public : ... String Titel; };Unit1.cpp
... #include "Unit2.h" ... void TForm2::Methode(...) { Button1->Caption = Form2->Titel; }bis bald
akari
-
@akari:
Stimmt, in der FAQ hab ich 's wirklich nicht ganz verstanden, wenn ich mir jetzt so deinen letzten Beitrag durchlese.Vielen Dank, das hat mich schon ein Stück weiter gebracht. Jetzt kommen keine Fehlermeldungen mehr.
Aber meine Vorstellung ist trotzdem noch ein bisschen anders. Ich hab versucht das so anzuwenden wie ich es brauche, aber das hat nicht geklappt.
Also erstmal hab ich in der Unit2.h die Variable Titel Deklariert(oder wie man sagt). Dann will ich von der Unit2.cpp das Form1 beeinflussen. dazu hab ich dann das geschrieben:
Form1->Button1->Caption = Form2->Titel;
Durch das Form1 am anfang denkt der Computer ja, das das nächste auch alles zur Form1 gehört. Allerdings möchte ich die Variable von dort beziehen, von wo aus ich die Form1 beeinflusse.
Aber das haut irgendwie nicht hin.
-
Hallo
Durch das Form1 am anfang denkt der Computer ja, das das nächste auch alles zur Form1 gehört. Allerdings möchte ich die Variable von dort beziehen, von wo aus ich die Form1 beeinflusse.

bis bald
akari
-
akari schrieb:
Hallo
Durch das Form1 am anfang denkt der Computer ja, das das nächste auch alles zur Form1 gehört. Allerdings möchte ich die Variable von dort beziehen, von wo aus ich die Form1 beeinflusse.

bis bald
akariAlso dadurch, das mein Befehl mit
Form1->
Anfängt, sagt man dem Computer ja, das die nächsten teile des Befehls alle mit Form1 zutun haben, dem zufolge auch die Variable Titel. Aber diese Variable gehört zu Form2. des halb wird
= Form2->Titel;
geschrieben. Da ich diesen Befehl
Form1->Button1->Caption = Form2->Titel;
in die Unit2.cpp schreib scheint das aber nicht zu funktionieren.
War das jetzt besser erklärt?
Die Variable hab ich natürlich in der Unit2.h Deklariert(?)
-
Hallo
in die Unit2.cpp schreib scheint das aber nicht zu funktionieren.
Was funktioniert niucht?
Die Zeile kopiert den Inhalt der Variable "Titel" in die Caption des Buttons von Form1. Genau das was er machen soll. Was soll er denn deiner Meinung nach machen?bis bald
akari
-
akari schrieb:
Hallo
in die Unit2.cpp schreib scheint das aber nicht zu funktionieren.
Was funktioniert niucht?
Die Zeile kopiert den Inhalt der Variable "Titel" in die Caption des Buttons von Form1. Genau das was er machen soll. Was soll er denn deiner Meinung nach machen?bis bald
akarigenau das, aber das tut es nicht.
-
Hallo
Tja, dann kann ich dir auch nicht helfen...

bis bald
akari
-
Ich hab grad nen ähnliches Problem deshalb hab ich gedacht ich schließe mich mal dem Thread an...
Was muss ich machen wenn ich in meiner Form1 String Benutzername deklariert habe
Und jetzt in Form2 ihm den Wert "Test" zuweisen will???Ich kann ja schlecht Form1->Benutzername machen oder???
-
Hallo
Ich kann ja schlecht Form1->Benutzername machen oder???
Warum sollte das nicht gehen? Der Aufbau oben in meinem Code muß nur etwas verändert werden, dann ist das auch so rum möglich.
bis bald
akari
-
Habs probiert bekomme leider die Meldung:
"Unresolved external _Form1 referenced from "[PFAD] Project1.obj"Unit1.h //--------------------------------------------------------------------------- #ifndef Unit1H #define Unit1H //--------------------------------------------------------------------------- #include <Classes.hpp> #include <Controls.hpp> #include <StdCtrls.hpp> #include <Forms.hpp> #include <ComCtrls.hpp> #include <Menus.hpp> //--------------------------------------------------------------------------- class TForm1 : public TForm { __published: // Von der IDE verwaltete Komponenten TListBox *ListBox1; TButton *Button1; TMainMenu *MainMenu1; TMenuItem *Einstellungen1; TMenuItem *LoginDaten1; private: // Anwender-Deklarationen public: // Anwender-Deklarationen String Benutzername; __fastcall TForm1(TComponent* Owner); }; //--------------------------------------------------------------------------- extern PACKAGE TForm1 *Form1; //--------------------------------------------------------------------------- #endifUnit4.cpp //--------------------------------------------------------------------------- #include <vcl.h> #pragma hdrstop #include "Unit4.h" #include "Unit1.h" //--------------------------------------------------------------------------- #pragma package(smart_init) #pragma resource "*.dfm" TForm4 *Form4; //--------------------------------------------------------------------------- __fastcall TForm4::TForm4(TComponent* Owner) : TForm(Owner) { } //--------------------------------------------------------------------------- void __fastcall TForm4::Button1Click(TObject *Sender) { Form1->Benutzername = Edit1->Text; } //---------------------------------------------------------------------------die Unit.h sind gegenseitig eingebunden!
Schonmal danke für die schnelle Hilfe!
-
Ist unter View-> Units Unit1 oder der Unit in welchem Form1 autaucht auch sichtbar?
Ausserdem würde ich von Variablen im Public-Bereich der Klasse schwerstens absehen und diese _immer_ mit Zugriffsfunktionen kapseln. Alles andere ist fahrlässig.
-
Habs jetzt nochmal neu gemacht, also komplett von vorne und jetzt gehts!
ich musste aber natürlich die Variable in publich deklarieren1. Warum rätst du davon ab
2. meinst du also ich soll beispielsweise ein Objekt in Form1 erstellen und dann auf dieses zugreifen?
Hast du vll ein Beispiel??
-
wenn das so nicht machbar ist gibt es dann vll irgendne ne Art container in dem die
Daten verwaltet werden
also gerade in Bezug auf Variablen...vll son DataModul??
-
@junix wie würdest du vorgehen wenn du Variablen im Hauptprogramm bräuchtest die über ein Unterfenster eingegeben werden?
andere können selbstverständlich auch antworten...
-
kann keiner was dazu sagen was schlecht daran ist die Variablen in public zu deklarieren?
-
Steht in der FAQ unter Programmiertips.