2022/10/14 (金) 11:29:08 Mr.XRAY |
TListViewで行の高さを低く設定したときの実際の高さを取得するには
https://www.petitmonte.com/bbs/answers?question_id=29997
某掲示板でレスしたコードの基本形は以下です.
掲示板に提示したコードは,
Button1 クリックで TListView の行の高さを変更できるようにしています.
行の高さは ItemHeight というプロパティにしていますから,
この値を表示すれば「高さの表示」です.
type
TListView = class(Vcl.ComCtrls.TListView)
protected
procedure CNMeasureitem(var Message: TWMMeasureItem); message CN_MEASUREITEM;
end;
TForm1 = class(TForm)
ListView1: TListView;
procedure FormCreate(Sender: TObject);
private
{ Private 宣言 }
public
{ Public 宣言 }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
//=============================================================================
// フォーム生成時の処理
//=============================================================================
procedure TForm1.FormCreate(Sender: TObject);
var
LCol : TListColumn;
LItem : TListItem;
LIndex: Integer;
begin
ListView1.ViewStyle := vsReport;
ListView1.OwnerDraw := True;
ListView1.Items.BeginUpdate;
LCol := ListView1.Columns.Add;
LCol.Caption := 'Test Items';
LCol.Width := 200;
for LIndex := 0 to 49 do begin
LItem := ListView1.Items.Add;
LItem.Caption := Format(' %.6d',[LIndex + 1]);
end;
ListView1.Items.EndUpdate;
end;
{ TListView }
//----------------------------------------------- -------------------------
// TListView の CN_MEASUREITEM メッセージ処理
// ItemHeight の値を設定
// OwnerDraw が True でないと機能しない
//----------------------------------------------- -------------------------
procedure TListView.CNMeasureitem(var Message: TWMMeasureItem);
begin
inherited;
Message.MeasureItemStruct.itemHeight := 30;
end;
下図の最初の画像が,質問者が問題としている高さ 10 です.
その下は,高さ 30 の時です.
 |
|