C++Builder入門:Standardコンポーネント

第二章:コンポーネントの使い方

1.Standardコンポーネント

1.1.TButton

TButtonはボタンをクリックすると、押し下げられたイメージとともにOnClickイベントが発生するコンポーネントです。OnClickイベントに実行したいプログラムを書くことで、ボタンを押したときに入力したプログラムを実行します。
ちなみにOnClickイベントは、ほぼすべてのVCLコンポーネントに搭載されていますが、ボタンをクリックしたときのイメージがないとボタンをクリックした感じが持てない場合もあり、ただクリックするだけのコンポーネントとしては、TButtonがクリックされた表示を見せてくれるようになっているので、これを推薦します。

1.2.TEdit

TEditは文字列を入力、表示するためのコンポーネントです。入力した文字はTEditのTextプロパティに保存され、その保存した文字が表示されます。
TEditの表示
TEditコンポーネントでは1文字入力するごとに発生するイベント、OnChangeイベントがあり、このイベントで、入力された文字をチェックしたりできます。

void __fastcall TForm1::Edit1Change(TObject *Sender)
{
    if(Edit1->Text=="100")
        ShowMessage("100と入力されました");
    if(Edit1->Text=="exit")
        Close();
}

このサンプルはEdit1のOnChangeイベントで100と入力されたらメッセージボックスで「100と入力されました」とメッセージを表示し、かつ、exitと入力するとアプリケーションを終了するプログラムになっています。
イベントは1度の変更につき1度しか発生しません。同じ文字列の状態でイベントが連続して発生することはありません。
TEditはReadOnlyプロパティをTrueにする事で入力できない状態に設定することも出来ます。

1.3.TLabel

TLabelはフォーム上に常に表示させておきたいメッセージなどがある場合に設置します。このコンポーネントにもOnClickイベントなどがあり、クリックしたときにサイトを開くリンクの役割を持たせたりする使い方をされたりします。

void __fastcall TForm1::Label1Click(TObject *Sender)
{
     ShellExecuteA(Form1->Handle,"open","http://blog.dlo-olb.com",NULL,NULL,0);
}
void __fastcall TForm1::Label1MouseEnter(TObject *Sender)
{
     Label1->Font->Color=clRed;
}
void __fastcall TForm1::Label1MouseLeave(TObject *Sender)
{
     Label1->Font->Color=clBlack;
}

TLabelのテスト
このサンプルはTLabelのOnClick、OnMouseEnter、OnMouseLeaveイベントを作成しそこにコードを入力します。
MouseEnterはマウスカーソルがTLabelコンポーネントに重なったときに1度だけ発生するイベントで、MouseLeaveはマウスカーソルがTLabelの上から離れたときに1度だけ発生します。
ここではマウスが重なったときTLabelのフォントの色を赤色に変更し、マウスが離れると黒色になり、ラベルをクリックするとこのブログのトップページを開くサンプルです。
ShellExecuteA関数はアプリケーションを関連づけで実行するWindowsが用意しているAPIの一つで、このAPIについて簡単に説明すると、
最初の引数にForm1のHandleというプロパティを渡し
2番目の引数は”open”という文字列を指定
3番目の引数で開きたい関連づけされた拡張子のファイルを指定
4番目の引数は3番目に実行ファイルを指定した場合のパラメータを設定する文字列を渡し必要なければNULLを指定
5番目の引数は作業フォルダの指定で、作業フォルダにしたいフォルダ名の文字列を入力します。必要なければNULLを指定
6番目の引数はアプリケーションをどのような状態で表示するかを設定する番号なのですが、こちらはShowWindow関数というAPIを参考にすると、その引数が書かれているので参考にしてください。通常は0でかまいません。

1.4.TCheckBox

TCheckBoxはマウスでクリックしたり、Checkedプロパティにbool型の値をセットする事で、チェックマークをオンオフする事が出来ます。アプリケーションはこのCheckedプロパティの値に応じて処理を分ける様な仕組みを作ることになります。

void __fastcall TForm1::Button1Click(TObject *Sender)
{
    if(CheckBox1->Checked)
    {
         ShowMessage("チェックされています");
    }
}

このサンプルはフォームにTButtonとTCheckBoxを一つずつ設置し、TButtonのクリックイベントでCheckBox1のCheckedプロパティがTrueの場合、メッセージを表示します。(if文は比較式に入れた値が1(True)の場合は条件が成立しているという意味になります。)
TCheckBoxテスト

1.5.TRadioButton

TRadioButtonは複数のTRadioButtonを設置することで、どれか一つだけをチェックするためのコンポーネントです。フォーム上に2つ以上設置してそのまま実行してみてください。必ず一つだけにしかチェックが入りません。
TRadioButtonもTCheckBoxと同じで、Checkedプロパティを参照する事でチェックのオンオフを確認します。
そして、TRadioButtonはコンポーネントの同一階層上の物のうちの一つだけにチェックが入るだけで、複数の階層上に同じように設置すると2カ所でそれぞれチェックのオンオフを設定できるようになります。
下の画像はフォーム上とTPanel上にそれぞれTRadioButtonを複数設置したサンプルです。フォーム上とTPanel上でそれぞれチェックが入っています。
TRadioButtonの表示

