Label,Edit,Memo,Button,ComboBox,MediaPlayer,Timer

岡本安晴 2001.1.7;2001.3.6
Object Pascal 入門
付録−7
コンポーネント:
Label,Edit,Memo,Button,ComboBox,MediaPlayer,Timer
A7 - 1
岡本安晴 2001.1.7;2001.3.6
A7
コンポーネント:
Label,Edit,Memo,Button,ComboBox,MediaPlayer,Timer
Delphi のコンポーネントパレットには、Windows でのインターフェースを容易にするため
のコンポーネントが多数用意されている。
ここでは、数値計算、データ分析、あるいはシミュレーションにおいて基本的と思われる
コンポーネントの幾つかについて、サンプルプログラムによって説明する。
サンプルプログラム PSamplea71.dpr は、
Label、
Edit、
Memo、
Button、
ComboBox、
MediaPlayer、
OpenDialog、Timer の各コンポーネントを使用するものである。プログラミング時のフォー
ムは次のようになっている。
コンポーネント Label、Edit、Memo、Button、ComboBox は、コンポーネントパレットの
Standard ページにある。
A7 - 2
岡本安晴 2001.1.7;2001.3.6
MediaPlayer と Timer コンポーネントは、System ページにある。
Timer
MediaPlayer
OpenDialog コンポーネントは、Dialogs ページにある。
プログラム PSamplea71.dpr を実行すると次のようなフォームが表示される。
OpenDialog と Timer コンポーネントは、実行時には表示されない。MediaPlayer は、プロ
A7 - 3
岡本安晴 2001.1.7;2001.3.6
パティ Visible を false に設定して隠している。すなわち、プログラムの実行開始時、フ
ォームがアクティブになるときに呼び出される FormActivate メソッドによって Visible プ
ロパティを false に設定している。
var
st : Longint = 0;
//
プログラムの実行状態を示す変数
procedure TForm1.FormActivate(Sender: TObject);
begin
if st = 0 then
//
実行開始時のとき
//
以後、実行開始時と判定されない
begin
st:=1;
//
実行開始時に MediaPlayer を隠す
MediaPlayer1.Visible:=false;
end;
end;
Visible プロパティの設定は、変数 st の値のチェックにより、プログラムに実行開始時に
1回だけ行っている。
Label、Edit コンポーネント
上の Edit コンポーネントに文字列を設定して、Copy ボタンをクリックすると、下図のよ
うに Label、下の方の Edit、Memo の各コンポーネントに文字列がコピーされる。
A7 - 4
岡本安晴 2001.1.7;2001.3.6
これは、次のプログラムによる。
procedure TForm1.CopyButtonClick(Sender: TObject);
begin
Edit2.Text:=Edit1.Text;
Label1.Caption:=Edit1.Text;
Display(Edit1.Text);
Edit1.SetFocus;
end;
Edit コンポーネントに表示されている文字列は、Text プロパティへの読み書きでアクセス
できる。Label コンポーネントに表示されている文字列は、Caption プロパティによってア
クセスする。Label コンポーネントは表示専用であるが、Edit2 コンポーネントもプロパテ
ィ ReadOnly を true に設定して表示専用としている。表示文字のフォントやその色は、Font
プロパティで設定できる。この Font プロパティは、プログラミング時にオブジェクトイン
スペクタによって設定することもできる。
Memo コンポーネント
Memo コンポーネントへの表示は、手続き Diplay によって行っている。この手続きは、次の
ようになっている。
A7 - 5
岡本安晴 2001.1.7;2001.3.6
procedure Display( s : string );
begin
with Form1.Memo1.Lines do
begin
while count > 20 do Delete(0); // Memo 内の行数を 20 以下とする
//
文字列 s を Memo に追加・表示
Add( s );
end;
end;
まず、count プロパティによって Memo コンポーネント中のリストの行数を数え、20行を
越えているときは Delete メソッドにより先頭の一番古い行を削除する。
文字列sの追加は、
メソッド Add によって行っている。
ComboBox コンポーネント
ComboBox コンポーネントは、コンポーネントの右端のボタンをクリックして表示される
項目リストから項目を選んでクリックすることにより、選択された項目に対応した処理を
行うために用いている。
項目のクリックで呼び出される手続きは、次の ComboBox1Click メソッドである。
A7 - 6
岡本安晴 2001.1.7;2001.3.6
リスト A7.1
ComboBox1Click メソッド
procedure TForm1.ComboBox1Click(Sender: TObject);
begin
case ComboBox1.
ItemIndex of
0
: CopyButtonClick(Sender); //
1
: PlaySound;
//
2
: Close;
//
else
(*
何もせず *);
end;
end;
コピー
音の再生
終了
選ばれた項目は、ItemIndex プロパティによって示される。1番上から順番に0,1、
・・・
の順序値が与えられている。項目リストは、プログラミング時に設定することができる。
オブジェクトインスペクタにおいて ComboBox コンポーネントが表示されている(フォーム
上の ComboBox1 コンポーネントをクリックしてアクティブにする)ときに、Items プロパテ
ィ欄の右端のボタンをクリックする。このとき表示される「文字列リストの設定」ダイア
ログボックスで ComboBox の項目を設定することができる。表示されたダイアログボックス
内のエディタ画面に項目を設定して「OK」ボタンをクリックする。1行が1項目になる。
ダイアログボックスの「エディタ」ボタンをクリックすると、ダイアログボックスのエデ
ィタ画面は、ユニットと同じ Delphi のエディタ画面のページに切り換わる。このときは、
項目の設定後、メニュ「ファイル|閉じる」を選ぶ。
A7 - 7
岡本安晴 2001.1.7;2001.3.6
ComboBox1の表示
このボタンのクリックで「文字リストの設定」
ダイアログボックスが表示される
プログラムの実行時に ComboBox コンポーネントの右端のボタンをクリックすると、項目
リストが表示される。
「コピー」をクリックすると、ItemIndex の値が0でリスト A7.1 の ComboBox1Click メソッ
ドが呼び出される。このときは、
「Copy」ボタンのクリックで実行されるメソッド
CopyButtonClick(Sender);
A7 - 8
岡本安晴 2001.1.7;2001.3.6
が呼び出される。
「終了」をクリックすると、ItemIndex の値が2なので、
Close;
が実行されてプログラムの実行終了となる。
「音の再生」をクリックすると、ItemIndex の値は1となり、手続き
PlaySound;
が呼び出される。この手続きはリスト A7.2 のようになっている。
リスト A7.2
MediaPlayer の使用
procedure PlaySound;
begin
with Form1 do
with MediaPlayer1 do
begin
DeviceType:=dtAutoSelect; //
ファイルの拡張子でデバイスを選択
// *.wav ファイル名の設定
with OpenDialog1 do
begin
Title:='*.wav ファイル?';
FileName:='*.wav';
if not Execute
// ダイアログボックスの提示
then exit; // ファイル名が設定されないとき
end;
// MediaPlayer にファイル名を設定する
Form1.MediaPlayer1.FileName:=OpenDialog1.FileName;
// MediaPlayer がオープンされていないときはオープンする
if Mode <> mpOpen then Open;
Play; //
MediaPlayer による*.wav ファイルの音の再生
end
end;
MediaPlayer コンポーネント
A7 - 9
岡本安晴 2001.1.7;2001.3.6
リスト A7.2 は、MediaPlayer コンポーネントによって*.wav ファイルの再生を行うもので
ある。
DeviceType プロパティの設定
DeviceType:=dtAutoSelect;
は、ファイルの拡張子.wav によって*.wav ファイル再生用のデバイスが選択されるように
するものである。
*.wav ファイルの選択は、OpenDialog コンポーネントによって行っている。下図は、実
行時に OpenDialog1.Execute の実行によって表示されたダイアログボックスである。
設定した*.wav ファイル名を、MediaPlayer コンポーネントの FileName プロパティに設定
する。
Form1.MediaPlayer1.FileName:=OpenDialog1.FileName;
上の FileName のように同じプロパティ名が用いられるときは、限定子 OpenDialog1.などを
付けてどのオブジェクトのプロパティであるのか明記すると分かりやすい。
MediaPlayer コンポーネントがまだ開かれていないときは、オープンする必要がある。
MediaPlayer コンポーネントが開かれているかどうかは Mode プロパティの値で知ることが
できる。
if Mode <> mpOpen then Open;
MediaPlayer が開かれておれば、メソッド
Play;
A7 - 10
岡本安晴 2001.1.7;2001.3.6
の実行で*.wav の音が再生される。
Timer コンポーネント
「Start」ボタンをクリックすると、フォームの色が黄色に変わった後、暫くすると緑と青
に交互に色が変わる。この色の交代は、Timer コンポーネントを用いて行っている。Timer
コンポーネントは、
設定した時間間隔で OnTimer イベントを繰り返し発生するものである。
この機能を用いると、シミュレーションを一定のペースで進めることができる。
OnTimer イベントの発生の時間間隔は、ミリ秒単位で Interval プロパティに設定する。
Interval の型は Cardinal、すなわち0以上の整数である。OnTimer イベントは、Enabled
プロパティが True のときに発生する。
「Start」ボタンのクリックで呼び出されるメソッド StartButtonClick は、次のように
なっている。
procedure TForm1.StartButtonClick(Sender: TObject);
begin
Color:=clYellow;
with Timer1 do
begin
Interval:=1000;
Enabled:=true;
end;
end;
上のメソッドが実行されると、1000 ミリ秒ごとに OnTimer イベントが発生するようにな
る。
OnTimer イベントで呼び出されるメソッドは、オブジェクトインスペクタにおいて、
OnTimer 欄の右のセルをダブルクリックするとエディタのユニットに Timer1Timer メソッ
ドなどとして挿入される。
ここをダブルクリック
サンプルプログラム PSamplea71.dpr の場合、Timer1Timer は次のように宣言されている。
A7 - 11
岡本安晴 2001.1.7;2001.3.6
var stC : Longint = 0;
procedure TForm1.Timer1Timer(Sender: TObject);
begin
if stC = 0
then
begin
stC:=1;
Color:=clGreen;
end
else
begin
stC:=0;
Color:=clBlue;
end;
end;
すなわち、変数 stC の値によってフォームの色の監視を行い、色が交互に変わるようにして
いる。
OnTimer イベントの発生を止めるときは、Enabled プロパティを False に設定する。
「Stop」ボタンのクリックで呼び出される StopButtonClick メソッドは、次のようになっ
ている。
procedure TForm1.StopButtonClick(Sender: TObject);
begin
Timer1.Enabled:=false;
Color:=clBtnFace;
end;
A7 - 12
岡本安晴 2001.1.7;2001.3.6
参考文献
(1) Delphi 5オンラインヘルプ、Inprise Corporation, 1999.
(2) Delphi 5 Object Pascal 言語ガイド、インプライズ株式会社、1999.
(3) 岡本安晴「Delphi プログラミング入門」
、CQ 出版社、1997.
A7 - 13