2006.7.4.
石立 喬

Visual C++ 2005 Express Edition の易しい使い方(3)

――― テキストボックスへ入力して結果をラベルに出力する―――

 ここでは、本格的なWindowsプログラムとは言えないが、Windowsプログラムの基礎となるGUIコントロールのテキストボックス、コンボボックス、ボタンなどをフォーム上に貼り付けて使用する方法を紹介する。

テキストボックスの使用方法
テキストボックスとは、キーボードから文字列を入力したり、文字列を出力したりできるフォーム上のコンポーネントである。以下に、テキストボックスの設定方法を述べる。
1)統合開発環境のメニューから、「表示」→「ツールボックス」を選択する。
2)ツールボックスが右側に現れるので、「TextBox」を選択する。次にフォームデザイナー(「Form1.h[デザイン]」 タブ)ウインドウのフォーム上にマウスを持って行き、希望の場所でクリックする。
テキストボックス入力を読み取るには、
   String^ string1=textBox1->Text;
テキストボックスに表示するには、
   textBox1->Text=string1;
などが用いられる。
 テキストボックスとやりとりできるのは文字列に限るので、文字列と数値との変換が必要である。
 文字列から数値への変換には、
    Double d=double::Parse(textBox1->Text);
 数値から文字列への変換には、
    textBox1->Text=d.ToString();
などが用いられる。

コンボボックス(ドロップダウンメニュー)の使用方法
 コンボボックスとは、テキストボックスとリストボックスが組み合わさった(コンボ、combination)ものであるが、ドロップダウンメニューとして使用できる。以下にコンボボックスの設定方法を述べる。
1)ツールボックスで、「ComboBox」を選択する。次にマウスをフォーム上に持って行き、希望の場所でクリックする。
2)新しくできたコンボボックスを右クリックし、「プロパティ」を選択する。
3)プロパティウインドウで、「Items」を選択する。右側に小さい四角のアイコンが現れるので、クリックする。
4)入力欄が現れるので、希望する文字列を一行ごとに入力する。
5)外部から書き込みができないように、表示欄の「DropDownStyle」を選択し、右側の下方矢印をクリックして「DropDownList」を選択する。

コンボボックスの選択位置を読み取るには、
   int n=comboBox1->SelectedIndex;
を用いる。一番上が選ばれている場合は、n=0になる。
コンボボックスの選択された文字列を直接読み取るには、
    String^ string1=comboBox1->Text;
とする。
 コンボボックスを選択するには、
    comboBox1->SelectedIndex=0;
などを用い、デフォルトとして設定する場合には、プログラムが起動して最初に実行されるForm1_Load()メソッドに記述しておく。

ラベルの使用方法
 ラベルとは、文字列を表示する場所で、文字列を固定的に与えておけば、単なる文字表示であるが、計算結果などの出力欄として使うこともできる。以下にラベルの設定方法を述べる。
1)ツールボックスで、「Label」を選択する。次にマウスをフォーム上に持って行き、希望の場所でクリックする。
2)新しくできたラベルを右クリックし、「プロパティ」を選択する。
3)プロパティウインドウで、「Text」を選択する。右側の「label1」などを消し、必要な文字に書き換える。このラベルを出力欄として使用する場合には、完全に消しておく。
 プログラムでラベルに表示するには、
   label1->Text=string1;
などを用いる。

ボタンの使用方法
 ボタンとは、それをクリックするとプログラムを呼び出し、プログラムを実行するコントロールで、非常に重要な役割を持っている。以下にボタンの設定方法を述べる。
1)ツールボックスで、「Button」を選択する。次にマウスをフォーム上に持って行き、希望の場所でクリックする。
2)新しくできたラベルを右クリックし、「プロパティ」を選択する。
3)プロパティウインドウで、「Text」を選択する。右側の「button1」などを消し、「実行」などの必要な文字に書き換える。
4)フォーム上のボタンをダブルクリックすると、コードエディタウインドウにbutton1_Click()のイベントハンドラメソッドのスケルトンができるので、そこに必要なコードを記述する。

 なお、上記のコントロールコンポーネント全般にいえることであるが、各コントロールを選択すると、サイズや位置をマウスドラッグで変更することができる。位置合わせには垂直または水平の直線(スナップ線)が現れるので、それを参考にする。

