Entwickler-Ecke

Delphi Language (Object-Pascal) / CLX - Variablenübergabe zwischen 2 Form's


Snakebyte - Fr 11.02.05 09:27
Titel: Variablenübergabe zwischen 2 Form's
Hallo,

wie kann man Variablen (Integer,String) von einem Form (Hauptprogramm) in ein zweites Form (z.B. Diagramm usw.) übergeben?

Wir wissen bereits wie man Variablen an Proceduren und Funktionen übergibt, aber wir kommen mit dem übergeben zwischen den Form's nicht klar.

MFG Max Schulz


jasocul - Fr 11.02.05 09:40

Hilft dir das [http://www.delphi-forum.de/viewtopic.php?t=24800&highlight=] vielleicht weiter?


Sprint - Fr 11.02.05 09:41

In dem du deiner TForm Klasse paar Properties (Eigenschaften) spendierst oder halt öffentlich Feldvariablen.


chrisdrury - Fr 11.02.05 09:45

Also wenn ich Dich richtig verstanden habe, ist die Lösung ganz einfach: 8)
Du kannst mit der Angabe des Formular-Namens und der entsprechenden Variablen auch von einem anderen Form auf diese Variablen zugreifen.
z.B. (wobei MainForm das Hauptformular ist und AString eine dort im Public-Teil deklarierte String-Variable):

Delphi-Quelltext
1:
2:
3:
4:
5:
6:
s: string;

procedure Form1.Sonstwas;
begin
  s := MainForm.AString;
end;


Nachträglich:
Da waren schon einige schneller als ich! :wink:


jasocul - Fr 11.02.05 09:47

Nicht zu vergessen, dass die eine Unit bei der anderen unter Uses auftauchen muss.


Snakebyte - Fr 11.02.05 09:50

Hilft uns irgendwie nicht weiter!
Ich hefte mal unseren Quelltext ran, vieleicht könnt ihr uns das mal am Beispiel erklären!



Form1
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:
40:
41:
42:
43:
44:
45:
46:
47:
48:
49:
50:
51:
52:
53:
54:
55:
56:
57:
58:
59:
60:
61:
62:
63:
64:
65:
66:
67:
68:
69:
70:
71:
72:
73:
74:
75:
76:
77:
78:
79:
80:
81:
82:
83:
84:
85:
86:
87:
88:
89:
90:
91:
92:
93:
94:
95:
96:
97:
98:
99:
100:
101:
102:
103:
104:
105:
106:
107:
108:
109:
110:
111:
112:
113:
114:
115:
116:
117:
118:
119:
120:
121:
122:
123:
124:
125:
126:
127:
128:
129:
130:
131:
132:
133:
134:
135:
136:
137:
138:
139:
140:
141:
142:
143:
144:
145:
146:
147:
148:
149:
150:
151:
152:
153:
154:
155:
156:
157:
158:
159:
160:
161:
162:
163:
164:
165:
166:
167:
168:
169:
170:
171:
172:
173:
174:
175:
176:
177:
178:
179:
180:
181:
182:
183:
184:
185:
186:
187:
188:
189:
190:
191:
192:
193:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;

type
  THauptP = class(TForm)
    Button1: TButton;
    procedure Button1Click(Sender: TObject);
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

var
  HauptP: THauptP;

  schritte : integer;
  //Schritte=Zählschritte für Achseneinteilungsbezeichnung
  ytextp,xtextp,ytextn,xtextn : integer;
  //Achseneinteilungsbezeichnung -> ytextp = Y-Achse, Einteilung postiv usw.
  xb,yb: string;
  //xb=Bezeichnung X-Achse, yb=Bezeichnung Y-Achse

implementation

uses Dia4QPrg;

{$R *.dfm}

procedure THauptP.Button1Click(Sender: TObject);
begin

schritte:=2;    //  <<<<----Diese Variablen sollen übergeben werden!
ytextp:=14;
xtextp:=14;
ytextn:=-14;
xtextn:=-14;
xb:='X-Achse';
yb:='Y-Achse';

Diagramm.Show;
end;

end.


---------------------------------------------------- Form 2-

unit Dia4QPrg;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, ExtCtrls;

type
  TDiagramm = class(TForm)
    PB: TImage;
    procedure FormCreate(Sender: TObject);

  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

var
  Diagramm: TDiagramm;
  schritte,xachse,yachse,i : integer;
  //Schritte=Zählschritte für Achseneinteilungsbezeichnung
  //i=Zähler für Schleife
  yb,xb,texta: string;
  //xb=Bezeichnung X-Achse, yb=Bezeichnung Y-Achse
  //texta=Übergabevariable für Achseneinteilungsbezeichnung
   ytextp,xtextp,ytextn,xtextn : integer;
  //Achseneinteilungsbezeichnung -> ytextp = Y-Achse, Einteilung postiv usw.


