あらかじめ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;
Heightは、OnMeasureItemで指定できませんか?
MeasureItemというのは使ったことがなかったので詳しく知りませんでした。
おかげで解決しました。ありがとうございます。
ツイート | ![]() |