Zitat von
CenBells:
Hi,
dein problem liegt dort (Hauptprogramm)
Delphi-Quellcode:
procedure TForm1.neuesFormular1Click(Sender: TObject);
var BnForm : TForm2;
begin
BnForm := TForm2.Create(Self);
BnForm.Show;
end;
du erzeugst eine Instanz von TForm2 und zwar in der Variable BnForm.
Dein Aufruf in Menu11 lautet aber wie folgt.
Delphi-Quellcode:
procedure TForm3.Button1Click(Sender: TObject);
var erg : string;
begin
erg := Form2.PZahl[4].Caption;
Hier willst du auf den Inhalt der Variable Form2 zugreifen.
Da die Instanz aber nicht erzeugt wurde, kracht es.
Also, in Hauptprogramm lieber
Delphi-Quellcode:
procedure TForm1.neuesFormular1Click(Sender: TObject);
begin
if not assigned(Form2) then // <- damit überprüfst du, ob die instanz bereits erzeugt wurde.
Form2 := TForm2.Create(Self); // wenn nicht, erzeugst du hier eine
Form2.Show;
end;
Edit:
Zitat von
Bowler:
Ist die Indizierung bei Arrays nicht 0-based? Müsste es denmach nicht ..
Nein in diesem Fall nicht. Flofu hat das Array als ab 1 beginnend deklariert.
Gruß
ken
Hallo, danke erst mal, nach der Umstellung hat es funktioniert. Es lag wohl daran, das ich die Form als BnForm aufgerufen habe, und auf Form2 zugreifen wollte. Aber es hat weder geklappt mit einer Umstellung von BnForm auf Form2 noch im Aufruf als erg := BnForm.PZahl[4].Caption. Es verstehe nicht, wieso diese Instanz noch nicht erzeug sein konnte, da ich den Dialog der darauf zugreift (Unit11) ja erst öffnen kann wenn ich Form2 auf dem Schirm habe. Was mich dann wieder zu meiner Frage bringt, wie ich auf beliebige Variabeln, nicht unbedingt nur Inhalte von Panels o.ä. von einer in die nächste
Unit zugreifen kann. Naja erst mal danke.
Mit freundlichen Grüßen Flo