[转]ShowModal() = mrOk

if Form1.showmodal = mrok then 这句话什么意思?

   首先,所有的命令按钮(不论是Button还是BitBtn)都有一个属性:ModalResult,该属性可以设置为mrOk、mrCancel...等等,默认值是mrNone(ModalResult是一个整型值,只要你在用ShowModal以后,窗口中只要给它付一个非零的值,窗口会自动关闭,而mrOK的值是2)。

   平时,ModalResult属性没什么用处,但如果命令按钮放置到用showmodal显示(模态显示,一般用于显示对话框)的窗体上时,就大大的有用了。 

  作用体现在: 

  1、当设置命令按钮的ModalResult属性为mrOk、mrCancel...等时,程序运行后,单击该按钮,按钮所在的窗体会自动关闭,不用在OnClick事件中添加诸如Close;语句。 

  2、当设置命令按钮的ModalResult属性为mrOk、mrCancel...等时,程序运行后,单击该按钮,按钮所在的窗体会自动关闭,同时将按钮的ModalResult属性值赋值给窗体的ModalResult属性(注意:任何窗体都有这个属性!) 

  3、自动关闭上述窗体时,窗体的ModalResult属性又会自动传递给showmodal方法,作为该方法的返回值。 所以说,showmodal方法的返回值总是与命令按钮的ModalResult属性相同。

   if form1.showmodal = mrok then 如果要通俗化一下,可以写成如下等价的代码:

 var r:TModalResult;
// ...... .......  

r:=form1.showmodal;
 if r=mrOK then
// ... ... 

  很明显,根据showmodal方法的返回值,可以判断用户在对话框中,究竟是点击了OK按钮还是Cancel按钮,从而决定下一步的程序逻辑。

原文地址:https://www.cnblogs.com/ufindme/p/4392681.html