我在Rad Studio 10 Seattle有一个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并不适用于多设备项目。
还有其他方法可以实现这一目标吗?
答案 0 :(得分:2)
我通过添加一个在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);