进度条
请问怎么做一个向photoshop那样的状态栏中的任务进度条
我的一个计算操作需要很长时间
问题点数:20、回复次数:6Top
1 楼szbug(深圳虫)回复于 2002-11-12 15:15:39 得分 5
在(BCB5)Win32以及Samples个有一个进度条控件,很容易使用的,不知道有什么问题吗?
Top
2 楼borland_boy(疯狂的兔子)回复于 2002-11-12 15:38:14 得分 5
先设置最小的值Min在设置一个最大值Max
然后做个循环
不断的给进度条的值增大就实现你要的效果了
最好在循环里加一条
ProgressBar1->Position = 0;
ProgressBar1->Max = 100;
ProgressBar1->Min = 0;
for (int i=0; i<100; i++)
{
ProgressBar1->Position = i;
Application->ProcessMessages();
}
Top
3 楼amartapple()回复于 2002-11-14 17:37:42 得分 0
没成功,还有么Top
4 楼chameleon(☆☆☆☆☆)回复于 2002-11-14 17:46:11 得分 5
ProgressBar1->Position = 0;
ProgressBar1->Max = 100;
ProgressBar1->Min = 0;
for (ProgressBar1->Position = 0;ProgressBar1->Position < ProgressBar1->Max;ProgressBar1->StepIt())
;Top
5 楼chameleon(☆☆☆☆☆)回复于 2002-11-14 17:47:54 得分 0
void __fastcall TForm1::Button1Click(TObject *Sender)
{
FILE *F;
F = fopen("MyFile.txt", "r");
if (F)
{
struct stat statbuf;
fstat(fileno(F), &statbuf);
ProgressBar1->Max = statbuf.st_size;
if (ProgressBar1->Max > 10)
ProgressBar1->Step = (ProgressBar1->Max)/10;
else
ProgressBar1->Step = ProgressBar1->Max;
char *DataBuffer = new char[ProgressBar1->Step];
for (ProgressBar1->Position = 0;
ProgressBar1->Position < ProgressBar1->Max;
ProgressBar1->StepIt())
{
fread(DataBuffer, ProgressBar1->Step, 1, F);
// do something with the next chunk
}
delete DataBuffer;
fclose(F);
}
}
bcb的例子,看看就明白了。Top
6 楼borlandme(宝兰迷)回复于 2002-11-14 18:36:50 得分 5
楼上的人说的很多了。
注意:应先将你的状态栏中的某个面板的Style属性设置为psOwnerDraw.再在程序设置进度条的大小及可视状态。Top




