gleiche Variable über mehere Formen bzw. Units

_Dome_

Mitglied
Hallo,
Kann man die gleiche Variable z.b. "int wl1" in verschiedene Fomen einsetzen und deren Wert vo anderer Form verändern? Wenn ja dann sagt bitte wie.
 

Supa

Erfahrenes Mitglied
Klar kannst Du!

Wenn Du die Variable in der unit1.h im public Teil deklarierst und dann in der unit in der Du sie benuzten möchtest
Code:
#include<unit1.h>
hinzufügst, kannst du mit beispielsweise
Code:
Form1->meinevariabel = 123;
(angenommen unit1.h gehört auch zum Formular1) darauf zugreifen...

mfg
 

_Dome_

Mitglied
Im puplic-teil deklarieren?
Ist die Unit puplic, wenn ich auf "Unit Header einschließen" klicke?

Ich möchte die Variable "wetter", die sich in der Form "zeitfenster" befindet und in Unit3.cpp niedergeschrieben ist in Unit1.cpp der Form "Menu" änder. Ich habe des so versucht:
randomize();
zeitfenster->wetter=random(5);
Muss ich jetzt in jeder Form die Variable definieren? Wahrscheinlich kommt hier des "Puplic" zum einsatz, aber wie?

Schonmal Danke

_Dome_
 

Supa

Erfahrenes Mitglied
Ich hab echt Schwierigkeiten deinen Text zu verstehn!

Du muss nicht die ganze Unit public machen, nur die Variable, die du Global benutzen möchtest.

So wie ich das verstehe hast du zwei Formulare "zeitfenster" und "menu"

zeitfenster basiert auf unit3.cpp und unit3.h
...und...
menu basiert auf unit1.cpp und unit1.h

Jetzt kannst du in unit3.h im Public-Teil (ist normal dick und fett markiert und dort steht "public:") einfach deine Variable deklarieren, auf die du aus anderen Units zugreifen können willst. z.B.
Code:
String wetter;

Wenn du die Variable jetzt von deinem Formular "menu" aus ändern willst, includierst du ganz oben in unit1.cpp die unit3.h indem du folgende Zeile hinzufügst:
Code:
#include <unit3.h> //diese Unit muss sich im Projektordner befinden
Du gibts quasi in unit1 bekannt, das auch noch ne unit3 existiert und der Compiler diese doch bitte schön beim compilieren beachten soll.

Jetzt kannst du an beliebiger stelle in unit1 auf die Variable "wetter" mit
Code:
zeitfenster->wetter = "xyz";
zugreifen...

eigentlich total einfach...
 

_Dome_

Mitglied
Ich habe mich dusselig angestellt - sorry.
Aber trotzdem danke für eure super Hilfe. - ist nun klar.
Gruß
_Dome_
 

_Dome_

Mitglied
Habe es nun genau so gemacht, aber es geht nicht.
Ich habe ein neues Projekt gestartet in dem ich nur mit zwei Formen arbeite.
Jede Form hat einen Button und ein Edit Fenster.

Nun will ich in Form1 ein public Varibale "int test" festlegen die beim klicken auf Button1 in Form1 den Wert "1" bekommt (also test=1). Wenn ich nun in Form2 auf Button2 klicke soll der Wert von "test" in Edit2 angezeigt werden.

Ich habe des so in Unit1.h geschrieben:
class TForm1 : public TForm
{
__published: // Von der IDE verwaltete Komponenten
TButton *Button1;
TEdit *Edit1;
void __fastcall Button1Click(TObject *Sender);
void __fastcall FormMouseMove(TObject *Sender, TShiftState Shift,
int X, int Y);
private: // Anwender-Deklarationen
public: int test; // Anwender-Deklarationen
__fastcall TForm1(TComponent* Owner);
};
Button1 in Form1:
void __fastcall TForm1::Button1Click(TObject *Sender)
{
test=1;
}

Der Code von Edit2:
void __fastcall TForm2::Button2Click(TObject *Sender)
{
Edit2->Text=test;
}

Stell ich mich jetzt doof an oder warum klappt des nicht. Bitte hab gedult mit mir, ich bin eben noch ein Anfänger.
Gruß
_Dome_
 

_Dome_

Mitglied
Ich hab´s nun

Ich habe ne lächerliche Kleinigkeit falsch gemacht (Änderung rot makiert):

Button1 in Form1:
Zitat:
void __fastcall TForm1::Button1Click(TObject *Sender)
{
test=1;
}

Der Code von Edit2:
Zitat:
void __fastcall TForm2::Button2Click(TObject *Sender)
{
Edit2->Text=Form1->test;
}

Nun greift Edit2 auf Form2 auf die Variable "test" in Form1 zu.

Danke Danke Danke an euch alle:)

Gruß
_Dome_