トップへ(mam-mam.net/)

TProgressBarをTStatusBarの上に配置する ~Delphiソースコード集

検索:

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]に文字が表示されます。