[转]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按钮,从而决定下一步的程序逻辑。