−トップへ−

ラベルコンポーネント

 ラベルコンポーネントはフォームに貼り付け,他のコンポーネントの説明や案内などを表示させるものです。そのため,プログラム実行中にイベントを発生させることはありません。
 まず,ラベルコンポーネントのプロパティを確認します。ラベルに表示されている文字列を変えるのは[Caption]の欄です。ここを変えると表示されている文字列が変わります。
他には位置を変えるための[Left]や[Top]があります。また大きさを変えるための[Height]や[Width]などもありますが,これは文字の大きさを変えることで[Height]が変わり,文字列の長さによって[Width]が変わってしまいます。
 プロパティの中には[Color]もありますが,初期設定ではラベルコンポーネントの背景は透明になっているので,[Color]を変えても変化はありません。しかしプロパティの中の[Transparent]のチェックをはずすと,背景が透明でなくなり,色を変えることができます。
 左の図は,[Transparent]のチェックを外し,色を黄色にしたものです。2番目のものは,[Autosize]のチェックを外して大きさを変えたものですが,文字列は常に左上から表示されるようです。3番目は色を不透明にすることで他のコンポーネントを隠せるかどうか試したものです。ラベルコンポーネントで他のコンポーネントを隠すことはできず,常に後ろに表示されるようです。4番目は背景を黒にして,フォントの色を白にしたものです。



 次にこのラベルコンポーネントを,ボタンクリックで変化させてみたいと思います。
 まずフォームにエディットコンポーネントを2個,ラベルコンポーネントを1個,ボタンコンポーネントを4個貼り付けます。配置は適当で構いませんが[Button3]と[Button4]は縦に並べた方がいいと思います。

 ここでやることを述べます。
 [Button1]で[Label]に[Edit1]と[Edit2]の内容を2段にわけて表示します。このとき背景は黄色にします。
 [Button2]で背景を透明にします。
 [Button3]で文字を大きくします。
 [Button4]で文字を小さくします。
 [Label1]をクリックすることで,表示が消えます。
 以上のソースコードを書いてみます。まずは,[Button1]から[Button4]の[OnClick]イベントを呼び出してください。次に[Button1]に以下のように記述します。

procedure TForm1.Button1Click(Sender: TObject);
begin
  label1.Visible:=true;//@
  label1.Transparent:=false;//A
  label1.Color:=clyellow;//B
  label1.Caption:=edit1.text+#13#10+edit2.text;//C
  label1.Left:=(form1.Width-label1.Width) div 2;//D
  label1.top:=(form1.Height-label1.Height) div 2;//E
end;

 上のソースコードの説明をします。
 @…ラベルコンポーネントが消えているかもしれないので,念のために現れるようにします。
 A…透明を無効にします。
 B…背景の色を黄色にします。
 C…ラベルに[Edit1]と[Edit2]の文字列を書き込みます。途中に入れた「#13#10」は改行を行う記号です。これと同じ働きをするもので「chr(13)」というものもありますが,2つの違いはありません。
 DE…ラベルコンポーネントの「Width」や「height」は文字の大きさや文字列の長さによって変わりますが,それを使ってラベルコンポーネントがフォームの中央に表示されるようにしています。

 [Button2]は[Button1]を少しだけ変えます。変えるのはAの中の「false」を「true」にして,Bを削除するだけです。

procedure TForm1.Button2Click(Sender: TObject);
begin
  label1.Visible:=true;
  label1.Transparent:=true;//透明を有効にする
  label1.Caption:=edit1.text+#13#10+edit2.text;
  label1.Left:=(form1.Width-label1.Width) div 2;
  label1.top:=(form1.Height-label1.Height) div 2;
end;

 [Button3]と[Button4]は[Button1]のソースコードのCからEをそのまま利用し,その前に@行だけ足します。

procedure TForm1.Button3Click(Sender: TObject);
begin
  label1.font.size:=label1.font.size+1;//フォントの大きさを1大きくする
  label1.Caption:=edit1.text+#13#10+edit2.text;
  label1.Left:=(form1.Width-label1.Width) div 2;
  label1.top:=(form1.Height-label1.Height) div 2;
end;

procedure TForm1.Button4Click(Sender: TObject);
begin
  label1.font.size:=label1.font.size-1;//フォントの大きさを1小さくする
  label1.Caption:=edit1.text+#13#10+edit2.text;
  label1.Left:=(form1.Width-label1.Width) div 2;
  label1.top:=(form1.Height-label1.Height) div 2;
end;

 ここまで入力して実行してみたら,予想外のことが起きました。それは[Button3]と[Button4]をクリックしたとき,表示がいきなり消えてしまいました。なぜ消えたのか…と思い,調べてみると,[Lbel1]のプロパティの中のフォントのサイズが0になっていました。(右図の赤い矢印の部分)この数字を「10」にして実行したら予想した通りの動きをしました。

 ラベルをクリックしたら表示が消えるというイベントは省略させていただきますが,興味のある人は自分で作ってみてください。
 参考のためにファイルを掲載しておきます。
→ダウンロード

−トップへ−