GeoCities home page

プログラミング A home page

1998年4月13日分

起動前の作業

プログラミングの作業をしやすくするため、最初に C++ Builder のショートカットを作ります。以下の説明を読んで自分で作ってもよいし、実習指導員に作ってもらっても構いません。

まず、スタートボタンを右クリックしてエクスプローラを選びます。(スタート→プログラム→エクスプローラでも構いません。)「C:\Program Files\Borland\Cbuilder\Bin」の中の「Bcb.exe」というファイルを右クリックし、「コピー」を選びます。次に「C:\WINDOWS\Profiles\[自分の学生番号]\スタートメニュー\プログラム」の中に入り、何もない部分で右クリックし、「ショートカットの貼付け」を選びます。今度はこうしてできたショートカットを右クリックし、「プロパティ」を選び、作業フォルダを「Z:\[自分の学生番号]」にします。これで出来上がりです。ショートカットの名前「Bcb.exeへのショートカット」が気に食わなければ自由に変えても構いません。

初めてのプログラムを作ってみよう

まずは C++ Builder を起動しましょう。

ウィンドウがいくつも開くと思いますが、焦ることはありません。上のメニュー (ファイル・編集・表示…などが並んでいる部分) から「ファイル→すべて閉じる」を選んでください。これが C++ Builder の基本的な画面です。

では、新しくプログラミングしましょう。「ファイル→0アプリケーションの新規作成」を選んでください。どうですか、C++ Builder を起動したばかりの画面になりましたか? 実は、C++ Builder を起動したばかりの画面は、新しいプログラム(アプリケーション)を作り始める画面なのです。

次に、このプログラムを保存しましょう。「ファイル→すべて保存」を選んでください。「Unit1 に名前をつけて保存」という画面が出てきて、「保存する場所」が自分の学生番号になっていると思います。ここにプログラムを保存してもいいのですが、プログラムが増えると混乱するため、1つのプログラムには1つのフォルダを新しく作ることにします。何もない白地の部分を右クリックし、「新規作成→フォルダ」を選んでください。「新しいフォルダ」というフォルダができます。このフォルダに名前をつけましょう。どんな名前でもいいですが、最初のプログラムですから「First」という名前にしましょう。次にこの「First」をダブルクリックすると、「保存する場所」が「First」になったと思います。「ファイル名」の「Unit1.cpp」を「Firstuni」に書き換えて保存ボタンを押します。今度は「Project1 に名前をつけて保存」という画面が出てくるので、「ファイル名」の「Project1.mak」を「Firstpro」に書き換えて保存ボタンを押します。これで終わりです。

ちょっと長い作業でしたが、うまくできましたか? まとめると、作り始めたプログラムを保存するときは次の3つの操作を行います。

では、このプログラムを実行します。実行ボタンを押しましょう。何もないですが、これでも一応プログラムです。ウィンドウの縁をつかんで拡大や縮小もできます。少しいじってみたら、終了ボタンを押して終了しましょう。

気づいた方もいるかもしれませんが、プログラムの外見を設計している間はウィンドウは方眼紙のように点が並んでいます。しかし、実行中はこれらの点は消えてしまいます。現在プログラムを設計中なのか実行中なのかは、ウィンドウに点があるかどうかで判断できます。(左が設計中の画面、右が実行中の画面です。)

設計中の画面実行中の画面

今度は、一度プログラムを閉じ、再び開いてみましょう。「ファイル→すべて保存」を選ぶと、現在作っているプログラムが保存されます。(既に保存している場合は、「すべて保存」の文字が薄くなっています。この場合、改めて保存する必要はありません。)「ファイル→すべて閉じる」を選ぶと、制作中のプログラムは閉じられ、基本的な画面になります。「ファイル→プロジェクトを開く」で先ほどのプログラムを再び開くことができます。

ボタンを置こう

では、先ほどのプログラムに手を加え、ボタンを置いてみましょう。

まずは、下の図のウィンドウを手前に出してください。これはフォームと呼ばれ、プログラムの外見をデザインするウィンドウです。

フォーム

次に、画面の上部にある「OK」を押してください。すると、「OK」ボタンが引っ込みます。この状態でフォーム上のどこかをクリック(普通はクリックというと左クリックを指します)すると、そこにボタンが現れます。ボタンの位置が気に食わなければ、ドラッグして移動させてください。(マウスの左ボタンを押したまま動かすことをドラッグといいます。)また、ボタンの縁をドラッグすることによってボタンの大きさを変えることができます。

実行してみましょう。実行ボタンを押してください。ボタンがあるプログラムが動きましたか? (ボタンを押しても反応しませんが、これは、ボタンを押したときの動作を指定していないからです。気にしなくても構いません。)終わったら、を押して終了しましょう。

プロパティを変えてみよう

一応ボタンがあるプログラムができましたが、ボタンの表示が「Button1」では困ります。ボタンの表示を変えてみましょう。

まずは、ボタンをクリックによって選択してください。

画面の左側にオブジェクトインスペクタというウィンドウがありますね。ボタンの表示は、このオブジェクトインスペクタを使って変更します。

オブジェクトインスペクタ

オブジェクトインスペクタは、ボタンやその他のコンポーネント(部品)の属性を変更するウィンドウです。

