如何在动态生成的checkbox组中实现单选?(50分)

  • 主题发起人 主题发起人 huayf
  • 开始时间 开始时间
H

huayf

Unregistered / Unconfirmed
GUEST, unregistred user!
有这样一份调查问卷:
A. 贵公司所属地区:(请选一项)
□北京 □香港 □深圳
B 阁下的工作性质:(请选一项)
□管理 □采购 □销售
所有问题及问题选项都是读表动态生成,我目前调用这样一个过程:
procedure TForm2.CheckBoxClick(Sender: TObject);
var nowBox:TCheckBox;
begin
nowBox:=Sender as TCheckBox;
if nowBox.Checked then
begin
if CheckBoxA<>nil then CheckBoxA.Checked:=false;
CheckBoxA:=nowBox;
end
else if CheckBoxA=nowBox then
begin
CheckBoxA:=nil ;
end;
end;
checkbox的onclick事件调用该过程。
能实现单选,但碰到象以上这种情况(不止一个单选问题)的话,在A,B两问题中也只能
选一个。谁能帮帮我?
 
动态生成groupbox和checklist控件
 
你的代码处理流程太怪异了,我没看懂。

不过这种情况不应该用checkbox,应该用radiobutton
 
利用CheckBox.tag将CheckBox分组。创建时令同一组的CheckBox的Tag值相同。
 
首先对题目的性质有个标:是单选还是复选。

如果是复选,以下过程的第一句就返回,不需要处理。
procedure TForm2.CheckBoxClick(Sender: TObject);

if fx[current] then exit;
//========= 表示本题是单选还是复选,复选不需要处理这个事件,直接返回
 
checkbox本来就不是实现单选效果的,应该用radiobutton
 
我当然知道用radiobutton方便,但考虑到版面美观,我统一用checkbox,调用过程我
当然会设置条件的:if pos('请选一项',问题标题)>0 onclick:=checkboxclick;
问题是如何才能控制多个单选分组调用,不互相干扰。
 
radiobutton比checkbox美观? 我不觉的,如果真要美观,还不如用skin控件,什么
效果都能出来,何必费这个劲。
 
我的意思是不仅有单选还有多选
 
后退
顶部