你没有将控件的OnClick事件与myclick方法向关联:
checks[n].OnClick := myclick;

解决方案 »

  1.   

    关键在于myclick中的代码,而你没有贴出来,所以不好回答你的问题。
      

  2.   

    你的OnClick事件呢?没看到在哪里赋值啊
      

  3.   

    对,OnClick事件须手动复制
      

  4.   

    你的OnClick方法呢?
    定义一个方法伏给OnClick方法。
      

  5.   

    麻烦各位了!这是我写的 myclick 的代码(也不能正常工作!):
    procedure Tform1.myclick(sender: tobject);
    var
      m: integer;
    begin
    m:=(Sender As TCheckbox).Tag;
    if checks[m].checked=true then
      checks[m].checked:=false
    else
      checks[m].checked:=true;
    end;
      

  6.   

    procedure Tform1.myclick(sender: tobject);
    var
      m: integer;
    begin
    m:=TCheckbox(Sender).Tag;                       //改这样试试
    if checks[m].checked=true then
      checks[m].checked:=false
    else
      checks[m].checked:=true;
    end;
      

  7.   

    你有没有按 technofantasy(www.applevb.com) 说的做啊。
    将控件的OnClick事件与myclick方法向关联:
    checks[n].OnClick := myclick;
      

  8.   

    to peterluolaw(木瓜) 
    我不明白你的代码具体要实现什么目的。因为在你点击CheckBox的时候,控件就会自动Check或者UnCheck
      

  9.   

    同意楼上的说法,如果你在OnClick事件中再企图去修改其状态有可能造成死锁!
      

  10.   

    感觉代码没有问题
    建议改为
    procedure Tform1.myclick(sender: tobject);
    begin
    TCheckbox(Sender).checked=not TCheckbox(Sender).checked//改这样试试
    end;
      

  11.   

    应该放到MouseDown事件里,而不是Click里
      

  12.   

    各位是这样的:  1.若按 technofantasy(www.applevb.com) 说的做。
    将控件的OnClick事件与myclick方法向关联之后,动态
    生成的CHECKBOX的值在单击后仍然不会发生变化!  2.如果不为动态生成的CHECKBOX另外编写ONCLICK事件,
    即使用其默认的ONCLICK事件,动态生成的CHECKBOX的值
    在单击后还是仍然不会发生变化!  这到底是为什么?!!!
      

  13.   

    你看一下原代码就知道了,当你CLICK时它会调用SetChecked(True)所以你的CHECKBOX无论ONCLICK事件如何?都会变成True,建议你用MouseDown事件
      

  14.   

    感谢各位!
    我还有一个问题不明白.同样是动态生成的CHECKBOX控件数组,当将
    PARENT属性设置为FORM1时,就不会出现上面的问题?也不必为生成
    的CHECKBOX另外编写ONCLICK事件?!