implementation
uses Unit1;

{$R *.dfm}

procedure TDiagramm.FormCreate(Sender: TObject);
begin

xachse:=40;
yachse:=250;

//Haupt Q.Kreuz
PB.Canvas.MoveTo(xachse,yachse);
PB.Canvas.LineTo(460,yachse);
PB.Canvas.MoveTo(yachse,xachse);
PB.Canvas.LineTo(yachse,460);

//Pfeil Oben
PB.Canvas.MoveTo(243,55);
PB.Canvas.LineTo(250,40);
PB.Canvas.LineTo(257,55);

//Pfeil Rechts
PB.Canvas.MoveTo(445,257);
PB.Canvas.LineTo(460,250);
PB.Canvas.LineTo(445,243);

//Striche auf X-Achse
xachse:=68;
yachse:=255;

For i:=1 to 29 Do
begin
PB.Canvas.MoveTo(xachse,yachse);
PB.Canvas.LineTo(xachse,245);
xachse:=xachse+13;
end;

//Striche auf Y-Achse
xachse:=245;
yachse:=432;

For i:=1 to 29 Do
begin
PB.Canvas.MoveTo(xachse,yachse);
PB.Canvas.LineTo(255,yachse);
yachse:=yachse-13;
end;

//Bezeichnung auf -X-Achse

xachse:=61;
yachse:=255;

For i:=1 to 7 Do
begin
texta:=IntToStr(xtextn);
PB.Canvas.TextOut(xachse,yachse,texta);
xachse:=xachse+26;
xtextn:=xtextn+schritte;
end;

//Bezeichnung auf +X-Achse

xachse:=428;
yachse:=255;

For i:=1 to 7 Do
begin
texta:=IntToStr(xtextp);
PB.Canvas.TextOut(xachse,yachse,texta);
xachse:=xachse-26;
xtextp:=xtextp-schritte;
end;

//Bezeichnung auf -Y-Achse

yachse:=428;
xachse:=230;

For i:=1 to 7 Do
begin
texta:=IntToStr(ytextp);
PB.Canvas.TextOut(xachse,yachse,texta);
yachse:=yachse-26;
ytextp:=ytextp+schritte;
end;

//Bezeichnung auf +Y-Achse

yachse:=62;
xachse:=230;

For i:=1 to 7 Do
begin
texta:=IntToStr(ytextp);
PB.Canvas.TextOut(xachse,yachse,texta);
yachse:=yachse+26;
ytextp:=ytextp-schritte;
end;

//Y- und X-Achsen Bezeichnung

PB.Canvas.TextOut(230,25,yb);
PB.Canvas.TextOut(450,260,xb);

end;

end.


Moderiert von user profile iconraziel: Delphi-Tags hinzugefügt.


Al Borland - Fr 11.02.05 09:56


Delphi-Quelltext
1:
2:
3:
4:
5:
var 
HauptP: THauptP; 

schritte : integer;  //Das hier rausschmeissen
//Schritte=Zählschritte für Achseneinteilungsbezeichnung


Dann sollte es eigentlich schon gehen, wenn nicht mach noch:


Delphi-Quelltext
1:
2:
3:
procedure THauptP.Button1Click(Sender: TObject); 
begin 
Dia4QPrg.schritte:=2// <<<<----Diese Variablen sollen übergeben werden!


Moderiert von user profile iconraziel: Delphi-Tags hinzugefügt.


Snakebyte - Fr 11.02.05 10:11

Okay, gute Idee....zum Teil zumindest. Wir haben es durchlaufen lassen und hatten das gleiche Problem. Uns fiel dann auf was passiert ist...die Variablen waren auf dem Button gelegt, soll heißen: wenn Benutzer Button klickt, übertrage Variablen. Aber beide Form's wurden zeitgleich kompiliert und somit wurden keine Variablen übergeben.

Wir schrieben dann die Variablen ins Formload des Haupteils, und siehe da, sie wurden übergeben. Toll...aber das nutzt uns noch nicht so viel...denn die Variablen sollen ja erst dann übergeben werden, wenn der Benutzer den Button klickt.

Hat jemand ne Idee dazu? Denn unsere Aufgabe besteht darin, im Hauptprogramm Werte zu berechnen und wenn wir damit fertig sind, mittels Button Klick an das Unterprogramm, also das zweite Form, zu übergeben.

Danke,
Max!


Sprint - Fr 11.02.05 10:16

Snakebyte hat folgendes geschrieben:
Hat jemand ne Idee dazu?

Die Lösung habe ich dir schon gegeben. Füge TDiagramm paar Eigenschaften hinzu. Jetzt solltest du mal die Suche oder die Delphi benutzen. Oder frag' hier wie man das genau macht.