寫在前面
這是PB案例學習筆記系列文章的第10篇,該系列文章適合具有一定PB基礎的讀者。
通過一個個由淺入深的編程實戰案例學習,提高編程技巧,以保證小伙伴們能應付公司的各種開發需求。
文章中設計到的源碼,小凡都上傳到了gitee代碼倉庫https://gitee.com/xiezhr/pb-project-example.git
需要源代碼的小伙伴們可以自行下載查看,后續文章涉及到的案例代碼也都會提交到這個倉庫【pb-project-example】
如果對小伙伴有所幫助,希望能給一個小星星?支持一下小凡。
一、小目標
在項目中,我們有時候會遇到檢索大數據,文件下載等耗時比較長的功能。
這時候進度條就排上用場了,使用了進度條可以使交互界面比較友好。
PB
中一共有HProgressBar
和VProgressBar
兩種進度條,本篇文章,我們的目的就是創建一個進度條,模擬一個任務進度情況。
最終效果如下圖所示
二、創建程序基本框架
① 新建examplework
工作區
② 新建exampleapp
應用
③ 新建w_main
窗口。Title
設置為進度顯示
以上步驟如果忘記的小伙伴,可以翻一下第一篇文章復習一下
④ 添加控件,進行頁面布局
在窗口中添加一個HProgressBar
控件和兩個CommandButton
控件。控件名稱依次為hpb_1
、cb_1
和cb_2
將hpb_1
的setstep
屬性設置為2
控件名稱 | 屬性 | 值 |
---|---|---|
hpb_1 | MinPositon | MaxPositon |
cb_1 | Text | 開始 |
cb_2 | Text | 停止 |
三、編寫代碼
① 編寫實例變量
boolean ib_stop
② 在按鈕cb_1
的clicked
事件中添加如下腳本
long ll_step, ll_max
long ll_start, ll_used
ll_max = hPB_1.MaxPosition //獲取進度條的最大位置
for ll_step = 1 to ll_maxYield() //交出CPU控制權if ib_stop then //根據實例變量,判斷用戶是否中斷ib_stop = falseReturnend ifhPB_1.stepIt() //進度條前進一個步長ll_start = Cpu() //獲取當前時間,存入ll_start 變量ll_used = Cpu() - ll_start //計算使用時間do while ll_used < 50 //延時ll_used = Cpu() - ll_startloop
Next
③ 在按鈕cb_2
的clicked
事件中添加如下代碼
ib_stop = true
④ 在開發界面左邊的System Tree
窗口中雙擊 exampleapp
應用,在其Open
事件中添加如下代碼
open(w_main)
四、運行程序
運行程序,點擊開始按鈕后如下圖所示
五、進度條控件
5.1 常用屬性
① MinPosition
和MaxPosition
屬性
默認值分別是0和100,用來指定進度條上滑塊最左(最上)最右(最下)位置時所代表的數值
② Position
屬性
這是一個非常中藥的屬性,決定進度條當前的位置
③ SetStep
屬性
指每次前進或者后退的幅度,默認值為10
④ SmoothScroll
屬性
指定進度條是否平滑前進,默認為False
,實際使用中建議將該值設置為True
,這樣界面顯示效果會更好
5.2 常用函數
① OffsetPos
函數
語法:
control.OffsetPos(Increment)
功能:
使進度條 control 中的光亮條前進 increment 長度 。當到達或超過進度條的最大值時不能自動重新開始。
例如,當前高亮條長度為 70,進度條 hpb_1
的最大值為 100,
使用函數 hPB_1.OffsetPos(40)
只能使高亮條寬度為 100,而不是 10
② StepIt
函數
語法:
control.StepIt()
功能:
使進度條 control 中的光亮條前進 SetStep
長度。當到達或超過進度條的最大值時可以重新開始。
例如,當前高亮條長度為 70,進度條 hPB_1
的最大值為 100,使用函數
hPB_1.StepIt(40)
可以使高亮條寬度達到 100 后再到達 10 的位置。
本期內容到這兒就結束了,希望對您有所幫助 ★,°:.☆( ̄▽ ̄)/$:.°★ 。
我們下期再見 ヾ(?ω?`)o (●’?’●)