条件选择判断的问题? ( 积分: 100 )

  • 主题发起人 主题发起人 -
  • 开始时间 开始时间

0

Unregistered / Unconfirmed
GUEST, unregistred user!
有 CheckBox1......ChexBox10选择。
判断条件:
if 1 and
2 and
.
.
.
10
then
begin
// Doing Something;
end;
请问:只有checkBox 为 TRUE 的 条件才判断,该如何写?

谢谢!
 
有 CheckBox1......ChexBox10选择。
判断条件:
if 1 and
2 and
.
.
.
10
then
begin
// Doing Something;
end;
请问:只有checkBox 为 TRUE 的 条件才判断,该如何写?

谢谢!
 
让他们的OnClick指向一个过程,然后在过程里面判断就可以了!
 
if CheckBox1.Checked then procedure abc;
if CheckBox2.Checked then procedure abc;
...
if CheckBox10.Checked then procedure abc;
上面这是单个,
if CheckBox1.Checked and CheckBox2.Checked and ... CheckBox10.Checked then procedure abc;
 
看来还不行,因为 if...then 里面的条件是随着checkbox的变化选择而变化的。
对不起,是这样的:checkbox1...checkbok10 是跟条件 1...10 对应的,而且,
if ...then 了;里的条件用 and 连在一起不可分开的的,如果这样:
if CheckBox1.Checked and CheckBox2.Checked and ... CheckBox10.Checked then procedure abc;的话,
在 CheckBox1... CheckBox10里假如CheckBox1没选为 False,
CheckBox2...CheckBox1为True时 则判断为:
if 2 and
...
10
then begin
/////////////////////
and;
就不行了,还望再指教。
 
if ((checkbox1.checked=false) or 1) and ((checkbox2.checked=false) or 2) and ((checkbox3.checked=false) or 3) ......and ((checkbox10.checked=false) or 10) then
begin
end
 
对不起,可能没说清楚,简单一点,如:
checkbox1=false //checkbox1选项对应 if 里的 a=a1
checkbox1=true //checkbox2选项对应 if 里的 b=b1
checkbox1=true //checkbox1选项对应 if 里的 c=c1

if (b=b1) and
(c=c1)
then
begin
//////////////////
end;

即只有checkbox为 TRUE 的才加入IF判断语句中。

谢谢!
 
改一下不就行了
if ((checkbox1.checked=false) or (a=a1)) and ((checkbox2.checked=false) or (b=b1)) and ((checkbox3.checked=false) or (c=c1)) ......and ((checkbox10.checked=false) or 10) then
begin
end
难道上面的无法实现,只是罗嗦了一些
 
var
bl:boolean;
begin
bl := true;
if CheckBox1.Checked then bl := bl and (a=a1)
//选中时才判断,逐个与bl相与即可
if CheckBox2.Checked then bl := bl and (b=b1);
....... //直到checkbox10,可用循环
if bl then
begin
// do something
end

end;
 
是不是有10个条件对应10个CheckBox, 选中的条件要都满足才干某件事?

function TForm1.DoCheck:Boolean;
begin
Result:=True;
if CheckBox1.Checked then Result:=(条件1);
if Result and CheckBox2.Checked then Result:=(条件2);
...
if Result and CheckBox10.Checked then Result:=(条件10);

end;
...
if DoCheck then DoSomething;
 
if (checkBox1.Checked) and (checkBox2.Checked) and
(checkBox3.Checked) then
showMessage('OK');
我用这个比较简单的程弃序做了一下,不知道你的问题是不是这样的。[:)]
 
不知道你想再什么
如果语句不会写
就是楼上写的哪个
 
