回复:JSL 是否提供类似于旋转轮或条的“忙碌”指示器?
这是用 JSL 制作的进度指示器的示例;它使用命名空间来封装代码。最后几行是测试,尝试设置工作量更大或更小。为了获得平稳的性能,必须经常调用 Progress:set 函数。 Progress:init 函数需要知道要完成的总工作量才能获得正确的百分比。
编辑:附上 JSL 的副本,显然内联 JSL 可能无法正确显示。

progress = New Namespace(
"progress"
);
progress:init = Function( {workload},
progress:TotalWork = workload;
progress:Current = -1;
progress:tick = Tick Seconds();
progress:Window = New Window( "progress",
H List Box(
Spacer Box( size( 20, 20 ) ),
progress:busy = Busy Light( <<SIZE> 1 / 30,
progress:tick = now;
If( pct != progress:Current,
progress:Current = pct;
progress:left << size( progress:Current, 20 );
progress:right << size( 100 - progress:Current, 20 );
progress:text << settext( Char( pct ) || "%" );
);
progress:busy << advance;
Wait( 0 );
)
);
progress:term = Function( {},
progress:Window << closeWindow
);
/////////////////////////
// test
/////////////////////////
workload = 1e6; // 1e6 is about 5 seconds
progress:init( workload );
For( i = 1, i <= workload, i++,
progress:set( i )
);
progress:term();</SIZE>
好问题。
您所询问的测试旨在防止每秒更新显示超过 30 次,这会浪费时间。 事实上,如果没有该测试,该示例将更新显示一百万次,并且需要很长时间才能运行。
该示例假设有 1e6 个文件。 您应该编写一个类似于最后 6 行代码的循环,在之前进行文件处理进度:设定(i) 。 并将 1e6 更改为您的文件数。
嗨克雷奇
感谢您分享有关进度条的信息。
我想用进度条监视已处理的文件数量。
所以,我的“工作量”不是“时间”而是“计数”。 (文件夹中有N个文件)
这是否意味着我应该删除“progress:tick”和这句话
If( now - progress:tick > 1 / 30,
progress:tick = now;
你能给我一些建议吗?
谢谢。