如何判断CheckBox是否背选中?(10分)

  • 主题发起人 主题发起人 why_119
  • 开始时间 开始时间
W

why_119

Unregistered / Unconfirmed
GUEST, unregistred user!
如何判断CheckBox是否背选中?
有十道选择题.每道题有四个答案.多选或单选.
每个答案用CheckBox控件.
如何判断每道题选了几个答案.选的是什么.是第一个.还是第二个......

没分了...不好意思...
 
if checkbox1.checked then //选中
 
不是我要的结果.
 
我提供一个比较笨的办法:
每道体的四个答案的checkbox命名用点技巧,
题目一
答案一:checkbox的name或者hint为Ask1Chk1
答案二:checkbox的name或者hint为Ask1Chk2



题目二
答案一:checkbox的name或者hint为Ask2Chk1
答案二:checkbox的name或者hint为Ask2Chk2






在程序中判断时依据checkbox的name或者hint,具体可以用字符串比较。
也可把每一道题放在一个容器里面。然后
for iCount := 0 to 容器.controlcount - 1 do
begin
if 容器.contorlcount[iCount] is TCheckBox then
begin
if Copy(容器.contorlcount[iCount] as TCheckBox).name或者hint ,起点,长度) = 特定字符串 then
... ...
... ...
end;
 
用数组
unit Unit1;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;

type
TForm1 = class(TForm)
Button1: TButton;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;

var
Form1: TForm1;
//****************************************//
ckbox: array [1..10] of TCheckBox;
//****************************************//
implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
var
i:integer;
begin
//****************************************//
for i:=1 to 10 do
begin

ckbox:=Tcheckbox.Create(Form1);
ckbox.ParentWindow:=form1.Handle;
ckbox.Caption:='ckbox'+inttostr(i);
ckbox.Top :=i*20;
ckbox.Left:=0;
ckbox.Show;


end;
//****************************************//
end;

end.
判断只要遍历数组就可以了
 
iamy的方法
 
用组件框!
 
自 以解决
 
用 CheckBox(1-N).tag 结合 hint 属性来做
tag是一个integer型 你可赋值 然后获取判断
 
CheckBox(1-N).tag 什么意思....
 
用这个,将Tag设为同一个数值,然后用循环检出。例如:
if(dynamic_cast<TcxDBCheckBox *>(Components[ix]))
{
if(((TcxDBCheckBox *)Components[ix])->Tag = 1)
{
if(((TcxDBCheckBox *)Components[ix])->Checked)
{
answer = answer + "," + ((TcxDBCheckBox *)Components[ix])->Properties->Caption;
}
}
 
最后少写了一个括号,见谅。
 
后退
顶部