WIZARDを利用したエクスプローラ
スタイルのDBアプリケーション開発

秋月巌 AKIZUKI,Iwao


はじめに
図1:今回作成するエクスプローラスタイルのDBアプリケーション

 豊富に用意されたウィザードは,Visual Basic 5.0のひとつの特徴である. なかでもアプリケーションウィザードは,Visual Basicで開発するアプリケーションのテンプレートを自動的に生成する興味深い開発支援機能である.
このエキスパートシステムは,生成するアプリケーションのスタイルを選択するときに,エクスプローラスタイルを選択することができる.
 本稿では,ウィザードの生成したアプリケーションにコードを追加することで,データベースの内容をエクスプローラスタイルで表示するサンプルを作成する.


パーソナルコンピュータの時代

業務とコンピュータ 低コストシステムと開発ツール Visual Basicとウィザード 第3のユーザーインターフェイススタイル

サンプルアプリケーション
の生成

 今回はウィザードが生成したアプリケーションテンプレートにコードを追加し,データベースのフロントエンドとして活用してみた.作成するサンプルプログラムはツールバー右側のボタンをクリックすることで,フォーム右側の表示形式を変更することができる(図2).フォームには2つのテーブルのデータがデータベースより表示される.ひとつは「取引先」テーブル(Torihikisaki)であり,もうひとつは「商品」テーブル(Syohin)である.  左側のTreeViewコントロールのトップには「取引先」があり,各取引先をクリックすると,その取引先が扱っている製品が表示される構造である.  記事末にソースコードの全文を掲載する.ひとつのモジュールとひとつのフォームからなるシンプルなプログラムである.網掛けの部分が追記したコード,斜体がコメントアウトした部分,それ以外がアプリケーションウィザードが生成したコードである.

アブリケーションウィザード
の利用

 アプリケーションウィザードの使用法は他のウィザードの例にもれず,難しいものではない.
 Visual Basic 5.0の開発環境の[ファイル]メニューから[新しいプロジェクト]を選択すると,「新しいプロジェクト」ダイアログが表示される(図3).「アプリケーションウィザード」アイコンを選択するとウィザードが開始する(図4).
 次の「インターフェイスの種類」ダイアログで,エクスプローラスタイルを選択する(図5).サンプルアプリケーションでは「メニュー」ダイアログの「すべての選択を解除」ボタンをクリックして選択を解除しておく(図6).ここでチェックボックスをチェックした場合は,指定した項目のメニューが実装される.「リソース」ダイアログと「インターネット接続」ダイアログでは,両方とも「いいえ」を選択する(図7・8).図9「標準フォーム」の「以下の標準フォームをアプリケーションに組み込みますか?」という問いに対して「いいえ」を選択.さらに,図10の「データアクセスフォーム」ダイアログでは「いいえ」を選択する.ここで「はい」を選択してテーブルを指定すると,ウィザードはデータを操作するための一般的なフォームをエクスプローラスタイルのフォームとは別に作成する.
 最後に「完了」ダイアログ(図11)にアプリケーションの名前を入力し,「完了」ボタンをクリックすると,サマリーレポート(図12)が表示され,エクスプローラスタイルのアプリケーションが生成される.  図13はウィザードが生成したアプリケーションのプロジェクトウィンドウである.それぞれひとつのモジュールとフォームから構成されている.モジュールとはいっても,リスト1のコードをみてもらえばわかるように,メインフォームを呼び出すコードが記述されているだけで,実質的には何の処理もおこなっていない.

完成したアプリケーション

 図14・15が完成したフォームのデザイン時と実行時である.フォームにはToolBarコントロール(tbToolBar),TreeViewコントロール(tvTreeView),ListViewコントロール(lvListView)と,それらを区切るためのImageコントロール(imgSplitter)およびPictureBoxコントロール(picSplitter)が配置されている.ListViewコントロールの背後に隠れて見えないが,CommonDialogコントロールとImageListコントロールもフォームに配置されている.このImageListコントロールはツールバーに表示するボタンのイメージを格納している.
 処理が何も記述されていないため,実行してみても左右のリストには何も表示されない(図15).それでもノードの区切りをドラッグするとノードのサイズが変更される.

サイズ変更のためのドラッグ時の境界線表示

ツリービューとリストビューのサイズ変更処理 イメージリストコントロールの配置
図16:ImageListコントロールを2つ配置

イメージリストにアイコンを設定
図17:小さいアイコン用のImageListコントロール(ImageList1)
図18:大きいアイコン用のImageListコントロール(ImageList2)

カスタムコードの記述

データの取得と表示

最上位ノードの作成 子ノード(取引先名)の追加 孫ノード(商品名)の追加 コードによるノードの展開 ノード展開時のアイコン変更
 図25:子ノードを表示するときには
 「開いたフォルダ」アイコンに変更

リストビューへのアイテム登録 詳細表示時のヘッダ作成 リストビューのクリア データベースの内容をリストビューに表示

まとめ

 エクスプローラスタイルのユーザーインターフェイスアーキテクチャは,データベースのフロントエンドとしても親テーブルとの関連がわかりやすいなどのメリットを持つ.しかし,Visual Basic 5.0に付属してくるツリービューとリストビューの組み合わせでは,アプリケーションウィザードを使ったとしても猥雑なコーディングをする必要があり,日常的に使う気にはなれない.
 このサンプルではフォームのオープン時にすべてのデータをロードしているが,この方法だとデータが多い場合にはフォームのロード時間が著しく遅くなる.これはVisual Basic 5.0のサンプルについてくるDataTreeアプリケーションを実行してみるとよくわかるはすである.
 実用的なシステムをつくるには,ノードをクリックした瞬間に子ノードに表示するアイテムを抽出するクエリーを実行するべきである.しかし,この方法にも問題がある.エクスプローラスタイルのインターフェイスでは,ノードが子ノードを持つ場合には左側の四角形の中に+記号が表示される.動的に子ノードを作成するようにすると,この+記号が表示されない.この問題を回避するにはダミーで子ノードを作成しておいて,展開時に実データを追加する方法がよい.この方法は実際に有効だと思うが,実装にはやはり,余分なコードを記述する必要が生まれる.
 日本の優秀なActiveXコントロールベンダーに,データ連結が可能なツリービューコントロールの開発を望みたい.

全プログラムリスト

全プログラムのダウンロード


  Visual Basic開発者の手引き | Visual Basicコースホームページ
int21 ホームページ | PCDN ホームページ


PCDN LOGO