Delphi-Quellcode:
procedure TFMain.BtnAuswahlClick(Sender: TObject);
var FAuswahl:TFAuswahl;
begin
FAuswahl:=TFAuswahl.Create(Self); (*init*)
try
FAuswahl.SetAuswahlText(EdAuswahl.Text);
if FAuswahl.ShowModal = mrOK then
EdAuswahl.Text:=FAuswahl.GetAuswahlText;
finally (*Darunter immer ausfuehren*)
FAuswahl.Release; (*Abschnitt(Form) aufrufbar*)
end;
end;
das kann nicht gehen!
FAuswahl ist ja bereits im 2.
Unit vorhanden (das ist das 2. Formular)
Wenn du nun innerhalb einer procedure nochmal eine Variable gleichen Namens definierst, kennt die procedure nur die interne Variable und weiß nicht, dass du die aus der 2.
Unit meinst.
Also alles raus, was
var FAuswahl:TFAuswahl heißt
Außerdem:
Ich nehme mal an, dass du das Formular ganz normal mit Datei|Neu|Formular erzeugt hast.
Dann übernimmt das Hauptprogramm auch das Create desselben und du brauchst dich nicht drum zu kümmern.
Also TFAuswahl.Create auch raus! (und entsprechend auch FAuswahl.Release)
Dann bleibt übrig:
Delphi-Quellcode:
procedure TFMain.BtnAuswahlClick(Sender: TObject);
begin
with FAuswahl do
begin
SetAuswahlText(EdAuswahl.Text);
ShowModal;
if ModalResult=mrOk then
begin
EdAuswahl.Text:=FAuswahl.GetAuswahlText;
... // weitere Statements
end;
end;
end;
procedure TFMain.Button1Click(Sender: TObject);
var a:integer;
begin
a:=FAuswahl.test;
Label1.Caption:=inttostr(a);
end;
usw.
Statt SetAuswahlText(..) und GetAuswahlText könnte man auch
FAuswahl.CoAuswahl.ItemIndex
bzw.
FAuswahl.CoAuswahl.Text
direkt ansprechen.
Hast du bei den beiden Buttons in Formular 2 (FAuswahl) das ModalResult richtig belegt oder Default/Cancel=True gesetzt?