パスワードを忘れた? アカウント作成
614124 journal

A7Mの日記: 覚え書き:TListViewのカラム幅を「うまく」自動的に調整する

日記 by A7M
TListViewのカラム幅の調整はColumnプロパティのAutoSizeをtrueにしてやれば、ある程度は調整するが、縦スクロールバーのサイズを考慮していないようなので、不要な横スクロールバーが表示されてしまう場合がある。
そこで、縦スクロールバーのサイズを取得し、その値を考慮して半ば無理矢理カラム幅を調整するほうが、不要な横スクロールバーが表示されることがない(はず)。
縦スクロールバーの幅はGetSystemMetricsで取得できる。

void __fastcall TForm1::FormResize(TObject *Sender)
{
        // スクロールバーの余裕幅を4ピクセルほどとっておく
        int BarSize = GetSystemMetrics(SM_CXVSCROLL) + 4;
        int ColCount = ListView1->Columns->Count;

        int ListWidth = ListView1->Width - BarSize;
        int ColWidth = ListWidth / ColCount;

        for (int i = 0; i < ColCount; i++) {
                ListView1->Column[i]->Width = ColWidth;
        }
}

GetSystemMetricsは、その他様々な表示要素(ウィンドウサイズなど)の値を取得できるので、とっても(゚Д゚)ウマー
この議論は賞味期限が切れたので、アーカイブ化されています。 新たにコメントを付けることはできません。
typodupeerror

「科学者は100%安全だと保証できないものは動かしてはならない」、科学者「えっ」、プログラマ「えっ」

読み込み中...