我在西雅图Rad Studio 10中有一个Firemonkey Multi Device(Android&iOS)项目。
我想从单元中的方法调用带有showmodal的表单,并将modalresult返回给函数。
我尝试了以下示例:
function ShowMyForm: TModalResult;
var
form: TForm1;
begin
form:= TForm1.Create(nil);
form.ShowModal(
procedure(ModalResult: TModalResult)
begin
result := ModalResult;
end);
end;
function ShowMyForm: TModalResult;
var
form: TForm1;
begin
form:= TForm1.Create(nil);
result := form.ShowModal;
end;
使用内联过程,该函数无法访问结果。
而且仅调用TForm.ShowModal不能在多设备项目上工作。
还有另一种方法可以做到这一点吗?
最佳答案
我通过添加一个内联过程解决了我的问题,该过程在modalresult等于mrOk时被调用。
下面的代码:
用showmodal显示我的表单的方法
procedure ShowMyForm(event: TProc = nil);
var
form: TForm1;
begin
form:= TForm1.Create(nil);
form.ShowModal(
procedure(ModalResult: TModalResult)
begin
if (ModalResult = mrOk) and Assigned(event) then
event;
end);
end;
用内联过程调用过程。
ShowMyForm(
procedure
begin
// Code that you want to do on mrOk
end);