Migaro. 技術Tips

                       

ミガロ. 製品の技術情報
IBMiの活用に役立つ情報を掲載!


【Delphi】ステータスバーのクリック制御方法

今回はDelphi/400で作成するアプリケーションのステータスバーについてご紹介いたします。

Delphi/400ではステータスバー専用にTStatusBarコンポーネントが用意されています。
このTStatusBarは、Panelsプロパティにアイテムとなるパネルを追加して
ステータスを表示することができる便利なコンポーネントです。

ただしこのPanelsは個別でイベントを持っていないため、
例えば表示されたステータスパネル毎にクリックイベントを分けることができません。

 
パネル毎にクリック処理を分ける場合には、マウスカーソルからステータスバー上の位置を特定します。
あとはパネルの幅からクリックされたパネルを算出することができますので、
次のようなコーディングが可能になります。

// ステータスバークリック時のパネル判定処理
procedure TForm1.StatusBar1Click(Sender: TObject);
var
  mpt: TPoint;
  x,j: integer;
  panel: integer;
begin
 // マウスカーソルからステータスバー上の位置を特定
  mpt := Mouse.CursorPos;
  mpt := StatusBar1.ScreenToClient(mpt);
  panel := -1;
  x := 0;

 // パネル幅からクリックされた位置のパネルを特定
  for j := 0 to StatusBar1.Panels.Count - 1 do
  begin
    x := x + StatusBar1.Panels[j].Width;
    if mpt.x < x then
    begin
      panel := j;
      Break;
    end;
  end;

 // パネル毎に処理
  if panel = 0 then
  begin
    ShowMessage('パネル1クリック'); //処理
  end
  else if panel = 1 then
  begin
    ShowMessage('パネル2クリック'); //処理
  end;
end;

 

ステータスバーへの機能実装時に、是非ご活用下さい。

 

(ミガロ.情報マガジン「MIGARO News!!」Vol.172 2015年3月号より)