上面的步骤在实际编写代码时是这样实现的
//首先在FormCreate事件中编写代码
procedure TFormFormCreate(Sender: TObject);
var
ProgressBarStyle: integer;
begin
//将状态栏的第二块面板设为的自绘(即psOwnerDraw)
StatusBarPanels[]Style := psOwnerDraw;
//将进程条放入状态栏
ProgressBarParent := StatusBar;
//去除状态栏的边框这样就与状态栏溶为一体了
ProgressBarStyle := GetWindowLong(ProgressBarHandleGWL_EXSTYLE);
ProgressBarStyle := ProgressBarStyle WS_EX_STATICEDGE;
SetWindowLong(ProgressBarHandle GWL_EXSTYLE ProgressBarStyle);
end;
//编写状态栏的自绘代码
procedure TFormStatusBarDrawPanel(StatusBar: TStatusBar;Panel: TStatusPanel;const Rect: TRect);
begin
//注意这里的Panels[]指的就是第块面板因为默认是从开始的
if Panel = StatusBarPanels[] then
with ProgressBar do begin
Top := RectTop;
Left := RectLeft;
Width := RectRight RectLeft ;
Height := RectBottom RectTop;
end;
end;
关键问题解决之后我们来一个小例子这样就可以有一个全局的印象了控件的摆放如(图)所示编写代码如下
procedure TFormButtonClick(Sender: TObject);
var
i : integer;
begin
ProgressBarPosition := ;
ProgressBarMax := ;
for i := to do
begin
ProgressBarPosition := i;
Sleep();
end;
end;
运行一下这个小程序点击一下按钮看到了吧进程条在状态栏中动起来了
[] []