ステータスバーにアイコンを置くには?

解決


みみ  2005-09-06 22:20:33  No: 17440

ステータスバーにアイコンを置きたいと思います。
そのアイコンによって何か動作を起こそうとは考えておらず、
単なる表示のみのものを考えています。

ステータスバーに、アイコンを置いているソフトをよく見かけるのですが、
どうすれば置くことができるのでしょうか。
ご教授ください。


おっ  2005-09-06 23:12:03  No: 17441

「アイコンを置く」という表現からして
ステータスバーではなく、タスクトレイ?
(時計の隣に並ぶアイコン軍団のこと?)

そういうのは、コンポーネント化したものがあるので、拾ってきたらいいかと。
または、ここ参照して、自分でがんばる
http://madia.world.coocan.jp/delphi/Win32API/Tasktray.htm


deldel  2005-09-06 23:16:42  No: 17442

もしくは?

procedure TForm1.StatusBar1DrawPanel(StatusBar: TStatusBar;
  Panel: TStatusPanel; const Rect: TRect);
begin
  StatusBar.Canvas.Draw(0, 0, Image1.Picture.Bitmap);
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
  StatusBar1.Panels[0].Style := psOwnerDraw;
end;


deldel  2005-09-06 23:22:48  No: 17443

こんなのもあります。

procedure TForm1.FormShow(Sender: TObject);
var
  R: TRect;
begin
  Statusbar1.Perform(WM_USER + 10, 0, Integer(@R));
  Image1.Parent := Statusbar1;
  Image1.Top    := r.Top + 1;
  Image1.Left   := r.Left + 1;
end;


みみ  2005-09-07 00:12:31  No: 17444

ありがとうございます。

「おっ」さん
タスクバーではなくて、ステータスバーです。勘違いさせてごめんなさい。

「deldel」さん
最初の方法で実装できました。ありがとうございました。


みみ  2005-09-07 00:16:28  No: 17445

すいません、解決してしまいましたが、
deldelさんに質問です。

procedure TForm1.FormCreate(Sender: TObject);
begin
  StatusBar1.Panels[0].Style := psOwnerDraw;
end;

は、どういう動作をするのでしょうか。
やらなくても表示されるので疑問に思いました。


deldel  2005-09-07 00:26:46  No: 17446

あれ?そうですか?
こちらではこれをしないと表示しませんでした・・・
これは、「描画をシステムに任せず、自分で行う」といったものです。


みみ  2005-09-07 00:32:11  No: 17447

すいません、フォームデザインのほうでそのパラメータをいじっていました。
お手数をおかけしました。


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加