DrawItem上的ComboBox确实无法正常工作

时间:2017-03-02 19:23:46

标签: delphi combobox

如果关联的对象具有特定值,我希望组合框项更改颜色。 我做了以下事情:

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'

你明白为什么吗?

1 个答案:

答案 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;