遍历CheckBox并获取值

Dision LI 2008-05-06 10:30:24
var
i:Integer;
frmComponent:TComponent;
z : String;
begin //确定
with GroupBox1 do
begin
for i:=0 to ControlCount-1 do
begin
if Controls[i] is TCheckBox then
if TCheckBox(Controls[i]).Checked =true then
z := TCheckBox(Controls[i]).Caption;
zz := zz +','+z;
end;
end;
Dialogs.ShowMessage(zz);
end;
怎么遍历容器上CheckBox 值为true的caption?
...全文
271 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
genispan 2008-05-06
  • 打赏
  • 举报
回复
if Tcheckbox(Controls[i]).checked then
begin
z :=Tcheckbox(Controls[i]).caption;
Dialogs.ShowMessage(z); //同等于showmessage(z);
end;


记得放在begin end之间
oushengfen 2008-05-06
  • 打赏
  • 举报
回复
呵呵,都解决了,来顶一下.
Dision LI 2008-05-06
  • 打赏
  • 举报
回复
blazingfire 与skylkj 两位牛人的方法都正确
是小弟的失误,少了个begin ...end
最后还有个问题
zz := zz + ',' + TCheckBox(Controls[i]).Caption;
这里判断只有一个的时候不能根据i来判断吧?
指的是只有一个TCheckBox为true的时候我怎么判断?不要逗号

skylkj 2008-05-06
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 ameken 的回复:]
with GroupBox1 do
begin
for i:=0 to ControlCount-1 do
if Controls[i] is Tcheckbox then
begin
if Tcheckbox(Controls[i]).checked then
z :=Tcheckbox(Controls[i]).caption;
Dialogs.ShowMessage(z); //同等于showmessage(z);
end;
end;
这里是我写的代码
我在容器上遍历的而不是窗体上.
[/Quote]

if Tcheckbox(Controls[i]).checked then
begin
z :=Tcheckbox(Controls[i]).caption;
Dialogs.ShowMessage(z); //同等于showmessage(z);
end;
blazingfire 2008-05-06
  • 打赏
  • 举报
回复

var
i: Integer;
frmComponent: TComponent;
//z: string;
zz: string; //再次定义一下
begin //确定
zz := '';//初始化一下,免得出编译提示
with GroupBox1 do
begin
for i := 0 to ControlCount - 1 do
begin
if Controls[i] is TCheckBox then
if TCheckBox(Controls[i]).Checked then
zz := zz + ',' + TCheckBox(Controls[i]).Caption;
end;
end;
Dialogs.ShowMessage(zz);
end
Dision LI 2008-05-06
  • 打赏
  • 举报
回复
with GroupBox1 do
begin
for i:=0 to ControlCount-1 do
if Controls[i] is Tcheckbox then
begin
if Tcheckbox(Controls[i]).checked then
z :=Tcheckbox(Controls[i]).caption;
Dialogs.ShowMessage(z); //同等于showmessage(z);
end;
end;
这里是我写的代码
我在容器上遍历的而不是窗体上.
skylkj 2008-05-06
  • 打赏
  • 举报
回复

if Tcheckbox(form1.Components[i-1]).checked then
begin
z:=Tcheckbox(form1.Components[i-1]).caption;
showmessage(z);
end;

没问题啊

你是不是if下面没有begin end?
genispan 2008-05-06
  • 打赏
  • 举报
回复
加错地方了吧?
Dision LI 2008-05-06
  • 打赏
  • 举报
回复
奇怪哦!
showmessage(Tcheckbox(form1.Components[i-1]).caption);
1楼你那句可以弹出被选择的内容
但是为什么我加个变量z,改成
z := Tcheckbox(form1.Components[i-1]).caption;
showmessage(z);
就会弹出没被选中的那些的空值
skylkj 2008-05-06
  • 打赏
  • 举报
回复

var
i:integer;
begin
for i:=1 to form1.ComponentCount do
begin
if form1.Components[i-1] is Tcheckbox then
begin
if Tcheckbox(form1.Components[i-1]).checked then
showmessage(Tcheckbox(form1.Components[i-1]).caption);
end;
end;
end;

5,930

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 开发及应用
社区管理员
  • VCL组件开发及应用社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