回复: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;
你能給我一些建議嗎?
謝謝。