Entwickler-Ecke
Delphi Language (Object-Pascal) / CLX - Variable die für 2 Forms gilt
error - Mo 17.02.03 12:08
Titel: Variable die für 2 Forms gilt
Hi,
ich möchte eine Variable haben die von 2 Forms gleichzeitig benutzt wird. Das heisst wenn die Variable in Form2 geändert wird, soll sie in Form1 auch geändert worden sein.
thx i a - error
foxy - Mo 17.02.03 12:10
einfach eine globale variable deklarieren. Natürlich in deiner Mainfrm....
error - Mo 17.02.03 12:11
Das hatte ich mir schon gedacht :)
Die Frage ist WIE ich sowas mache...
foxy - Mo 17.02.03 12:14
:lol:
kkk
also soweit ich mich noch erinnern kann ( da ich dieses nie benutze, wegen unübersichtlichkeit), musst du über der implementation also unter public diese Deklarieren
Quelltext
1: 2: 3:
| Public procedure xxx; var variable1; |
error - Mo 17.02.03 12:19
| foxy hat folgendes geschrieben: |
:lol:
kkk
also soweit ich mich noch erinnern kann ( da ich dieses nie benutze, wegen unübersichtlichkeit), musst du über der implementation also unter public diese Deklarieren
Quelltext 1: 2: 3:
| Public procedure xxx; var variable1; | |
Entweder ich lass das 'var' weg, dann ist die Variable in der anderen Form nicht deklariert, oder ich schreibs mit hin, dann funktionierts gar net mehr...
Anonymous - Mo 17.02.03 12:23
Variable im Interface Teil vereinbaren und die Unit im zweiten Formular unter Uses anmelden.
foxy - Mo 17.02.03 12:33
Popov das ist noch der Interfaceteil oder etwa nicht??? der geht wohl bis zu Imple...
und das man die Unit1 in der anderen in die Uses setzten muss iss wohl klar :twisted:
Tino - Mo 17.02.03 13:07
| foxy hat folgendes geschrieben: |
| musst du über der implementation also unter public diese Deklarieren |
Im Implementationsteil gibt es keine Public-Sektion. So eine Sektion befindet sind zum Beispiel in der Form-Deklaration.
| foxy hat folgendes geschrieben: |
| und das man die Unit1 in der anderen in die Uses setzten muss iss wohl klar |
Warum ist das klar?
Gruß
TINO
BungeeBug - Mo 17.02.03 13:47
also so gehts jetzt genau ....
Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30:
| unit Unit1;
interface
uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs;
type TForm1 = class(TForm) procedure FormCreate(Sender: TObject); private { Private declarations } public { Public declarations } <- Hier muss die Variable eingebunden werden!!! end;
var Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.FormCreate(Sender: TObject); begin
end;
end. |
foxy - Mo 17.02.03 13:52
| BungeeBug hat folgendes geschrieben: |
also so gehts jetzt genau ....
Code:
Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30:
| unit Unit1;
interface
uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs;
type TForm1 = class(TForm) procedure FormCreate(Sender: TObject); private { Private declarations } public { Public declarations } <- Hier muss die Variable eingebunden werden!!! end;
var Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.FormCreate(Sender: TObject); begin
end;
end. |
|
hmmm ich denke nicht das dies geht ... das kannst du mit functionen oder proceduren machen aber nich mit variabeln
Quelltext
1: 2: 3: 4: 5:
| Public prcedure xx; function xxx; end; var variable: DWORD; |
sry habe oben das end; vergessen
und
@tino
Lesen Pls
ich habe geschrieben "über" d.h. das dies wohl nicht der Implement.teil ist aber egal :wink2:
Wolff68 - Mi 19.02.03 19:43
Mal ausführlich:
Unit1 mit Form1:
Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32: 33: 34: 35: 36: 37: 38: 39:
| ... type TForm1 = class(TForm) Edit1: TEdit; private { Private-Deklarationen } PrivatVariable : String; <= OHNE var, und VOR Prozeduren oder Funktionen. function PrivatFunktion : String; public { Public-Deklarationen } PublicVariable : String; <= OHNE var, und VOR Prozeduren oder Funktionen. function PublicFunktion : String; end;
function GlobalFunktion : String;
var Form1: TForm1; GlobalVariable : String;
implementation {$R *.dfm}
function GlobalFunktion : String; begin Result := 'Bla'; end;
{ TForm1 } function TForm1.PrivatFunktion : String; begin Result := 'Bla'; end;
function TForm1.PublicFunktion : String; begin Result := 'Bla'; end; ... |
Unit2 mit Form2
Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18:
| ... implementation
uses Unit1; // Notwendig !!!
{$R *.dfm}
procedure TForm2.FormActivate(Sender: TObject); begin Label1.Caption := Form1.Edit1.Text; Label2.Caption := Form1.PublicVariable; Label3.Caption := Form1.PublicFunktion; Label4.Caption := GlobalVariable; Label5.Caption := GlobalFunktion; // Zugriff auf PrivatVariable nicht möglich // Zugriff auf PrivatFunktion nicht möglich end; ... |
Man beachte, daß PrivateVariable/Funktion und PublicVariable/Function Unterelemente von Form1 sind. GlobalVariable/Function ist ohne Form1. anzusprechen. Auch sind die Komponenten unter Form1 quasi Public, und somit ebenfalls von 'aussen' ansprechbar (Edit1)
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!