ユーザーに選択できるコントロールを提供する
ほとんどのアプリケーションでは、単純な「はい/いいえ」オプションや、何百もの可能性のリストから選択するなど、ユーザーに選択肢を提供する必要があります。 Visual Basic には、選択を提供するための標準コントロールがいくつか含まれています。次の表は、これらのコントロールとその使用法をまとめたものです。
チェックボックスでオプションを 1 つ選択します
CheckBox は、特定の状態が選択されている (オン) かクリアされている (オフ) かを示します。アプリケーションでチェックボックスを使用すると、ユーザーは「True/False」または「yes/no」を選択できます。チェックボックスは互いに独立して機能するため、ユーザーは同時に必要な数のチェックボックスを選択できます。たとえば、図 3.9 では、太字と斜体の両方を選択できます。
チェックボックスアプリ
この例では、CheckBox を使用して、テキストを通常のフォントで表示するか斜体で表示するかを決定します。この例の動作バージョンについては、アプリケーション例 Controls.vbp の Check.frm を参照してください。図 3.10 に示すように、このアプリケーションには TextBox、Label、CommandButton、および 2 つの CheckBox があります。
次の表に、アプリケーション内のオブジェクトのプロパティ設定を示します。
太字または斜体が選択されている場合、CheckBox の Value プロパティは 1 に設定され、選択されていない場合は 0 に設定されます。デフォルトの Value は 0 であるため、Value プロパティを変更しない限り、CheckBox は最初に表示されたときに選択されません。定数 vbChecked および vbUnchecked を使用して、値 1 と 0 を表すことができます。
チェックボックスアプリケーションのイベント
CheckBox をクリックすると、CheckBox の Click イベントが発生します。このイベント プロシージャは、CheckBox が選択されているかどうか (つまり、Value=vbChecked かどうか) をテストします。選択すると、TextBox の Font プロパティによって返される Font オブジェクトの Bold または Italic プロパティを設定することによって、テキストが太字または斜体に変換されます。
PRivateSubchkBold_Click()
IfChkBold.Value=vbCheckedThen '選択された場合。
txtDisplay.Font.Bold=True
Else ' 選択されていない場合。
txtDisplay.Font.Bold=False
EndIf
EndSub
PrivateSubchkItalic_Click()
IfChkItalic.Value=vbCheckedThen '選択された場合。
txtDisplay.Font.Italic=True
Else ' 選択されていない場合。
txtDisplay.Font.Italic=False
EndIf
EndSub
オプション ボタンを使用してオプションをグループ化する
オプション ボタンは、2 つ以上の選択肢のセットをユーザーに表します。ただし、CheckBox とは異なり、オプション ボタンは常にグループの一部として機能するため、オプション ボタンを選択すると、グループ内の他のボタンがすぐに消去されます。 「これは一連の選択肢です。1 つだけを選択してください」とユーザーに伝えるオプション ボタンのグループを定義します。
たとえば、図 3.11 に示すオプション ボタン グループでは、ユーザーは 3 つのオプション ボタンのうち 1 つだけを選択できます。
オプションボタングループを作成する
フォーム内 (つまり、Frame や PictureBox 内ではない) に直接配置されたすべてのオプション ボタンは、グループを形成します。他のオプション ボタン グループを作成する場合は、それらの一部を Frame または PictureBox に配置する必要があります。
PictureBox 内のすべてのオプション ボタンと同様に、特定の Frame 内のすべてのオプション ボタンは別のグループを形成します。このメソッドを使用して独立したグループを生成する場合は、常に最初に Frame または PictureBox を描画し、次にその中にオプション ボタンを描画します。図 3.12 は、2 つのオプション ボタン グループを持つフォームを示しています。
オプション ボタンのグループがフレーム内に描画された後、ユーザーはグループ内のオプション ボタンを 1 つだけ選択できます。フレーム内のコントロールをグループ化するには、次の手順に従います。
1. 「ツールボックス」でフレームコントロールを選択し、フォーム上にフレームを描画します。
2. [ツールボックス] で OptionButton コントロールを選択し、フレーム内にコントロールを描画します。
3. オプション ボタンもフレームに追加する場合は、手順 2 を繰り返します。最初にフレームを描画し、次にフレーム上に各コントロールを描画します。これにより、フレームを移動すると、コントロールも一緒に移動します。既存のコントロールをフレームに移動しても、コントロールはフレームと一緒に移動しません。
既存のコントロールをフレームにグループ化する場合、これらのコントロールを選択し、切り取ってフレーム コントロールまたはピクチャ コントロールに貼り付けることができることに注意してください。
コントロールコンテナ
コントロールが独立したオブジェクトである場合、フォームとコントロールの間にはある種の親子関係が存在します。図 3.12 は、フォームまたはフレーム コントロール内にオプション ボタンを含める方法を示しています。
コンテナーの概念を理解するには、まずすべてのコントロールが、それらが存在するフォームの子であると想像してください。実際、ほとんどのコントロールは読み取り専用の Parent プロパティをサポートしており、その値はコントロールが配置されているフォームです。コントロールは子として、親フォーム上の位置を決定します。コントロールの Left プロパティと Top プロパティは親フォームに対して相対的なものであり、コントロールは親フォームの境界を越えて移動することはできません。コンテナーが移動されると、コントロールも移動されるため、コントロールとコンテナーの相対位置は変更されません (つまり、コントロールの Left プロパティと Top プロパティは変更されません)。
オプションボタンを選択または無効にする
オプション ボタンは次の方法で選択できます。
1.実行中にマウスでオプション ボタンをクリックします。
2. Tab キーを使用してオプション ボタン グループを見つけ、矢印キー (方向キー) を使用してグループ内のオプション ボタンを見つけます。
3. コード optChoice.Value=True を使用して、その Value プロパティを True に設定します。
4. ラベルのタイトルで指定されたショートカット キーを使用します。
5. ボタンをオプション ボタン グループのデフォルト ボタンにするには、設計時にその Value プロパティを True に設定するだけです。ユーザーが別のオプション ボタンを選択するか、コードで変更するまで、選択されたままになります。
オプション ボタンを無効にするには、その Enabled プロパティを False に設定します。プログラムの実行中に、このオプション ボタンが灰色に変わる場合は、このオプション ボタンが選択できないことを意味します。
オプションアプリ
図 3.13 に示すフォームでは、オプション ボタンを使用してコンピュータのプロセッサ タイプとオペレーティング システムを選択します。ユーザーがグループ内のオプション ボタンを選択すると、ラベルのタイトルが現在の選択内容を反映して変更されます。この例の動作バージョンについては、アプリケーション例 Controls.vbp の Options.frm を参照してください。
次の表に、アプリケーションのオブジェクト プロパティの設定を示します。
オプション アプリケーションのイベント
オプション アプリケーションは次のようにイベントに応答します。
最初の 3 つのオプション ボタンの Click イベントは、対応する説明をフォーム レベルの文字列変数 strComputer に割り当てます。
後の 2 つのオプション ボタンの Click イベントは、対応する説明を 2 番目のフォーム レベル変数 strSystem に割り当てます。
このメソッドの重要な点は、strComputer と strSystem という 2 つのフォーム レベル変数を使用することです。これら 2 つの変数には異なる文字列値があり、オプション ボタンの最終的な選択はこれらの値によって異なります。
新しいオプション ボタンが選択されるたびに、その Click イベントのコードによって対応する変数の値が更新されます。
PrivateSubopt586_Click()
strComputer=ペンティアム
コールディスプレイキャプション
EndSub
次に、DisplayCaption というプロシージャを呼び出します。これにより、2 つの変数が連結され、Label の Caption プロパティが変更されます。
サブディスプレイキャプション()
lblDisplay.Caption=あなたが選択しました&
_strコンピューター&実行中&strシステム
EndSub
このサブルーチンが使用されるのは、変数の値が状況に応じて異なることを除けば、Caption プロパティを変更するプロセスは 5 つのオプション ボタンすべてで基本的に同じであるためです。これにより、すべての Click イベントで同じコードが重複することがなくなります。
変数とサブプロセスの詳細については、第 5 章「プログラミングの基礎」で説明します。
リストボックスとコンボボックスの使用
ListBox と ComboBox はユーザーに選択肢を提供します。デフォルトでは、オプションは垂直の 1 列に表示されますが、複数の列に設定することもできます。項目の数が ComboBox または ListBox で表示できる数を超える場合、コントロール上に ScrollBar が自動的に表示されます。ユーザーはリストを上下左右にスクロールできます。図 3.14 は、単一列の ListBox を示しています。
ComboBox は TextBox と ListBox の両方の機能を備えています。このコントロールを使用すると、ユーザーはテキストを入力するか、リスト内の項目を選択することによって選択を行うことができます。図 3.15 にコンボボックスを示します。
Label の Caption プロパティや TextBox の text プロパティなど、単一の値を含む他のコントロールとは対照的に、ListBox と ComboBox には複数の値または値のコレクションが含まれます。組み込みメソッドを使用して、実行時にコレクション内の値を追加、削除、および保持します。 List1 という名前の ListBox に複数の項目を追加するコードは次のとおりです。 List1.AddItemParis
List1.AddItemニューヨーク
List1.AddItemサンフランシスコ
ListBox と ComboBox は、限られたスペースで多数のオプションをユーザーに提供する効果的な方法です。
ListBox コントロールと ComboBox コントロールの詳細については、第 7 章「Visual Basic の標準コントロールの使用」を参照してください。
->