delphi - 具有 csOwnerDrawFixed 样式的组合框如何表现得像 csDropDown 样式?

标签 delphi delphi-xe ownerdrawn tcombobox

我正在使用 TComboBox组件的 style 属性设置为 csOwnerDrawFixed,我实现了 OnDrawItem 并且一切正常,现在我希望组合框的行为就像有 csDropDown em> 样式(csOwnerDrawFixed 样式的行为类似于 csDropDownList 样式),我的意思是使用内部编辑器。这可能吗?

最佳答案

Delphi 的 TComboBox 包装器不支持所有者绘制可编辑样式,但底层 Windows 控件支持,并且启用它很容易。

创建一个新的后代类,如下所示:

TComboBox = class(StdCtrls.TComboBox)
public
  procedure CreateParams(var Params: TCreateParams); override;
end;

procedure TComboBox.CreateParams(var Params: TCreateParams);
begin
  inherited;
  if Assigned(OnDrawItem) then
    Params.Style := Params.Style or CBS_OWNERDRAWFIXED
end;

Style设置为csDropDown并像您已经做的那样分配OnDrawItem

关于delphi - 具有 csOwnerDrawFixed 样式的组合框如何表现得像 csDropDown 样式?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9797961/

相关文章:

delphi - 是否有适用于 Delphi-XE 的 LockBox 版本

c++ - MFC中的OwnerDrawn控件

c# - OwnerDraw 模式下的 ListBox DrawItem HotLight 状态?

c# - 帮助分析软件/程序如何构建贝塞尔曲线

java - 每种编程语言都有单独的 Subversion 分支?

delphi - 使用 Delphi 组件加密文件并使用其他实用程序解密

class - 扫描所有类以查找给定的自定义属性

c# - 选择时 TreeView 所有者绘制故障

delphi - 绘制椭圆时更改颜色属性?

class - Delphi : Error 2008 Incompatible types for a class property