一个简单问题的请教。(0分)

逆水

Unregistered / Unconfirmed
GUEST, unregistred user!
我想实现以下程序:
当CHECKBOX1选取时,RICHEDIT。TEXT:=‘1111’
当CHECKBOX2选取时,RICHEDIT。TEXT:=‘2222’
当CHECKBOX3选取时,RICHEDIT。TEXT:=‘3333’
如果选了1和2的话,RICHEDIT。TEXT 应先是‘1111’然后又显示‘2222’

当CHECKBOX4选取时,RICHEDIT。TEXT:=‘1111’然后是:‘2222’,然后是:‘3333’;
就是说,CHECKEBOX4等于一个全选按钮,当它选中后,上面三个键都被选中,并依
次向RICHEDIT中发送上述字符,我想应该用个循环来实现的,可自已写的总实现不了。
主要就是全选后依次发送字符这步总不对,那位老兄帮我写几句看看。谢谢了。


这是一位仁兄给我写的,可我看了一头雾水,那位老兄给解释一下呀。
var
I: Integer;
begin
for I := 1 to 3 do //CheckBox1 .. CheckBox3 连续命名
TCheckBox(FindComponent(Format('CheckBox%d', ))).Checked := CheckBox4.Checked;
 
你这样试试:
var
iCount: integer;
begin
for iCount :=0 to ComponentCount -1 do
begin
if (Components[iCount] is TCheckBox) then
begin
if (Components[iCount] as TCheckBox).Tag =111 then//这个Tag是自己在属性栏里设置
TCheckBox(Components[iCount]).Checked :=True;
end;//if ..then
end;//for ..do
end;

其实,如果像你说的这种问题如果不是很必要的话最好不要用循环来做(效率比常规写代码要差多了),
如果你是闲每个组件都要写事件你也可以这样来解决(先设定这些组件的Tag)然后在他们的共用事件里
(比如CheckBox1Click)写
case (Sender As TCheckBox).Tag of
1: Memo1.Lines.Add('Tag A');
2: Memo1.Lines.Add('Tag B');
3: Memo1.Lines.Add('Tag C');
4: Memo1.Lines.Add('Tag D');
end;
 
谢谢你了,没有分了,谢谢了,你的办法很对,多谢了。
 
顶部