如何在StutusBar上显示进度条?(或相应的控件)(50分)

  • 主题发起人 主题发起人 PaulBlue
  • 开始时间 开始时间
procedure TForm1.statusbar1DrawPanel(StatusBar: TStatusBar;
Panel: TStatusPanel; const Rect: TRect);
begin
Gauge1.Parent:=StatusBar1;
Gauge1.Left:=Rect.Left;
Gauge1.Top:=Rect.Top;
Gauge1.Width:=Panel.Width;
Gauge1.Height:=Rect.Bottom-Rect.Top;
end;
Gauge1 为进度条,在statusbar1的DrawPanel事件中写
 
控件1stClass比较好用
 
www.delphifreestuff.com
dfsstatusbar,很好,进度条有两种选择:IE样式和NetScape样式
 
unit myStatusBar;

interface

uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
ComCtrls;

type
TmyStatusBar = class(TStatusBar)
private
{ Private declarations }
protected
{ Protected declarations }
public
constructor create(aowner:Tcomponent);override;
published
{ Published declarations }
end;

procedure Register;

implementation

procedure Register;
begin
RegisterComponents('Standard', [TmyStatusBar]);
end;

{ TmyStatusBar }

constructor TmyStatusBar.create(aowner: Tcomponent);
begin
inherited;
controlstyle:=ControlStyle+[csAcceptsControls,csOpaque];
end;

end.
 
把ProgressBar的Parent设为StatusBar1,再确定具体位置、进度等即可
 
自己画!
 
dfsstatusbar很好,在www.csdn.net上有下载,用起来方便。
如果你找不到,我可以发给你。
还是现在发给你吧。发到你的paulblue@163.net信箱。
 
to arm:
你的这个组件也是个办法,但是我的StatusBar肯定不会只有一个StatusPanel,
就算你把进度条粘进来也没法限定进度条只出现在我指定的StatusPanel上,
你说呢?
顺便问一句重载组件的create和destroy方法时,将inherited放在自己代码之前
和之后有什么不一样,哪种形式好一些?


to doud:
在你的提示下已实现,可是你忘了说明应将目标StatusPanel的style改为
psOwnerDraw,害我试了半天都不能准确定位,看来我该给自己加几分:-)

to CathyEagle:

有源码吗?我的原则是非有源码不用.

to zeroworld :
你真是个好人!
 
to zeroworld:
怎么这个组件里还有个DLL,好麻烦!
 
tfriendlystatusbar
 
多人接受答案了。
 
后退
顶部