Как комбинированный список со стилем csOwnerDrawFixed может вести себя как стиль csDropDown? - PullRequest
7 голосов
/ 21 марта 2012

Я использую TComboBox компонент со свойством стиля, установленным на csOwnerDrawFixed , я реализую OnDrawItem И все работает нормально, Теперь я хочу, чтобы какойкомбобокс должен вести себя так, как если бы он имел стиль csDropDown (со стилем csOwnerDrawFixed ведет себя как стиль csDropDownList), я имею в виду внутренний редактор.Это возможно?

Ответы [ 2 ]

7 голосов
/ 21 марта 2012

Оболочка 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, как вы уже делаете.

0 голосов
/ 21 марта 2012

Ни один из стилей OwnerDraw не поддерживает наличие поля редактирования в TComboBox.Вместо этого вам придется использовать отдельный TEdit.

...