OwnerDraw時のComboBoxの高さについて

解決


きりう  2004-01-18 06:40:52  No: 6800  IP: [192.*.*.*]

あらかじめComboBox1.Items.Addで2つの項目をタブ(#8)を挟んで代入しておき、DrawItemイベントで下記のように少し距離を置いて2つの項目を表示するようにしました。

今回、上司から文字が小さいと言われ、ComboBox1のフォントサイズを変えてみたところ、ComboBox1のStyleプロパティにcsOwnerDrawVariableを指定した場合、Heightプロパティが変更できないようで、ComboBox1の高さより文字がはみ出してしまいました。
DrawItemイベントでComboBox1の高さを変更するにはどうしたら良いのでしょうか?

ちなみに下記のソースは以前書籍かサイトを調べて書いたソースを流用したと思います。

procedure TfrmOrder.ComboBox1DrawItem(Control: TWinControl;
  Index: Integer; Rect: TRect; State: TOwnerDrawState);
var
  n : Integer;
  Item1, Item2 : String;
begin
  // TABで2つの文字列に分解する
  n := Pos(#8, ComboBox1.Items[Index]);
  Item1 := Copy( ComboBox1.Items[Index], 1 , n-1 );
  Item2 := Copy( ComboBox1.Items[Index], n+1 , Length(ComboBox1.Items[Index]) - n );

  with ComboBox1.Canvas do
  begin
    // デフォルトの表示を塗りつぶして消す
    FillRect(Rect);

    // 線を引く
    MoveTo(Rect.Left + 50, Rect.Top);
    MoveTo(Rect.Left + 50, Rect.Bottom);

    // 項目を表示させる
    TextOut(Rect.Left + 2, Rect.Top, Item1 );
    TextOut(Rect.Left + 52, Rect.Top, Item2 );
  end;

end;

編集    削除
 2004-01-18 07:26:13  No: 6801  IP: [192.*.*.*]

Heightは、OnMeasureItemで指定できませんか?

編集    削除
きりう  2004-01-18 07:52:57  No: 6802  IP: [192.*.*.*]

MeasureItemというのは使ったことがなかったので詳しく知りませんでした。
おかげで解決しました。ありがとうございます。

編集    削除