如何给状态栏添加图标?(50分)

  • 主题发起人 主题发起人 SunCheng
  • 开始时间 开始时间
S

SunCheng

Unregistered / Unconfirmed
GUEST, unregistred user!
如何给状态栏添加图标,就象IE的状态栏中的两个图标?
前提:不用Canvas
 
DFSSTATUSBAR.ZIP
TDFSStatusBar 是加强版 TStatusBar 构件,能够在其内放置其他构件,提供显示键盘上特殊键 ( CAPS Lock、NUM Lock、SCROLL Lock) 的状态,并提供进度显示进度及目前时间日期等多项功能 ( 1.0 版,附源码 ),作者 : Brad Stowers。

下载地址 http://delphi.nease.net/mirror/delphi/DELPHI/D32FREE/DFSSTATUSBAR.ZIP


FRSTATUS.ZIP

TFriendlyStatusBar 是一个改良版的 TStatusBar,能够在其内放置其他构件 ( 1.0 版,附源码 ) ,作者 :Ivan Azic。
下载地址
http://delphi.nease.net/mirror/delphi/DELPHI/D32FREE/FRSTATUS.ZIP

用这两个东东, 把你的IMAGE 图象控件放到STATUSBAR上
 
比较简单的方法.
procedure TForm1.Button1Click(Sender: TObject);
var Map:TImage;
begin
Map:=TImage.Create(Self)
Map.Picture.LoadFromFile('c:/Chem16.bmp');
Map.parent:=StatusBar1;

end;
 
想自己做也很简单
继承一个TStatusBar,在create中加入:
ControlStyle:=ControlStyle+ [csAcceptsControls];
然后就可以向里面添加任何VCL,比如TProgressBar,TImage等
 
在StatusBar的OnDrawPanel事件中调用下面的函数(需要放置Bitmap的Panel要
设为OwnerDraw)
procedure TfrmMain.DisplayAppMessage;
var
ARect: TRect;
begin
with stbSepc do
begin
ARect.Left := ClientRect.Left + Panels[0].Width + 10;
ARect.Top := 2;
ARect.Bottom := 20;
ARect.Right := ARect.Left + Panels[1].Width - 10;
Canvas.FillRect(ARect);

imglstSepc.Draw(Canvas, ARect.Left, ARect.Top, 6);
end;
end;
唐晓锋的方法也比较好,那样可以在StatusBar上放置各种东西,如位图、ProgressBar等。
 
不好意思,没看到SunCheng兄前面的前提(不能用Canvas),那么就采用唐晓锋的
方法吧,记得在Map.parent := StatusBar1之前先确定Map的位置(Map.Left:=..,
Map.Top:=..等)
你说到像IE状态条的样子(两个简单的位图),我觉得还是用Canvas直接操作比较好.
 
看来大家没有明白我的意思。晓峰的的做法当然是对的。不过用我的做法
生成的新控件可以在<b>设计态</b>放置其他VCL,这样不是既减少编程量,
又方便设计吗?
 
delphi体现的就是可视化设计,tqz的方法比较好一点 :)
 
try 1stClassPro
 
THANK YOU TQZ
I HAVE SUCCEEDED!
 
这么多人,这么分啊?
看来,见者有份了!

to 唐晓锋:
都快毕业了,在一个学校里,见个面如何?
 
多人接受答案了。
 
后退
顶部