OwnerDraw時のComboBoxの高さについて

解決


きりう  2004-01-18 06:40:52  No: 6800

あらかじめ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

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


きりう  2004-01-18 07:52:57  No: 6802

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


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加