我使用以下代码:How to make a combo box with fulltext search autocomplete support?通过搜索创建自定义TComboBox控件。

一切工作正常,但我决定使用以下方法在其中添加位图(图片):

但是,当我添加第二个代码时,我失去了搜索功能。为了启用所有者绘图,我添加了csOwnerDrawFixed样式以在构造函数中进行控制

constructor TComboBox.Create(AOwner: TComponent);
begin
  ...
  Style := csOwnerDrawFixed; ; << Added to enable owner draw
end;


如何合并这两个代码?奇怪的是,当我运行项目时,我可以看到控件第一次正确地重新绘制,但是随后所有数据都丢失了并且没有绘制完成。

最佳答案

@Rohit Gupta:实际上,很容易合并这两个代码:只需将第二个代码放到第一个代码中,然后重命名类即可:)
我这样做了,但是代码不起作用-绘制控件会导致软件冻结,而我无法解决此问题,这就是我寻求帮助的原因。
@Warren P:没错,最好是创建可处理所有内容的自定义控件。
我创建了自己的控件,该控件基本上是带有所有者绘制的TEdit和带有所有者绘制和TSpeedButton的TListBox,它们运行良好:
delphi - 带有全文搜索和位图的Delphi TComboBox(所有者绘制)-LMLPHP
我现在需要进行一些调整,并且可以在我的博客上找到完整的控制。
如果有人感兴趣,请稍后在http://unsigned.sk/blog/上抓住它(完成后我会在此处发表评论)。
感谢所有的想法!

10-05 22:55
查看更多