|
Visual Basic(VB)の醍醐味は,フォームを追加して,ツールボックスからコントロール部品をぺちゃぺちゃと貼り付けて,貼り付けたコントロールをダブルクリックしてちょこちょこっとコードを書くとやりたいことが大体できるという点にあります。事前に十分な設計作業をしないで,すぐフォームを作ってしまい,後で作り直しになってしまうということもないわけではありませんが,スクラップ&ビルドが簡単にできるのも良いところです。
そうしたVBの良さを支えているのが,あらかじめ作られたソフトウエア部品=コントロールの存在です。ちょっと想像してみてください。何もないところからプログラム・コードでテキストボックスやコンボボックスを作成しなければならないとしたら,どんなに大変なことでしょう。
今回は,VB 2005のRAD(Rapid Application Development)としての機能を支える便利なコントロール部品を見ていきましょう。
入力系コントロールの充実ぶりに目を見張る
VB 6.0(図1)とVB 2005(図2)のツールボックスを比べると,VB 2005では大幅にコントロールが追加されていることがわかります。また,CheckBoxなどの従来からあるコントロールも新機能が追加されています。
図1●VB 6.0のツールボックス |
図2●VB 2005のツールボックス |
VB 6.0以前では,顧客に提供する製品としてアプリケーションを作成する場合,VB標準付属のコントロールでは機能が物足らず,サードベンダー製のコントロールを利用することも多かったように思います。VB 2005では付属の豊富なコントロールを使い分けることで,きめ細やかな機能を持つ使いやすいフォームが作れるでしょう。
CheckBoxとCheckedListBoxの使い方を考えよう
最初にお断りしておきますが,CheckBoxとCheckedListBoxはVB 2005の新機能ではありません。CheckBoxはVB 6.0以前からありますし,CheckedListBoxはVB.NETでも利用できます。でも,CheckBoxがトグルボタンとして使えることはご存じですか? また,CheckedListBoxはどんなときに利用されていますか? 今回はこんなところから,解説を始めたいと思います。
図3は,あるサンプル・アプリケーションのフォームです。ラジオボタンがグループボックスに配置されており,「オプション」というラベルの下にCheckedListBoxがあります。「メッセージ」というラベルの下と,「お会計」というラベルの右にはテキストボックス(またはラベル)が見えます。その他には,ボタンが二つ(「クーポン券あり」と「注文」)あるだけのように見えます。しかし,実はそうではありません。
図3●CheckBoxとCheckedListBoxを使ったサンプル |
「クーポン券あり」と表示されているコントロールはCheckBoxなのです。CheckBoxのAppearance(外観)プロパティをButtonに設定すると,一度押すとくぼみ,もう一度押すと出っ張るトグルボタンのような外観になります。
さて,図3のプログラムの動きを大まかに説明しましょう。
基本メニューのラジオボタンをクリックして「醤油ラーメン」「塩ラーメン」「味噌ラーメン」のいずれかを選ぶと「お会計」ラベル(lblPrice)に値段を表示します(lblPriceのTextAlignプロパティにはMiddleRightを指定しています。TextAlignの設定は図4のようにビジュアルに設定することができます)。
図4●ラベルのTextAlignプロパティ |
オプションを指定するCheckedListBoxは,ListBoxのようにItem(項目)を選択することができ,かつ,CheckBoxのようにチェックを付けることができるので,項目を選択したときは「メッセージ」ラベル(lblMess)にメッセージを表示します。例えば,醤油ラーメンを選んだ状態で「のり」の上にカーソルをおくと,図5のように表示されます(反転している項目が選択されている項目です)。
図5●オプションの項目を選択するとメッセージを表示 |
オプションの項目にチェックを付けると値段を計算します。チェックは,図6のように複数選択が可能です。
図6●オプションの項目は複数選択可能 |
「クーポン券あり」(これはCheckBoxなのでクリックするとチェックあり/なしの状態が変化します)を押すと,100円引きになります(図7)。
図7●「クーポン券あり」で100円引き |
CheckBoxのAppearanceをButtonにすると,チェック状態の場合,ボタン全体が押し込まれた状態になるので視覚的な効果が高いと言えるでしょう。また,CheckedListBoxは項目を選択状態にしてから,チェックをオン/オフするので,チェックする前に利用者にその項目についての情報を伝えることができます(マウスによる操作は,クリックして選択,もう一度クリックしてチェックです。キーボードで操作す場合は,矢印キーで選択し,スペースキーでチェックをオン/オフします)。
例えば,味噌ラーメンにカレーをかけることを筆者は勧めませんが,個人の趣味ですから止めはしません。でも,ある商品にこのオプションは付けられないというメッセージを,チェックを付ける前に伝えることができれば,チェックしたあとにエラー・メッセージが出るよりも利用者は便利に感じるはずです。
リスト1は選択されている項目が変わったら,lblMessにメッセージを表示するコードです。メッセージの内容は多分におちゃらけですので気にしないでください。
|
リスト1●選択したオプションの項目に応じてメッセージを表示する |
リスト2は,チェック状態が変更されるときの処理です。ItemCheckEventArgs(ItemCheckEventの引数)であるeは,現在の値(CurrentValue),新しい値(NewValue),インデックス(Index)を持っているので,NewValueとIndexを使ってオプションの値段(price2)を加減算しています。
|
リスト2●チェック状態が変更されるときの処理 |
リスト3は,「注文」ボタンが押されたときの処理です。注文完了という意味で,(1)でCheckedListBox1のチェック状態をオフに,(2)で選択状態をオフにしています。
|
リスト3●「注文」ボタンが押されたときの処理 |