问题
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