我在form上面的groupbox里有很多colorbox控件,如何判断这些colorbox上的颜色值被更改了呢,如果用if一个个判断太麻烦了

解决方案 »

  1.   

    在colorbox的onchange事件中添加一个代码
    设置一个全局变量,当有colorbox改变时就把这个变量状态设置下
      

  2.   


    很多个colorbox,就是不想一一设置啊,
      

  3.   

    简单啊,你先声明一个方法与onchange事件方法参数一致:这个方法里就是实现设置这个全局变量 的,然后在界面初始化时把这个方法赋值给所有的colorbox的onchange事件,这样不就写一个就好了啊?
      

  4.   


    var
      i: Integer;
    begin
      for i := 0 to GroupBox1.ControlCount - 1 do
      begin
        if GroupBox1.Controls[i] is TColorBox then
        begin
          if TColorBox(GroupBox1.Controls[i]).Selected <> clBlack then  //默认是黑色
          begin
            ShowMessage('颜色发生改变');
          end;
        end;
      end;
    end;
      

  5.   


    大家可能没理解我的意思,我是想在combobox.onchange事件里加入判断的,但是楼上的各位都是在colorbox获得焦点时触发判断。
    如果colorbox值发生变化,但是在触发combobox.onchange事件,则colorbox已经推动焦点了
      

  6.   

    在combobox.onchange事件里加入判断,使用:
     for i := 0 to GroupBox1.ControlCount - 1 do
      begin
        if GroupBox1.Controls[i] is TColorBox then
        begin
          if TColorBox(GroupBox1.Controls[i]).Selected <> clBlack then  //默认是黑色
          begin也是可以的。
    但是楼上的各位都是在colorbox获得焦点时触发判断。
      

  7.   


    那就用一个 TList 管理起来。GroupBox1上的 Control 至少 tag 或 name 你可以根据这个来区别它们的。