TListViewEx - 拡張 ListView コンポーネント(Delphi)
Delphi 標準の TListView を継承した拡張コンポーネントです。
🔧 特徴
ListViewに必要な下記の機能を内包させています
- Imagesを内部の持ち生成と設定済み
- 全選択と解除機能
- カラム(列)の横幅の取得と数々の設定機能
ListViewに存在する数々のバグを修正しています
- Inserr出来ない
- 行を入れ替えられない
- カーソルが画面外に行っても追従しない
- スクロールバーの表示非表示が設定出来ない
🧪 サンプル(MainListViewEx.pas)
- サンプルで以下のことを確認出来ます
- Exchangeによる要素の移動機能
- TopIndexによるカーソル表示が画面内に収まる機能
- Insertによる挿入機能
📦 使用方法
-
ListViewEx.pasをプロジェクトに追加。 -
uses ListViewEx;を宣言。 -
TListViewExをフォーム上に配置。 - 以下のように使います:
ListViewEx1.TopIndex := 10; // 10行目にスクロール
ListViewEx1.ColumnAlign(1); // 2列目の横幅を本体サイズに合うように調整
✅ 注意点
- 表示スタイルは
vsReportを前提としています。 - スクロール動作は
ListView_GetTopIndexを使用しており、WinAPI依存です。 - Delphi 10.x で動作確認済み。
🗂 サンプルと配布先
📝 ライセンス
MIT ライセンス。商用・非商用問わず自由に利用可能です。
🔍 追加の拡張メソッド・プロパティ一覧
📦 メソッド(機能関数)
| 関数名 | 説明 |
|---|---|
Clear() |
内包している Items と Images を同時にクリアします。 |
Insert(Index: Integer): TListItem |
ListViewのバグの影響を避けつつ指定位置にアイテムを挿入します。 |
EnableIcons(ViewStyle, IconSize) |
指定の ViewStyle と IconSize でアイコンを表示します。 |
DisableIcons() |
アイコン表示を無効にします。 |
SelectAll() |
全項目を選択状態にします。 |
SelectClear() |
全選択状態を解除します。 |
AdjustColumnsToHeader() |
各カラム幅をヘッダー内容に合わせて自動調整します。 |
ColumnAlign(aColmun) |
指定した列をフォーム幅に合わせて可変調整します。 |
AutoAdjustColumnWidth(TargetColumn) |
指定した列の横幅を最大限に広げます。 |
ColumnLeft(aCol) |
指定列の左端のX座標を返します。 |
ColumnRight(aCol) |
指定列の右端のX座標を返します。 |
SetImageSizeWH(Width, Height) |
表示するアイコンのサイズを W×H に設定します。 |
Exchange(Index1, Index2) |
指定された2つのインデックスの要素を入れ替えます。 |
🔧 プロパティ
| プロパティ名 | 説明 |
|---|---|
Images: TImageList |
アイコン表示に使用される TImageList。 |
ImageSize: Integer |
アイコンのサイズ(1辺のピクセル数)。 |
ItemHeight: Integer |
各リストアイテムの高さ。 |
TopIndex: Integer |
最上部に表示されているアイテムのインデックス。 |
Cells[ACol, ARow]: string |
Caption や SubItems を配列的にアクセス可能。 |
RowColorStriped: Boolean |
背景色を交互に塗り分ける設定(未使用の可能性あり)。 |
HorzScrollBarVisible: Boolean |
水平スクロールバーの表示切り替え。 |
VertScrollBarVisible: Boolean |
垂直スクロールバーの表示切り替え。 |