Delphi Android应用程序 - 使用ShowModal表单处理mrCancel

时间:2014-03-05 22:27:43

标签: android delphi firemonkey delphi-xe5

我正在使用Marco Cantu's ShowModal example用于Android应用程序。你如何处理mrCancel

这是我的代码:

procedure TForm1.Button1Click(Sender: TObject);
var
 Form2: TForm2;
begin
 Form2 := TForm2.Create(nil);
 Form2.ShowModal(
    procedure(ModalResult: TModalResult)
    begin
      if ModalResult = mrOK then
      begin
       ShowMessage('OK');
       Form2.DisposeOf;
      end
     { else
      begin
       ShowMessage('Cancel'); 
       Form2.DisposeOf;
      end;}
      end);
end;

我如何处理mrCancel?如果我有一个带控件的表单,用户必须输入数据,我想给他们选择取消表单并返回主表单。

我应该注意到我为mrCancel分配了取消按钮的modalresult,就像我在辅助表单上为OK按钮做了mrOK一样。确定按钮工作正常,但如果我点击取消按钮,该应用程序什么也不做,所以我不能再点击确定按钮。

我原以为我可以做到以下

var
 Form2: TForm2;
begin
 Form2 := TForm2.Create(nil);
 Form2.ShowModal(
    procedure(ModalResult: TModalResult)
    begin
      if ModalResult = mrOK then
      begin
       ShowMessage('OK');
       Form2.DisposeOf;
      end
      end);
end;

我应该能够将mrCancel分配给取消按钮的modalresult属性 - 但它不起作用

1 个答案:

答案 0 :(得分:3)

无论DisposeOf()是什么,都必须致电ModalResult。您目前只在结果为mrOk时才调用它。这样做:

procedure TForm1.Button1Click(Sender: TObject);
var
  Form2: TForm2;
begin
  Form2 := TForm2.Create(nil);
  Form2.ShowModal(
    procedure(ModalResult: TModalResult)
    begin
      if ModalResult = mrOK then
        ShowMessage('OK')
      else
        ShowMessage('Cancel'); 
      Form2.DisposeOf;
    end
  );
end;