2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

ListViewのバグ修正と機能追加クラス

Posted at

TListViewEx - 拡張 ListView コンポーネント(Delphi)

Delphi 標準の TListView を継承した拡張コンポーネントです。

🔧 特徴

ListViewに必要な下記の機能を内包させています

  • Imagesを内部の持ち生成と設定済み
  • 全選択と解除機能
  • カラム(列)の横幅の取得と数々の設定機能

ListViewに存在する数々のバグを修正しています

  • Inserr出来ない
  • 行を入れ替えられない
  • カーソルが画面外に行っても追従しない
  • スクロールバーの表示非表示が設定出来ない

🧪 サンプル(MainListViewEx.pas)

  • サンプルで以下のことを確認出来ます
  • Exchangeによる要素の移動機能
  • TopIndexによるカーソル表示が画面内に収まる機能
  • Insertによる挿入機能

📦 使用方法

  1. ListViewEx.pas をプロジェクトに追加。
  2. uses ListViewEx; を宣言。
  3. TListViewEx をフォーム上に配置。
  4. 以下のように使います:
ListViewEx1.TopIndex := 10;  // 10行目にスクロール
ListViewEx1.ColumnAlign(1); // 2列目の横幅を本体サイズに合うように調整

✅ 注意点

  • 表示スタイルは vsReport を前提としています。
  • スクロール動作は ListView_GetTopIndex を使用しており、WinAPI依存です。
  • Delphi 10.x で動作確認済み。

🗂 サンプルと配布先


📝 ライセンス

MIT ライセンス。商用・非商用問わず自由に利用可能です。


🔍 追加の拡張メソッド・プロパティ一覧

📦 メソッド(機能関数)

関数名 説明
Clear() 内包している ItemsImages を同時にクリアします。
Insert(Index: Integer): TListItem ListViewのバグの影響を避けつつ指定位置にアイテムを挿入します。
EnableIcons(ViewStyle, IconSize) 指定の ViewStyleIconSize でアイコンを表示します。
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 CaptionSubItems を配列的にアクセス可能。
RowColorStriped: Boolean 背景色を交互に塗り分ける設定(未使用の可能性あり)。
HorzScrollBarVisible: Boolean 水平スクロールバーの表示切り替え。
VertScrollBarVisible: Boolean 垂直スクロールバーの表示切り替え。
2
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?