如何为TDBLookupListBox启用onDraw(ownerDraw)

时间:2014-05-03 21:39:14

标签: delphi

TDBLookupListBox(我使用的是Delphi Xe5)没有onDraw事件。我需要根据某些字段的值更改列表中显示的项目的文本颜色(或文本的背景颜色)。例如,如果显示要从中挑选的员工列表,则显示员工满足灰色或红色的特定条件等。

关于如何做到这一点的任何想法?

1 个答案:

答案 0 :(得分:1)

这是插入控件的理想用例。

请参阅:Delphi - Changing TComboBox's OnChange

像这样的东西应该做的伎俩(伪代码,稍后会改进)。

type
  TDBLookupListbox = class(DBcntls.TDBLookupListbox)
  private
    FOnDraw: TDrawEvent;
  protected
    procedure Paint; override;
  public
    property OnDraw: TDrawEvent read FOnDraw write FOnDraw;
  end;

procedure TDbLookupListbox.Paint;
begin
  inherited;
  if Assigned(OnDraw) then FOnDraw(Self, Canvas);
end;