用StatusBar1来显示进度!可以吗?(50分)

  • 主题发起人 梅游刃
  • 开始时间

梅游刃

Unregistered / Unconfirmed
GUEST, unregistred user!
我想把进度条(ProgressBar1)加到StatusBar1里面去,怎么办?

也可以用StatusBar1来显示进度!
 
有一套构件叫1stclass的,里面就有可以嵌入其他构件的StatusBar1,去找找看了。
 
简单的方法:
把ProgressBar放在一个Panel上,在FormCreate中写Panel.Parent := StatusBar1,
可能还要调整一下位置。
 
扩展TStatusBar,然后在上面放上进度条就可以了,代码如下
unit AdrockStatusBar;

interface

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

type
TAdrockStatusBar = class(TStatusBar)
private
{ Private declarations }
protected
{ Protected declarations }
public
{ Public declarations }
Constructor Create(Aowner : TComponent); override;
published
{ Published declarations }
end;

procedure Register;

implementation

Constructor TAdrockStatusBar.Create(Aowner : TComponent);
begin
inherited Create(Aowner);
ControlStyle := ControlStyle + [csAcceptsControls];
end;


procedure Register;
begin
RegisterComponents('syz_component', [TAdrockStatusBar]);
end;

end.
 
TMyStatusBar = class(TStatusBar)
protected
procedure CreateParams(var Params: TCreateParams);override;
end;

procedure TMyStatusBar.CreateParams(var Params: TCreateParams);
//让TStatusBar可以成为其它控件的父
begin
inherited CreateParams(Params);
params.Style :=params.Style or WS_CLIPSIBLINGS;
end;

//OnFormCreate事件
StaBar:=TMystatusbar.Create(self);
with StaBar do
begin
Panels.Add;
Panels.Add;
Parent := self;
OnResize := StaBarResize;
AutoHint := true;
PopupMenu := pmWindow;
end;
PrgBar:=tFlatGauge.Create(self);
with PrgBar do
begin
Visible := false;
Parent := StaBar;
Top := 3;
Height := stabar.Height-5;
end;
//完整程序请看
http://www.delphibbs.com/delphibbs/dispq.asp?lid=1425701
 
好!
不用第三方控件,自己做怎么做?
 
很简单:
先在窗体上放一个Panel,
然后双击Statusbar1,添加Statusbar1.Panels[0],将其Style改为psOwnerDraw
然后在FormCreate中写
Panel1.Parent := StatusBar1;
Panel1.Left := StatusBar1.left;
Panel1.Top := 0;
你在Panel1上什么都可以放,包括Progressbar,button等等。

 
谢谢!
分太少,大家的都可以用我试过了。
就分了!
 
顶部