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;
在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获得焦点时触发判断。
那就用一个 TList 管理起来。GroupBox1上的 Control 至少 tag 或 name 你可以根据这个来区别它们的。
设置一个全局变量,当有colorbox改变时就把这个变量状态设置下
很多个colorbox,就是不想一一设置啊,
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;
大家可能没理解我的意思,我是想在combobox.onchange事件里加入判断的,但是楼上的各位都是在colorbox获得焦点时触发判断。
如果colorbox值发生变化,但是在触发combobox.onchange事件,则colorbox已经推动焦点了
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获得焦点时触发判断。
那就用一个 TList 管理起来。GroupBox1上的 Control 至少 tag 或 name 你可以根据这个来区别它们的。