1.6.TListBox

TListBoxは複数の文字列を格納して表示するコンポーネントです。文字列を格納するのはItemsプロパティで、このItemsプロパティのAdd関数によりStringに格納された文字列を保存します。
保存された文字列は1行単位で選択出来るようになっており、ListBox1->Items->Strings[行番号]などとして1行の文字列を選択できます。画面上で選択した行はListBox1->ItemIndexというint型のプロパティに保存されています。1行も選択されていないときは-1が入ります。
ItemsプロパティはTStringsという文字列の配列クラスで、このクラスには文字列を追加したり、削除したり出来る機能が備わっています。
次のサンプルはフォームにTListBox、TEdit、TButtonを一つずつ設置して次のコードを入力してください。

void __fastcall TForm1::Button1Click(TObject *Sender)
{
	ListBox1->Items->Add(Edit1->Text);
}

ボタンをクリックするたびにEdit1に入力した文字列をListBox1に格納して表示します。
TListBoxテスト

1.7.TComboBox

TComboBoxはTEditとTListBoxが合わさって1行表示になったListBoxの様な物です。ListBoxと同じく、Itemsプロパティに文字列を格納し、選択した文字列の番号はItemIndexプロパティに格納されます。
TComboBoxはStyleプロパティにより、入力可能なBoxか選択専用のBoxかを選べるようになっています。csDropDownを選べば入力可能かつ文字列をドロップダウン形式で選択できます。csDropDownListを選ぶと選択専用の表示形式になります。csOwnerDraw~という物はプログラマーが独自に表示を描き込む為のオプションで、見た目にインパクトを与えたいときはこちらを利用しますが、これを選択するとプログラマーが表示される文字も自分で書き込まなければいけません。描き込むときは、OnDrawItemイベントを利用します。csSimpleはただのTEditと同じような入力可能なBoxになります。
AutoCompleteプロパティをTrueに設定すると、入力可能状態で入力するとき、Itemsに格納された各文字列の先頭から調べ合致した物が自動的に入力される機能を実装できます。
TComboBoxテスト

1.8.TMainMenu

TMainMenuはフォームにメニュー項目を取り付けるコンポーネントです。フォーム上に設置したTMainMenuのアイコンをダブルクリックすることで、メニュー項目を作成したり削除したりする編集ウインドウが開きます。メニュー項目を削除するときは、編集画面で削除したい項目上で右クリックするとポップアップメニューが開くのでそこから削除を選択してください。
各メニュー項目はOnClickイベントを書き込むことで、そこで機能を実装します。
フォーム上にMainManuを設置すると、Form1のメンバーで、オブジェクトインスペクタで赤字で表示されているManuという部分がMainManu1に設定されます。これによりForm1のメニューが設定されます。
TMainMenu作成サンプル
画像はメニュー項目を作成している途中の画像で、何も文字列が書かれていない所を選択して、オブジェクトインスペクタのCaptionを入力して入力を完了するとメニュー項目が作成されます。作成するメニュー項目はCaptionに日本語を利用した場合、Nameに設定される名前がN~という名前になってしまうので、Captionに日本語を入力したときは、Nameに意味のある名前を付けることをおすすめします。

1.9.TPopupMenu

TPopupMenuはコンポーネント上で右クリックしたときに表示するメニュー項目を作成します。メニューの作り方はTMainMenuと同じで、設置したアイコンをクリックすると編集画面が開きます。
TPopupMenuをフォーム上に配置し、メニュー項目を作成して、例えばForm1でオブジェクトインスペクタのPopupMenuと書かれたところで、PopupMenu1を選択して、実行すると、Form上を右クリックしたときに設定したメニューを開くことが出来ます。TFormにあるPopupMenuというプロパティはほぼすべてのコンポーネントに備わっているので、例えばTButtonなどでもポップアップメニューを表示させることが出来ます。
メニュー項目はCaptionに-を入力するとセパレーターを表示させることが出来ます。
TPopupMenuサンプル

1.10.TPanel

TPanelはレイアウト設定用のコンポーネントです。ほとんどのコンポーネントにもレイアウト用のAlignプロパティはありますが、コンポーネント単体でのレイアウトには限界もあり、そういったとき、TPanelを利用することで、コンポーネントをグループ化して、細かいレイアウト調整が出来るようになります。
TPanelにコンポーネントを配置すると、配置されたコンポーネントはForm1の直下では無く、Panelの下に置かれるので、Panelを非表示にするとPanel上のコンポーネントも一緒に非表示に出来るようになります。
次の画像は、TPanelのAlignプロパティをそれぞれ設定した物です。Panel1はalTop,2はalBottom,3はalLeft,4はalRight,5はClientを設定しています。ウインドウのサイズを広げると、上下左右のPanelはそれぞれ縦横に伸びるだけですが、Panel5はウインドウのサイズが変わると大きさが追随してPanelの下にあるFormが絶対に見えないようになります。
TPanelサンプル

カテゴリー: C++Builder, C++Builder入門   パーマリンク

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です


*

次のHTML タグと属性が使えます: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>