• 主页
  • Windows SDK/API
  • 基础类
  • ActiveX
  • 数据库及相关技术
  • 网络及通讯开发
  • VCL组件使用和开发

怎么把进度条放到状态栏上去啊?

kinglang 2002-06-03 04:03:59
我先放了一个状态栏到form上,然后我想把一个进度条放到状态栏上去,可是放不上去。请问怎样才能放上去?
...全文
49 点赞 收藏 12
写回复
12 条回复
kinglang 2002年06月03日
呵呵,哥儿们真是说得对极了。
我这就照章办事去。
给分!!!
回复 点赞
SharpKing515 2002年06月03日
来晚一步啊,,,
同意fansses(你好)的,,,
回复 点赞
wfu 2002年06月03日
都被你们说了!
回复 点赞
Libran 2002年06月03日
直接是放不上的,在程序里动态生成,再放在状态拦里:
TProgressBar *ProgBar=new TProgressBar(this);//生成新的进度条
ProgBar->Parent=StatusBar;//将进度条放在状态拦里
...//处理代码
delete ProgBar;//释放生成的进度条
回复 点赞
HUANG_JH 2002年06月03日
up
回复 点赞
codecb 2002年06月03日
各位都说了!
完了!
回复 点赞
fansses 2002年06月03日
首先将状态栏中的某一个面板的style属性设为psOwnerDraw,并在状态栏的OnDrawPanel事件中获取将Style属性设置为psOwnerDraw的面板的尺寸。还要要头文件中的private中声明几个变量:
TProgressBar* ProgressBar; // 进度条组件
TRect ProgressBarRect; // 进度条组件的尺寸


代码如下(假设我定义了一个Button事件来处理的):
//---------------------------------------------------------------------------

void __fastcall TForm1::StatusBar1DrawPanel(TStatusBar *StatusBar,
TStatusPanel *Panel, const TRect &Rect)
{
ProgressBarRect = Rect;
}
//---------------------------------------------------------------------------

void __fastcall TForm1::Button1Click(TObject *Sender)
{
int i, StepCount;
ProgressBar = new TProgressBar(this);
StepCount = 5000; // 进度条的最大步长

//设定进度条的位置、宽度和高度
ProgressBar->Top = ProgressBarRect.Top;
ProgressBar->Left = ProgressBarRect.Left;
ProgressBar->Width = ProgressBarRect.Right-ProgressBarRect.Left;
ProgressBar->Height = ProgressBarRect.Bottom-ProgressBarRect.Top;
ProgressBar->Visible = True; // 显示进度条
try
{
ProgressBar->Parent = StatusBar1; // 进度条的父级
ProgressBar->Min = 0; // 最小值
ProgressBar->Max = StepCount; // 最大值
ProgressBar->Step = 1; // 步长
for( i=1; i<StepCount; i+=ProgressBar->Step ) // 累加进度条
ProgressBar->StepIt();
MessageDlg("状态条显示完毕。", mtInformation, TMsgDlgButtons()<<mbOK, 0);
}
__finally
{
delete ProgressBar; //释放进度条的资源
}
}
回复 点赞
hotxu 2002年06月03日
头文件:
#ifndef Unit1H
#define Unit1H
//---------------------------------------------------------------------------
#include <Classes.hpp>
#include <Controls.hpp>
#include <StdCtrls.hpp>
#include <Forms.hpp>
#include <ComCtrls.hpp>
//---------------------------------------------------------------------------
class TForm1 : public TForm
{
__published: // IDE-managed Components
TStatusBar *StatusBar1;
TButton *Button1;
void __fastcall StatusBar1DrawPanel(TStatusBar *StatusBar,
TStatusPanel *Panel, const TRect &Rect);
void __fastcall Button1Click(TObject *Sender);
private: // User declarations
TProgressBar* ProgressBar; // 进度条组件
TRect ProgressBarRect; // 进度条组件的尺寸

public: // User declarations
__fastcall TForm1(TComponent* Owner);
};
//---------------------------------------------------------------------------
extern PACKAGE TForm1 *Form1;
//---------------------------------------------------------------------------
#endif
回复 点赞
hotxu 2002年06月03日

void __fastcall TForm1::StatusBar1DrawPanel(TStatusBar *StatusBar,
TStatusPanel *Panel, const TRect &Rect)
{
ProgressBarRect = Rect;
}
//---------------------------------------------------------------------------

void __fastcall TForm1::Button1Click(TObject *Sender)
{
int i, StepCount;
ProgressBar = new TProgressBar(this);
StepCount = 5000; // 进度条的最大步长

//设定进度条的位置、宽度和高度
ProgressBar->Top = ProgressBarRect.Top;
ProgressBar->Left = ProgressBarRect.Left;
ProgressBar->Width = ProgressBarRect.Right-ProgressBarRect.Left;
ProgressBar->Height = ProgressBarRect.Bottom-ProgressBarRect.Top;
ProgressBar->Visible = True; // 显示进度条
try
{
ProgressBar->Parent = StatusBar1; // 进度条的父级
ProgressBar->Min = 0; // 最小值
ProgressBar->Max = StepCount; // 最大值
ProgressBar->Step = 1; // 步长
for( i=1; i<StepCount; i+=ProgressBar->Step ) // 累加进度条
ProgressBar->StepIt();

}
__finally
{
delete ProgressBar; //释放进度条的资源
}
}
回复 点赞
kinglang 2002年06月03日
可是这样的话,因为我状态栏是限定了长度的,那不是要精确控制字符个数吗才能让显示类似于进度条吗。
太麻烦了。
还是教教我放进度条吧。
回复 点赞
kinglang 2002年06月03日
呵呵,这倒是个好办法,兄弟你真是长得帅又有才华啊。
向你学习。
回复 点赞
LuoGD 2002年06月03日
在状态栏中显示"■"字符的个数表示进度。我是这么做的
回复 点赞
发动态
发帖子
C++ Builder
创建于2007-08-02

2563

社区成员

10.2w+

社区内容

C++ Builder相关内容讨论区
社区公告
暂无公告