AFsoft WebSite(エーエフソフト・ウェブサイト)
 

オペレーティング・システムについて

プログラミングについて
ホームページについて
キャドについて
電子カタログについて
書籍・雑誌
イベント
リンク集
Delphi2010 ステータスバー(StatusBar) 2010/10/20
 
前回は[Win32]内の「HeaderControl」(ヘッダーコントロール)について見ましたので、今回は同じく[Win32]内の「StatusBar」(ステータスバー)について見てみます。ステータスバーは Delphi6 にもあります。

 
それではステータスバーを配置してみます。1つ目ですので Nameプロパティは「StatusBar1」となります。通常、位置はフォーム画面の一番下になります。

上記はフォーム画面のBorderStyleプロパティが「bsSingle」になっていますがこれを「bsSizeable」とするとステータスバーの右下には、リサイズできますよ、というような意味合いのマークが付きます(※但しステータスバーがフォームに直接配置されていて、ステータスバーのAlignプロパティが「alBottom」「alRight」「alClient」のいずれかの場合のみ。また、SizeGripプロパティが「True」である場合のみ)。

 
ステータスバーは、各種メッセージや、各種状態を表示する際に利用するコンポーネントです。ステータスバーには主に2つの使い方があって、1つは、SimplePanelプロパティを「True」(デフォルトは「False」)にして、SimpleTextプロパティに表示したいメッセージを指定する、という簡単モードです。

 
ステータスバーのフォントのデフォルト状態は、フォームのフォント情報を継承せず独自のシステムフォント情報を取得してきます(UseSystemFontプロパティが「True」になっています)。このためフォーム画面と文字の感じが違う?と思われるかもしれません。尤も、ParentFontプロパティを「True」にすると別ですが・・・。

 
 
ステータスバーのもう1つの使い方は、パネルを設定する方法を用いて、複数の区分に分けてそれぞれに各種メッセージ・状態を表示させる手法です。SimplePanelプロパティを「False」(デフォルト)の状態にしておき、配置したステータスバーをダブルクリックするか、右クリックメニュー「パネルの設定」をするか、<オブジェクトインスペクタ>のPanelsプロパティの右端の[…]をクリックします。すると、パネル(Panels)編集画面が表示されます。



 
左上のアイコン「新規追加」をしてみます。
<オブジェクトインスペクタ>で Textプロパティを「状態」と入力します。

同様にもう1つ新規追加をして、 Textプロパティを「メッセージの表示」と入力し、Widthプロパティを「0」とし(「0」は残り全部という意味合いです)、Alignmentプロパティを「taCenter」とします。あと、Bevelプロパティでは、各パネルを凹んだような状態、フラットな状態、凸な状態、に指定出来るようになっていますが、悲しいかな Delphi2010だからなのか、Windows7(Aero)のためなのか、指定をしてもその違いが全く分からない状態になっています。

パネル(Panels)編集画面を閉じます。フォーム画面は下記のようになります。

この状態で、保存・コンパイル(再構築)・実行を行うと以下のようになります。

 
プログラム上でこのステータスバーの内容を変更する場合は
StatusBar1.Panels[0].Text := 'ABC';
StatusBar1.Panels[1].Text := 'メッセージを変更しました';
のようにすれば良いです。
時間の掛かる何らかの処理を行っている最中にステータスバーの表示内容を変えるような場合には、Windowsに処理を返す(「Application.ProcessMessages」を実行する)というよりも、ステータスバー内容を更新するという意味合いで、上記を行った直後に
StatusBar1.Update ;
又は
StatusBar1.Refresh ;
を行う方が良い場合があります。Windowsに処理を返すと、処理中にボタンを押す等の画面操作が出来るようになったり、Windowsによる画面の自動再描画が行われたりしますが、それをさせたくない場合に利用します。
但し、連続で「Application.ProcessMessages」を実行したり、Update/Refreshメソッドを使ったりすると、ステータスバーがちらついてしまうので、例えば、10000回繰り返しであれば、100回毎に行う等の処置が必要になる場合もあります。
 
 
なお、ステータスバーはフォームの一番下につけるというのが普通ですが、例えば、パネルを配置して、そのパネルの中にステータスバーを付けるという事も可能です。
 
 
それでは<オブジェクトインスペクタ>をみていきます。
 
Alignプロパティはこれまで同様、いつもの定番・お約束です。画面の4辺/全てにくっつける、或いは、何もしない(alNone)を指定します。デフォルトは「alBottom」になります。
 
AutoHintプロパティは、Trueにすると(デフォルトは「False」)、マウスをステータスバーの上に移動した時、Hintプロパティの内容(ヒントメッセージ)が最初のパネルに表示されるようになります。また、SimplePanelプロパティがTrueの場合にも反映されるようです(「StatusBar1.Panels[0].Text := StatusBar1.Hint ;」や「StatusBar1.SimpleText := StatusBar1.Hint ;」のような事が自動的に行われます)。
 
 
そのほか、これまでのコンポーネントで既に説明したものや、特に記述が必要であろうものは無さそうですので、このあたりにしておきます。
 
 
ステータスバーは、現在の状態を示したり、現在の動作状況を文字で説明していたり、ヒントメッセージのように扱ったり、プログレスバーのように時間の掛かる処理の途中経過を文字で示したり(カウンタ表示等)、よく利用されるコンポーネントの1つです。
 
バッチファイル
BASIC
C言語のお勉強
拡張子な話
DOSプログラム
Delphi
>Delphi入門編
>Delphi2010
▲2010/10/19
 2010/10/20
▼2010/10/21
 
シェアウェア
Script!World
データベース
 
お問い合わせ 
本サイトはリンクフリーです
リンクバナー
(C)Copyright 1999-2015. By AFsoft All Rights Reserved.