关于Form的ShowModal问题!
问题很奇怪啊,我用的是D7。
Form1中代码:
procedure TForm1.ButtonOKClick(Sender: TObject);
begin
ButtonOK.ModalResult := mrOK;
end;
Form2中代码:
//
Form1:=TForm1.Create(Application);
with Form1 do
try
if Form1.ShowModal = mrOK then
begin
//问题在这里,为什么每次要点击2次ButtonOK才能响应到这里。
//而不在ButtonOKClick事件中赋值mrOK,直接在ButtonOK的属性中选中mrOK,就可以响应。
end;
finally
free();
end;
//
问题点数:50、回复次数:9Top
1 楼xxmmmx(踢踏)回复于 2005-11-04 09:39:49 得分 0
第一次点击时ButtonOk的ModalResult并不是mrOk,所以窗体没有关闭,点击后,才是mrOk;
第二次点击时,ModalResult已经为mrOk,所以关闭窗体。
Top
2 楼beyondtkl(大龙驹<*好久没来了,兄弟们好吧。*>)回复于 2005-11-04 09:44:00 得分 0
:) 俺是来学习的.Top
3 楼chinaelev(中国风)回复于 2005-11-04 09:44:11 得分 0
那请怎么写才能点击一次就响应到哪里呢,Top
4 楼xxmmmx(踢踏)回复于 2005-11-04 09:46:36 得分 0
直接在ButtonOK的属性中选中mrOK,不就可以解决问题了吗Top
5 楼xxmmmx(踢踏)回复于 2005-11-04 09:47:59 得分 45
或者直接写
ModalResult := mrOK;Top
6 楼Hotthing(豪星)回复于 2005-11-04 09:48:22 得分 0
我用你的程序做了, 很好, 一切正常!Top
7 楼Hotthing(豪星)回复于 2005-11-04 09:49:14 得分 5
有没有去掉这一行?
begin
Application.Initialize;
//Application.CreateForm(TForm1, Form1);
Application.CreateForm(TForm2, Form2);
Application.Run;
end.
Top
8 楼Hotthing(豪星)回复于 2005-11-04 09:51:03 得分 0
是不是应该把这个变量定义放在 FORM2中:
var Form1: TForm1;
Top
9 楼huanyi(残荷淡月)回复于 2005-11-04 10:03:04 得分 0
procedure TForm1.ButtonOKClick(Sender: TObject);
begin
ButtonOK.ModalResult := mrOK;
end;
这一句只是设置ButtonOK的属性, 再点一次由于这个属性设置了,所以会关闭窗体
正确地写法应该是:
procedure TForm1.ButtonOKClick(Sender: TObject);
begin
Form1.ModalResult := mrOK;
end;
Top




