エクステンション、ListView Object の使い方を説明します。
ListView Object はアプリケーション中に「表」を挿入したい場合に用いられるオブジェクトです。
関連:エクステンション DataGrid と ListView の使い方について 関連:DataGrid (データグリッド) Object の使い方に関する解説
- Windows PC ビルド専用(エクスポータで利用できません)
- 要MMF2/CF25 Developer バージョン
MMF/CF25 におけるリストビューとデータグリッドの違い
「表」の形で二次元配列データを表現するためのオブジェクトという意味でならどちらも同じものです。データの一覧表示に用いられます。
MMF/CF25 特有の仕様なので汎用的な Windows 用のグリッド・コントロールとは呼び方が同じでも仕様は全然違います。
「行( Line /ラインもしくは Row/ロウ)」が各一次元配列で成り、各配列の要素が「列( column/カラムもしくはコラム)」と呼ばれる。
リストビューとデータグリッド、二つのオブジェクトを使い分ける場合、重要な機能としてはデータ・ソート(並び替え)実装の違いとデータ・サーチ(文字列検索)の有無があげられます。
ソートとサーチを両方実装したのが「リストビュー」で、「データグリッド」はソートの実装はオプションとしてあるけれど、サーチはありません。
並び替え( Sort/ソート)について
MMF/CF25 における ListView はカラム(縦方向)の並び替え( Sort/ソート)に対応。 Descending (降順)/ Ascending (昇順)及び by Number (数字)が利用できます。
リストビューはソートのアルゴリズムをイベントで制御できます。
データグリッドはオプションでリストモードをオンにした時だけ全自動のデータソートが可能に成りますが、全自動をオフにしたくても切れないし、手動で制御したい場合にも全自動だからまったく制御ができません。
リストビューはデータグリッドと違ってソートが全自動では無いため、カラムヘッダにまつわるクリックをイベント・トリガーとしたアクションの定義が必ず必要と成ります。
カラムヘッダーはプロパティのオプションから消すこともできます。
ヘッダーとしての表示を切り替え
リストビューはカラムヘッダを非表示にする機能がオプションにしか無く、一度オフにしたヘッダー表示をアプリケーション実行中にオン・オフする切り替えができません。データグリッドは可能。
選択はライン(行)単位で
やや特殊な仕様だと思いますが、選択がライン単位でしかできないため「アイテム(cell)」単位の選択ができません。これもプロパティのオプションから行単位の選択か否かを決定できます。
固有のアクション(データの検索機能)
リストビューは検索が可能です。ただしこれもちょっと特殊な仕様。
検索対象はカラムを単位としており、データ全体を対象にした任意の文字列検出はできません。
データ全体から文字列を検索したい場合はループ処理を使って、対象カラムに検索対象の文字列がないかを順次検索していくしかありません。
検索した文字列との一致がある場合は、「行」単位でしか選択ができない仕様なので、見つけた文字列を View 上でピンポイント選択することはできません。この辺りが不便。
検索機能を使って指定された文字列を発見した場合、エクステンションは検索一致した行番号をエクステンション内部で値として保管しています。
行を選択する場合は検索一致した行番号を代入します。Coordinates > Get Line at Click に値が保管されています。本来はクリックされたライン番号を保管しておくバッファなのですが、サーチ結果の代入もココで共用されます。詳しくは ListView のヘルプを参照。
検索に一致がある場合、−1以外の数値が返ります(行番号)。−1が返った場合は検索に一致がなかったことを示します。
動作サンプル:ListView_HowToCreate_and_ColumnSeachFunctions.mfa