+ -
当前位置:首页 → 问答吧 → 请问怎样在ShowModal=mrOK获取是哪个按钮

请问怎样在ShowModal=mrOK获取是哪个按钮

时间:2011-11-17

来源:互联网

好几个按钮 都设置ModalResult:=mrOk;


然后怎样判断是哪个按钮的事件呢?
if vForm.ShowModal=mrOK then
begin
这边怎么判断是哪个按钮?
end;

作者: life923   发布时间: 2011-11-17

方法很多,可以在vForm中定义一个公共变量

var K:Integer;

procedure vForm.Button1Click(Sender: TObject);
begin
 K:=1;
 ModalResult:=mrOk;
end;

procedure vForm.Button2Click(Sender: TObject);
begin
 K:=2;
 ModalResult:=mrOk;
end;



if vForm.ShowModal=mrOK then
begin
  if vForm.K=1 then
  showmessage('是Button1')
  else if vForm.K=2 then
  showmessage('是Button2')
  ...
end;

作者: kaikai_kk   发布时间: 2011-11-17

你为什么把好几个都弄成mrOk?

作者: lhylhy   发布时间: 2011-11-17

引用 1 楼 kaikai_kk 的回复:

还有没有其他吗?
公共变量比较麻烦

作者: life923   发布时间: 2011-11-17

引用 2 楼 lhylhy 的回复:
你为什么把好几个都弄成mrOk?


ModalResult:=addr(Tbutton(Sender).caption);  

这样写 可以吗?

作者: life923   发布时间: 2011-11-17

窗口里面每个按钮的ModelResult属性设个不同的值那么难吗?

作者: lhylhy   发布时间: 2011-11-17

你把所有按扭都设成mrOk,那总得有个标记区别吧
好吧,不想要变量,那再改进一点点

procedure vForm.Button1Click(Sender: TObject);
begin
 tag:=1;
 ModalResult:=mrOk;
end;

...

if vForm.ShowModal=mrOK then
begin
  if vForm.tag=1 then
  showmessage('是Button1')
  else
  ...
end;

作者: kaikai_kk   发布时间: 2011-11-17

引用 6 楼 kaikai_kk 的回复:

tag是个好办法

作者: funxu   发布时间: 2011-11-17