gpt4 book ai didi

delphi - 在 Delphi 中创建 TCustomComboBox 后代

转载 作者:行者123 更新时间:2023-12-03 18:20:23 27 4
gpt4 key购买 nike

我正在尝试在 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;

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

如有任何帮助,我们将不胜感激。

最佳答案

还有一个属性需要设置,根据内存,它是 DrawingStyle := dsCustomDraw将其放入构造函数或 Loaded 中。

关于delphi - 在 Delphi 中创建 TCustomComboBox 后代,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/642165/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com