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;

Styletoを設定して、既に行っているようcsDropDownに割り当てます。OnDrawItem

于 2012-03-21T15:46:07.933 に答える
0

OwnerDraw スタイルのいずれも、 内の編集ボックスの存在をサポートしていませんTComboBoxTEdit代わりに別のものを使用する必要があります。

于 2012-03-21T06:26:16.410 に答える