当前位置:  开发笔记 > 编程语言 > 正文

在Delphi中创建TCustomComboBox后代

如何解决《在Delphi中创建TCustomComboBox后代》经验,为你挑选了1个好方法。

我正在尝试基于Delphi 2007中的TCustomComboBox创建一个自定义控件,但我陷入了第一个障碍.

我试图覆盖下拉显示的方式,主要是显示的文本,查看stdctrls.pas中的TCustomComboBox的源代码看起来我只需要覆盖DrawItem但它不起作用,因为我的代码永远不会执行重写方法.

我看了几个开源组件源代码,看看他们是如何做到的,但我仍然不知所措.

这是我到目前为止(不是很多)

type
  TKeyValueComboBox = class(TCustomComboBox)
  private
    { Private declarations }
    //FColumns:Integer;
  protected
    { Protected declarations }
    procedure DrawItem(Index: Integer; Rect: TRect; State: TOwnerDrawState);override; 
  public
    { Public declarations }
    constructor Create(AOwner: TComponent); override;
    destructor Destroy; override;
  published
end;

procedure TKeyValueComboBox.DrawItem(Index: Integer; Rect: TRect;
  State: TOwnerDrawState);
begin
  TControlCanvas(Canvas).UpdateTextFlags;
  if Assigned(OnDrawItem) then OnDrawItem(Self, Index, Rect, State)
  else
  begin
    Canvas.FillRect(Rect);
    Canvas.TextOut(Rect.Left + 2, Rect.Top, Items[Index]+'-HELLO');
  end;
end;

有谁知道我需要用什么方法来获取我被覆盖的版本的火?或者我做错了什么?

任何帮助,将不胜感激.



1> Henk Holterm..:

还有一个必须设置的属性,从内存中它的DrawingStyle:= dsCustomDraw将它放在构造函数或Loaded中.

推荐阅读
赛亚兔备_393
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有