Delphi 具有csOwnerDrawFixed样式的组合框的行为如何类似于csDropDown样式?

Delphi 具有csOwnerDrawFixed样式的组合框的行为如何类似于csDropDown样式?,delphi,delphi-xe,ownerdrawn,tcombobox,Delphi,Delphi Xe,Ownerdrawn,Tcombobox,我正在使用一个style属性设置为csOwnerDrawFixed的组件,我实现了OnDrawItem,一切都很好,现在我希望组合框的行为与csDropDown样式(csOwnerDrawFixed样式的行为与csDropDownList样式类似)时的行为相似,我的意思是使用一个内部编辑器。这可能吗 所有OwnerDraw样式都不支持在TComboBox中显示编辑框。您必须使用单独的TEdit。Delphi的TComboBox包装器不支持所有者绘制可编辑样式,但底层的Windows控件支持,并且

我正在使用一个style属性设置为csOwnerDrawFixed的组件,我实现了OnDrawItem,一切都很好,现在我希望组合框的行为与csDropDown样式(csOwnerDrawFixed样式的行为与csDropDownList样式类似)时的行为相似,我的意思是使用一个内部编辑器。这可能吗

所有OwnerDraw样式都不支持在
TComboBox
中显示编辑框。您必须使用单独的
TEdit

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