How a Combobox with the csOwnerDrawFixed Style can behave like the csDropDown style?

試著忘記壹切 提交于 2019-12-04 21:57:57

问题


I'm using a TComboBox component with the style property set to csOwnerDrawFixed, I implement the OnDrawItem And everything works fine, Now I want which the combobox to behave like when had the csDropDown style (with the csOwnerDrawFixed style behaves like the csDropDownList style) , I mean with a inner editor. is this possible?


回答1:


Delphi's TComboBox wrapper doesn't support an owner draw editable style, but the underlying Windows control does, and it's easy to enable it.

Create a new descendant class like so:

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;

Set the Style to csDropDown and assign OnDrawItem like you're already doing.




回答2:


None of the OwnerDraw styles support the presence of an edit box in the TComboBox. You will have to use a separate TEdit instead.



来源:https://stackoverflow.com/questions/9797961/how-a-combobox-with-the-csownerdrawfixed-style-can-behave-like-the-csdropdown-st

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!