作成するプログラム
 テキストボックス、コンボボックス、ラベル、ボタンを使って、四則演算を行なうプログラムを作成する。具体的には、テキストボックスを二個設けて数値aとbを入力させ、コンボボックスから加減乗除の一つを選択させ、ボタンをクリックするとラベルに演算結果を表示するものである。

プロジェクトの新規作成とフォームの準備
1)「新しいプロジェクト」ウインドウで、
   プロジェクトの種類-------- CLR
   テンプレート ------------- Windowsフォームアプリケーション
   プロジェクト名 ----------- C801(ここでの名称、任意で良い)
   ソリューションのディレクトリの作成 ------ チェックのまま
 として、「OK」をクリックする。
2)フォームデザイナーウインドウが開き、フォーム(Form1)ができている。
3)統合開発環境のメニューで、「表示」→「ツールボックス」を選択し、「ツールボックス」ウインドウを開く。
4)「TextBox」を選択し、フォーム上の希望する場所で再びクリックする。これを2回行い、テキストボックスを二個作る。
5)「ComboBox」を選択し、同様に一個配置する。できたコンボボックスを右クリックし、「プロパティ」を選択する。プロパティウインドウで「Items」を選択する。右側に四角いアイコンが現れるので、これをクリックすると、「文字列コレクションエディタ」ウインドウが開くので、上から、「+」、「-」、「*」、「/」を入力し、「OK」をクリックする。さらに、外部から書き換えができないように、「表示」欄の「DropDownStyle」を選択し、右側の下向き三角形をクリックして、「DropDownList」を選択する。
6)「Label」を二個配置する。二個のうち左側に配置したラベルを右クリックし、「プロパティ」を選択する。プロパティウインドウの下方にある「Text」を選択し、「label1」を「=」に書き換える。右側のラベルは、「label2」の文字を「バックスペース」キーで消す。
7)「Button」を一個配置する。できたボタンを右クリックし、プロパティウインドウで「Text」の「button1」を「実行」に書き換える。
8)フォームの中央で右クリックし、プロパティウインドウで下方の「Text」を選択し、「四則演算」と書き換える。

 図1は、以上の手続きにより作成したフォームを示す。フォーム上に、左から、テキストボックス、コンボボックス、テキストボックス、ラベル(=)、ラベル(空欄で見えない)が並び、下にボタン(実行)がある。なお、フォームの縦方向の長さを、マウスドラッグにより短縮してある。このままでは、プログラムを記述していないので、ビルドしても動作しない。


図1 作成されたフォーム


プログラムの作成
1)フォーム上のボタンをダブルクリックするとコードエディタウインドウが開き、イベントハンドラbutton1_Click()メソッドのスケルトンができているので、図2のように記述する。Javaの場合には、switch文には、必ずdefault: を記述しなければいけないが、Visual C++ 2005では、その必要がないようである。
2)フォーム上の中央部(コントロールの配置していない場所)をダブルクリックすると、プログラムが最初に一度だけ実行するメソッドであるイベントハンドラForm1_Load()のスケルトンが現れるので、図2のように記述する。これは、コンボボックスで、デフォルトで「+」が選択されるようにするためである。


図2 コードを書き込んだbutton1_ClickとForm1_Loadメソッド


プログラムのビルドと実行
 統合開発環境のメニューから、「ビルド」→「C801のビルド」を選択し、出力ウインドウの「正常終了」を確認した後、「デバッグ」→「デバッグなしで開始」を選択すると、フォームが画面上に表示される。図3は、テキストボックスに適当な数値を入力し、コンボボックスで除算を選択し、「実行」ボタンをクリックした結果を示す。


図3 プログラムの実行結果