如果关联的对象具有特定值,我希望组合框项更改颜色。 我做了以下事情:
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'
你明白为什么吗?
答案 0 :(得分:2)
是。您将根据ItemIndex重复设置颜色,而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;