关于messagebox(50分)

  • 主题发起人 主题发起人 quickchop
  • 开始时间 开始时间
Q

quickchop

Unregistered / Unconfirmed
GUEST, unregistred user!
我有一个简单常识问题。我有一个主窗体,在这个主窗体下我会不断的调出子窗体(同时只有一个子窗体)
在我按了子窗体的确定后,有时我会用messagebox(只有一个确定按钮)显示出错信息。按了确定
按钮后,子窗体会关闭,我的问题是如何不让子窗体关闭。我在meaagebox后加了一句exit,所以会关闭
但有些时候不会关闭,为什么。
 
刚才没看清楚题目,答错了,把你的代码贴出来看看。
 
if 出错条件 then
begin
application.messagebox('不对','请重新选择',mb_iconinformation+mb_ok);
exit
end;
结果不但把messagebox关闭,而且子窗体也关闭(但我的有些子窗体不会)
 
把确定按钮的ModalResult属性改成mrNone!
 
我好像碰到过这类问题
把你创建和显示子窗体的代码贴出来
 
看来对这个问题大家没有兴趣,再问一个,准备发分。我在一个窗体里因好多checkbox。我
不希望用户一个checkbox也不选上,请问该如何判断。
 
V_bool:=false;
for i:=0 to componentCount-1 do
if Components is TCheckbox then
if (Components as TCheckBox).checked then
V_Bool:=true;
if not V_Bool then
showmessage('不能一个都不选!');
上一个问题的原因很可能是因为你在子窗体里面的确定按钮是一个BitBtn按钮,而且你
没有把它的ModalResult设为mrNone,所以才会导致一按该按钮,不管代码怎样它都会
关闭子窗体。
 

这个问题简单,把确定按钮的ModalResult属性改成mrNone就可以了。
 
第一个问题aizb已经回答了
把确定按钮的ModalResult属性改成mrNone!
第二个问题:
把checkbox做成数组
要不你就老老实实一个一个判断
 
To HunterTeam
RTTI用起来可不好啊
还是做成数组吧
 
如果你这段代码在OnClose中
if 出错条件 then
begin
application.messagebox('不对','请重新选择',mb_iconinformation+mb_ok);
Action := caNone;
exit;
end;
在OnCloseQuery
if 出错条件 then
begin
application.messagebox('不对','请重新选择',mb_iconinformation+mb_ok);
CanClose := False;
exit;
end;
如果不在这两个中,一般情况下当然就无效了。
(阁下问问题的水平实在有限)
你的第二个问题更简单
var
i: Integer;
B: Boolean;
begin
B := False;
for i := 0 to ComponentCount - 1 do
if Components is TCheckBox and TCheckBox(Components.Checked) then
begin
break;
B := True;
end;
if not B then
ShowMessage('你什么都没有选择');
end;
 
V_bool:=false;
for i:=0 to componentCount-1 do
if Components is TCheckbox then
if (Components[xh] as TCheckBox).checked then

begin

V_Bool:=true;
Break;
end;
if not V_Bool then

begin
showmessage('不能一个都不选!);
exit;
end;
 
哈哈,shenloqi, 是高手
 
各位怎么都如此幽黑![8D]
 
To shenloqi, 我的代码出现在确定按钮里面,不是关闭。
To 各位,非常感谢。可你们没有弄清我的问题。Mrnoe无疑是有用的。可我的问题是我有一个子窗体的属性是mryes,却也达到了我要的效果,你们能否解释一下。
关于第二个问题,你们的方法是有用的,可效率不怎么高,我有很多控件。看有什么高效率的办法。Rustle说用数组,怎么弄。
 
数组怎么弄?
这怎么说?
你的checkbox很多的话
用Rtti写代码时间省下来来
但是效率低了
要不你就一个个判断
要不就声明树组
zmcvnbzm : array of tCheckBox
zmcvnbzm[1]:=......
for .....
做数组比一个一个弄的好处就在如果添加或者修改删除了checkbox的时候
代码的改动良要小一点....
就这么点优点
 
用数组就是动态创建
var
Chks:array[0..9] of TCheckbox;
//Form.OnCreate
var
i:integer;
begin
for i:=0 to 9 do

begin
Chks:=TCheckbox.Create(slef);
Chks.parent:=slef;
Chks.visible:=true;
Chks.top:=i*20;
Chks.left:=50;
Chks.height:=15;
Chks.width:=50;
Chks.caption:='...';
.................
end;

 
改为riadiogroup不就行了吗
 
To:pengjinlongex
人家要多选呢?
 
后退
顶部