Autor Beitrag
Snakebyte
Hält's aus hier
Beiträge: 8



BeitragVerfasst: Fr 11.02.05 09:27 
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
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 6395
Erhaltene Danke: 149

Windows 7 + Windows 10
Sydney Prof + CE
BeitragVerfasst: Fr 11.02.05 09:40 
Hilft dir das vielleicht weiter?
Sprint
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 849



BeitragVerfasst: Fr 11.02.05 09:41 
In dem du deiner TForm Klasse paar Properties (Eigenschaften) spendierst oder halt öffentlich Feldvariablen.

_________________
Ciao, Sprint.
chrisdrury
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 184

WinXP
D5 Prof
BeitragVerfasst: 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):
ausblenden 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
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 6395
Erhaltene Danke: 149

Windows 7 + Windows 10
Sydney Prof + CE
BeitragVerfasst: Fr 11.02.05 09:47 
Nicht zu vergessen, dass die eine Unit bei der anderen unter Uses auftauchen muss.
Snakebyte Threadstarter
Hält's aus hier
Beiträge: 8



BeitragVerfasst: 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!


ausblenden volle Höhe 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 16



BeitragVerfasst: Fr 11.02.05 09:56 
ausblenden 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:

ausblenden 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 Threadstarter
Hält's aus hier
Beiträge: 8



BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 849



BeitragVerfasst: 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.

_________________
Ciao, Sprint.