Hallo,
das SuchForm über eine lokale Variable erzeugen, starten, warten und fertig.
Delphi-Quellcode:
unit2
type
TSuchForm = class(TForm)
public
ItemNr: Integer;
end;
unit1
procedure TForm1.Suche;
var
Frm: TSuchForm;
ItemNr: Integer;
begin
ItemNr:= 0;
Frm:= TSuchForm.Create(Self);
try
if Frm.ShowModal=mrOK then
begin
ItemNr:= Frm.ItemNr;
end;
finally
Frm.Free;
end;
if ItemNr=0 then
begin
Exit;
end;
end;
So wie du würde ich es auch lösen. Ich würde lediglich eine execute-Methode dem Form geben:
Delphi-Quellcode:
type
TSuchForm = class(TForm)
private
FItemNr: Integer;
public
class function Execute(var AItemNr: Integer): Boolean;
published
property ItemNr: Integer read FItemNr write FItemNr;
end;
...
class function TSuchForm.Execute(var AItemNr: Integer): Boolean;
var
Form: TSuchForm;
begin
Form := TSuchForm.Create(nil);
try
Form.ItemNr := AItemNr;
Result := Form.ShowModal = mrOK;
if Result then
AItemNr := Form.ItemNr;
finally
FreeAndNil(Form);
end;
end;
Das Form sollte natürlich aus der auto. erstellen Liste des Projekts entfernt werden.