如果关联的对象具有特定值,我希望组合框项更改颜色。 我做了以下事情:
with Control as TComboBox do
begin
Canvas.Font.Color:=clBlack;
Canvas.Brush.Color := clWhite ;
if TMyObj(MyCb.Items.Objects[MyCb.ItemIndex]).C = 'C' then
Canvas.Brush.Color := clred ;
Canvas.FillRect(Rect);
Canvas.TextOut(Rect.Left, Rect.Top, Items[Index])
end;
我可以看到所有组合项目都是白底黑字。当我用鼠标悬停时,我悬停的所有项目都被涂成红色(即使 C 值不是“C”
你明白为什么吗?
是的。您根据 ItemIndex 重复设置颜色,该颜色在项目的绘制过程中不会更改。您应该使用调用该方法时提供的
Index
作为参数之一。
with Control as TComboBox do
begin
Canvas.Font.Color := clBlack;
Canvas.Brush.Color := clWhite ;
if TMyObj(Control.Items.Objects[Index]).C = 'C' then // Change this line
Canvas.Brush.Color := clred ;
Canvas.FillRect(Rect);
Canvas.TextOut(Rect.Left, Rect.Top, Items[Index])
end;