TreeViewコントロールとListViewコントロールをフォームの左右に配置して連動させるフォームです。TreeViewコントロールがメイン側のナビゲーションの役目を果たし、そこで選択された内容にリンクしてListViewコントロールの内容が切り替わります。
このインタフェースはエクスプローラと同じようなものですが、ListViewコントロール側での操作に応じたTreeViewコントロールのリンクや相互のドラッグ&ドロップまでは対応していません。しかし、メイン側のデータが、フラットなリストボックスでは表現できないようなツリー構造になっているような場合には、明細データを検索する1つの方法として便利な方法です。
ポイント
- NodeClickイベントとTextプロパティ
- これまでのサンプルでは、ListViewコントロールに「tbl商品マスタ」にすべてのレコードをセットしていました。これに対して今回は、TreeViewコントロール上で選択されたノードに関連したデータのみを抽出してListItemに追加するようにします。
それには、一般的なレコード操作として、現在選択されているノードのTextプロパティの値を商品区分のWhere条件とするレコードセットを開くようにするだけです。ノードの選択切り替えはNodeClickイベントによって知ることができますので、そのタイミングでListViewコントロール用のレコードセットを開き直し、ListItemsコレクションの再構成を行ないます。このポイントだけ押さえれば、TreeViewやListViewに関する新たなテクニックは必要ありません。
※ここでは、tbl商品マスタからグループ集計によって商品区分を取り出すという簡易的な方法を使っていますが、「商品区分マスタ」テーブルなどを使うというのが本来の方法でしょう。
サンプルフォームの実行例
TreeViewで"加工食品"を選択したところ

TreeViewで"調味料"を選択したところ

サンプルDBのダウンロード
comctl_10.lzh(comctl_10.mdb)
|