オブジェクトインスペクタの上部に「Button1: TButton」と表示されてますか?表示されていなければ、ボタンそのものをクリックして表示させてください。

オブジェクトインスペクタには様々な項目が並んでいます。その中に Caption という項目があり、その右側に「Button1」と書いてあるはずです。この「Button1」を「押せ」に書き換えましょう。

ボタンの表示が「押せ」に変わりましたか?今度は Width という項目で80と入力してみましょう。ボタンの横幅が変わるはずです。

このように、ボタン(やその他のコンポーネント=部品)の様々な属性は、オブジェクトインスペクタによって変更することができます。

プログラムを書こう

しかし、オブジェクトインスペクタも、(原則として)プログラム実行中にはこれらの属性に手を加えることはできません。プログラム実行中にコンポーネント(部品)の属性を変えるには、プログラム(コード)を書く必要があります。

では、「押せ」(Button1)を押したらボタンの表示が「押すな」に変わるプログラムを書いてみましょう。Button1 が選択されている状態でオブジェクトインスペクタの「イベント」タグイベントを選び、OnClick の右の欄をダブルクリックしてみましょう。コードウィンドウというものが開き、次のような状態になります。

コードウィンドウ

この中括弧{}の間にプログラムを、つまり Button1 が押されたときの動作を書きます。次の通りに入力してください。(下線の部分が入力すべき部分です。)

void __fastcall TForm1::Button1Click(TObject *Sender)

{

Button1->Caption = "押すな";

}

このプログラムを解説します。「Button1->Caption」は Button1 というコンポーネント(部品)の Caption という属性(プロパティ)を表しています。「=」は、数学では右辺と左辺の値が等しいことを表しますが、C++ では右辺の値を左辺に代入することを示しています。つまりこの文は、Button1 の Caption を「押すな」に設定することを意味しています。行末の「;」は、1つの命令がここで終わることを示しています。

では実行してみましょう。どうですか、無事に動きましたか?無事動くことを確認したら、を押してプログラムを終了させてください。

入力欄を作ろう

今度は Edit というコンポーネント(部品)を使います。Edit は1行の入力を受け付ける入力欄です。

「ファイル→すべて閉じる」で現在作業中のプログラムを閉じ、「ファイル→アプリケーションの新規作成」を選び、次のようにフォームを作ってください。なお、「Edit1」「Edit2」と書いてある入力欄は、「ab_」を押してからフォームの上をクリックします。

ボタンと入力欄を配置したフォーム

フォームを作ったら、すぐに保存しましょう。保存方法は「ファイル→すべて保存」でしたね。新しいフォルダを作り、「MOJICOPY」などの名前をつけ、その中で「COPYUNI」と「COPYPRO」などの名前をつけて保存しましょう。

これから作るプログラムは、左のボタンを押すと上の入力欄の内容が下の入力欄にコピーされる、というプログラムです。

まずは外見を整えましょう。フォーム上のコンポーネント(部品)は、ドラッグ(マウスのボタンを押しながらマウスを動かすこと)によって位置を変えたり大きさを変えたりすることができます。また、フォームそのものも縁をドラッグして大きさを変えることができます。位置がそろったら、今度は表示です。ボタンの表示を「Button1」ではなく「コピー」にしましょう。やり方はわかりますね。2つの入力欄も、最初から「Edit1」「Edit2」などと書かれているのは格好悪いですから、これも削りましょう。ボタンの表示は Caption でしたが、入力欄の内容は Text です。

この段階で取り敢えず実行してみましょう。ボタンを押しても何も反応しませんが、外見だけは完成しましたね。

次に、プログラムを書きます。Button1 (つまり先程作った「コピー」ボタン)を選んだ状態でオブジェクトインスペクタのイベントタグを選び、OnClick の横の欄をダブルクリックしましょう。そして、次のように入力してください。(実際には下線部のみを入力します。)

void __fastcall TForm1::Button1Click(TObject *Sender)

{

Edit2->Text = Edit1->Text;

}

入力したら、実行してみましょう。上の欄の内容が下の欄にコピーされましたか?

ボタンの表示内容は Caption、入力欄の表示内容は Text というように、別の名前がついていますが、どちらも同じ物であると考えて差し支えありません。

コンポーネントに名前をつけよう

このプログラムには Edit1、Edit2 の2つの入力欄が登場しました。2つだけですから、どちらからどちらにコピーするのか、間違えることもないですが、実際のプログラミングではもっと多くのコンポーネント(部品)を用いることがあります。そうした時に、例えば入力欄が10個あるプログラムで Edit9 が何の欄だったかを覚えておくことは、記憶の負担となり、間違えやすくなります。プログラミングを楽にするために、コンポーネント(部品)には番号ではない名前をつけましょう。

まずは Edit1 の名前を変更します。Edit1 を選択し、オブジェクトインスペクタの中の Name の横の欄を「EditFrom」に変更しましょう。同様に、Edit2 を選択し、Name の横の欄を「EditTo」にしましょう。次に、コードウィンドウのプログラムを次のように変更します。(実際に変更する部分は下線部のみです。)

void __fastcall TForm1::Button1Click(TObject *Sender)

{

EditTo->Text = EditFrom->Text;

}

これで、どの欄からどの欄にコピーするのか、前よりもはっきりしますね。