8

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

4

2 回答 2

8

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

于 2012-03-21T15:46:07.933 回答
0

OwnerDraw 样式都不支持在TComboBox. 您将不得不使用单独的TEdit

于 2012-03-21T06:26:16.410 回答