Entwickler-Ecke

Delphi Language (Object-Pascal) / CLX - Globale Variablen von einer Form in eine andere


Sqall - Di 24.01.06 20:58
Titel: Globale Variablen von einer Form in eine andere
Hi,

also mien problem ist, ich hab da nen schönes programm. In einer Form sind eine Menge globale variablen. Und in einer anderen form muss ich auf diese variablen zugreifen. nun dachte ich, es geht wie bei procedures oder functions, sodass ich vor die variable einfach Form1.variable schreibe, aber fehlanzeige. Das geht bestimmt, nur müsstet ihr mir helfen. Danke

sqall


mkinzler - Di 24.01.06 21:11

Auf globale variablen kannst du ohne Prefix zugreifen.
z.b

Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
Unit 1;

interface

uses
   ...

var EineVariable: Integer;

...

Unit2;

...


   EineVariable := 1;

...


Logikmensch - Mi 25.01.06 07:25
Titel: Zugriff auf öffentliche Form-Variablen
Hallo!

Du kannst auch auf öffentliche Variablen eines Forms FORM2 von einem anderen Form FORM1 aus zugreifen, einfach indem Du die betreffende Form-Unit (z.B. UNIT2.PAS) im implementation-Abschnitt über uses einbindest. Die betreffenden Variablen müssen dann aber im public oder published-Abschnitt des Form stehen, damit man sie von außen "sehen" kann.
Besser ist allerdings die Variante, die eigentlichen Variablen im protected-Abschnitt mit vorangehenden F zu benennen (z.B. Fadresse:string) und im public-Abschnitt jeweils ein property anzulegen, das auf diese Variable zugreift:


Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
type
  TForm2=class(TForm)
    protected
      Fadresse:string;
    public
      property adresse:string read Fadresse write Fadresse;
  end;


Der Zugriff auf diese Variablen bzw. properties erfolgt von Form1 aus mit vorangestelltem Form2, also z.B. Form2.adresse.

Variablen gehören aber grundsätzlich nur dann in ein Form, wenn sie von der Sache her wirklich zu dem Formular gehören. Haben sie aber wirklich globalen Charakter, dann solltest Du sie, wie mkinzler schreibt, im Interface-Abschnitt der betreffenden Unit als global deklarieren.

Liebe Grüße,

Claus.


Sqall - Do 26.01.06 17:03

Gut zu wissen. Danke.