从楼主表达的意思来说,应该是 一诺 那种解法,不过判断Boolean型是否为false好像应该写成not checkbox1.checked好点。
(not Checkbox1.checked or (a=a1)) and (not checkbox2.checked or (b=b1)....
 
checkbox1 对应判断条件 CK1>=A1 AND CK1<=B1
checkbox2 对应判断条件 CK1>=A2 AND CK1<=B2
checkbox3 对应判断条件 CK1>=A3 AND CK1<=B3
checkbox4 对应判断条件 CK1>=A4 AND CK1<=B4
checkbox5 对应判断条件 CK1>=A5 AND CK1<=B5
checkbox6 对应判断条件 CK1>=A6 AND CK1<=B6
checkbox7 对应判断条件 CK1>=A7 AND CK1<=B7
checkbox8 对应判断条件 CK1>=A8 AND CK1<=B8
checkbox9 对应判断条件 CK1>=A9 AND CK1<=B9
checkbox10 对应判断条件 CK1>=A10 AND CK1<=B10

checkbox=False 的对应判断条件参与判断。
只有checkbox=TRUE 的对应判断条件全部成立时才DoSomething;

小的愚蠢,各位大哥大姐答得满意即给分,再次谢谢!!!
 
对不起,漏了一个‘不’字,是这样的:

checkbox1 对应判断条件 CK1>=A1 AND CK1<=B1
checkbox2 对应判断条件 CK1>=A2 AND CK1<=B2
checkbox3 对应判断条件 CK1>=A3 AND CK1<=B3
checkbox4 对应判断条件 CK1>=A4 AND CK1<=B4
checkbox5 对应判断条件 CK1>=A5 AND CK1<=B5
checkbox6 对应判断条件 CK1>=A6 AND CK1<=B6
checkbox7 对应判断条件 CK1>=A7 AND CK1<=B7
checkbox8 对应判断条件 CK1>=A8 AND CK1<=B8
checkbox9 对应判断条件 CK1>=A9 AND CK1<=B9
checkbox10 对应判断条件 CK1>=A10 AND CK1<=B10

checkbox=False 的对应判断条件不参与判断。
只有checkbox=TRUE 的对应判断条件全部成立时才DoSomething;

小的愚蠢,各位大哥大姐答得满意即给分,再次谢谢!!!
 
var
bValue:Boolean;
...
bValue := true;
if checkbox1.checked then
bValue := bValue and (CK1>=A1 AND CK1<=B1);
if checkbox2.checked then
bValue := bValue and (CK1>=A2 AND CK1<=B2);
...
if bValue then
DoSomething;
 
谢谢回复,但又有个新问题,我用的是循环判断,如果这样就好费时间,如:
for i:=0 to 999999 do
begin
//////////// 你的代码
bValue := true;
if checkbox1.checked then
bValue := bValue and (CK1>=A1 AND CK1<=B1);
if checkbox2.checked then
bValue := bValue and (CK1>=A2 AND CK1<=B2);
...
if bValue then
DoSomething;
end;
请问:能不能在循环语句前判断checkbox的状态,
在循环部分里写成的形式,如:
(CK1>=A1 AND CK1<=B1) and
(CK1>=A1 AND CK1<=B1) and
......
(CK10>=A1 AND CK1<=B10)
then
begin
DoSomething;
end;

谢谢!
 
谢谢回复,但又有个新问题,我用的是循环判断,如果这样就好费时间,如:
for i:=0 to 999999 do
begin
//////////// 你的代码
bValue := true;
if checkbox1.checked then
bValue := bValue and (CK1>=A1 AND CK1<=B1);
if checkbox2.checked then
bValue := bValue and (CK1>=A2 AND CK1<=B2);
...
if bValue then
DoSomething;
end;
请问:能不能在循环语句前判断checkbox的状态,
在循环部分里写成的形式,如:
(CK1>=A1 AND CK1<=B1) and
(CK1>=A1 AND CK1<=B1) and
......
(CK1>=A10 AND CK1<=B10)
then
begin
DoSomething;
end;

谢谢!
 
即便有办法加外面,但根本节省不了什么时间的.

不过倒可以在for前加上
if checkbox1.checked or checkbox2.checked or checkbox3.checked or ... then
//万一所有的checkbox1都没打钩的话就没有必要执行for了
begin
for i:=0 to 999999
begin
bValue := true;
if checkbox1.checked then
....
end;
end;
 
后退
顶部