TProgressBarをTStatusBarの上に配置する ~Delphiソースコード集
TProgressbarをTStatusBarのコンポーネントの上に配置するには
ProgressBar1.parent:=Statusbar1;
で配置できます。
以下のようにTButton×2個(Button1、Button2)とTProgressBar×1個(ProgressBar1)とTSBar×1個(ProgressBar1)をフォームにドラッグ&ドロップします。
プロジェクトとユニットの保存(「すべて保存」ボタンをクリック)しておきます。(自動的に必要なユニットがUsesに記述されます)
ソースコードの記述
以下イベントごとにソースコードを記述します。
unit Unit1;
interface
uses
Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.ExtCtrls, Vcl.Tabs, Vcl.ComCtrls,
Vcl.StdCtrls;
type
TForm1 = class(TForm)
StatusBar1: TStatusBar;
ProgressBar1: TProgressBar;
Button1: TButton;
Button2: TButton;
procedure FormCreate(Sender: TObject);
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
private
{ Private 宣言 }
public
{ Public 宣言 }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject);
begin
ProgressBar1.Position:=100;
StatusBar1.Panels[1].Text:='100% Button1をクリック';
end;
procedure TForm1.Button2Click(Sender: TObject);
begin
ProgressBar1.Position:=0;
StatusBar1.Panels[1].Text:=' 0% Button2をクリック';
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
//ステータスバーを複数パネルに設定する
StatusBar1.SimplePanel:=False;
//パネルを2つ追加する
StatusBar1.Panels.Add;
StatusBar1.Panels.Add;
//プログレスバーの親をステータスバーにする
ProgressBar1.Parent:=StatusBar1;
//プログレスバーの位置を設定
ProgressBar1.Left:=0;
ProgressBar1.Top:=0;
//プログレスバーの幅と高さを設定
ProgressBar1.Height:=ProgressBar1.Height;
ProgressBar1.Width:=StatusBar1.Panels[0].Width;
//以下は好みで設定
ProgressBar1.SmoothReverse:=True;
ProgressBar1.Min:=0;
ProgressBar1.Max:=100;
end;
end.
実行する
実行すると、ProgressBar1がStatusBar1.panels[0]の位置に表示されます。
Button1をクリックするとプログレスバーが100%に設定され、StatusBar1.panels[1]に文字が表示されます。
Button2をクリックするとプログレスバーが0%に設定され、StatusBar1.panels[1]に文字が表示されます。