TDBLookupListBox(我使用的是Delphi Xe5)没有onDraw事件。我需要根据某些字段的值更改列表中显示的项目的文本颜色(或文本的背景颜色)。例如,如果显示要从中挑选的员工列表,则显示员工满足灰色或红色的特定条件等。
关于如何做到这一点的任何想法?
答案 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;