ProgressBar 控件位于 COMCTL32.OCX 中,其幫助文件是 CTRLREF.HLP。該控件給我們一個(gè) Windows 95 風(fēng)格的進(jìn)度條,就象你從一個(gè)驅(qū)動(dòng)器中復(fù)制一個(gè)大的文件到另一個(gè)驅(qū)動(dòng)器時(shí) Windows 95 所顯示的進(jìn)度條一樣。該控件可用于較費(fèi)時(shí)的操作而你又想向用戶顯示處理進(jìn)程時(shí)。示例包括執(zhí)行長(zhǎng)的計(jì)算(如工資表計(jì)算),在打印前執(zhí)行的復(fù)雜查詢,保存記錄等。進(jìn)程條可以在處理了每條記錄或某一批記錄時(shí)更新,或在任務(wù)的各步中進(jìn)行更新。

方法和事件
ProgressBar 控件響應(yīng)一些與其它 VFP 控件相關(guān)的方法和事件:Click,Drag,DragDrop,DragOver,MouseDown,MouseMove,MouseUp,Move,ShowWhatsThis 和 ZOrder。
屬性
與 Calendar 控件相比,ProgressBar 控件的屬性比其方法或事件更為有趣,考試.大提示主要是因?yàn)樗且曈X(jué)控件。許多影響控件外觀的屬性更易于在設(shè)計(jì)時(shí)從 VFP 的屬性表中或 ProgressBar 控件的屬性表中進(jìn)行設(shè)置。這些屬性包括 Align (決定控件位置是否可移動(dòng)或它是否自動(dòng)靠向表單的上,下,左或右邊沿),Appearance (平面或立體) 和 BorderStyle。
我們更感興趣的是運(yùn)行時(shí)的屬性 Min,Max 和 Value。Min 和 Max 提供了控件值的范圍,默認(rèn)值是 0 到 100??丶臈l的長(zhǎng)度是由 Value 屬性控制。
示例
源代碼中的 ACTIVEX.VCX 包含一個(gè) SFThermometer 類。該類是一個(gè)帶有進(jìn)程條,一些標(biāo)簽和一個(gè)取消按鈕的容器類。它的自定義方法 SetTitle 和 SetMaximum 用于設(shè)置 "Main" 標(biāo)簽的標(biāo)題和 ProgressBar 控件的值。要更新溫度計(jì),用 Update 方法。它接收兩個(gè)參數(shù):溫度計(jì)的當(dāng)前值和表單中的 "Current task" 標(biāo)簽的標(biāo)題。傳遞到 Update 的值的轉(zhuǎn)換取決于表單的 lPassPercent 屬性的設(shè)置。如果 lPassPercent 是 .T.,Update 期望一個(gè)百分比值; 如果 lPassPercent 是 .F.,如果 lPassPercent 是 .T.希望一個(gè)值并用該值和值的比來(lái)計(jì)算百分比。
SFThermometer 使用了一種非常有趣的技術(shù)來(lái)允許從一個(gè) "Hard" 循環(huán)中中斷。Update 方法檢查是否鼠標(biāo)移動(dòng)到了取消按鈕上及該按鈕是否被按下。如果是,它用新的 doevents 命令來(lái)允許對(duì)事件進(jìn)行處理(也就是說(shuō),取消按鈕按下),然后設(shè)置一個(gè)用戶取消處理的標(biāo)志。循環(huán)調(diào)用 Update 方法檢查該標(biāo)志以決定是否需要繼續(xù)處理。我原先在 Update 方法中使用 doevents來(lái)允許按下取消按鈕(而不是檢查鼠標(biāo)位置和按下?tīng)顟B(tài)),但這樣要花大量的時(shí)間!
PROGRESS.PRG 是一個(gè)示例程序用于展示 SFThermometer 的使用。PROGRESS 表單只是有一個(gè) SFThermometer 容器,PROGRESS.PRG 運(yùn)行該表單來(lái)顯示溫度計(jì)。

方法和事件
ProgressBar 控件響應(yīng)一些與其它 VFP 控件相關(guān)的方法和事件:Click,Drag,DragDrop,DragOver,MouseDown,MouseMove,MouseUp,Move,ShowWhatsThis 和 ZOrder。
屬性
與 Calendar 控件相比,ProgressBar 控件的屬性比其方法或事件更為有趣,考試.大提示主要是因?yàn)樗且曈X(jué)控件。許多影響控件外觀的屬性更易于在設(shè)計(jì)時(shí)從 VFP 的屬性表中或 ProgressBar 控件的屬性表中進(jìn)行設(shè)置。這些屬性包括 Align (決定控件位置是否可移動(dòng)或它是否自動(dòng)靠向表單的上,下,左或右邊沿),Appearance (平面或立體) 和 BorderStyle。
我們更感興趣的是運(yùn)行時(shí)的屬性 Min,Max 和 Value。Min 和 Max 提供了控件值的范圍,默認(rèn)值是 0 到 100??丶臈l的長(zhǎng)度是由 Value 屬性控制。
示例
源代碼中的 ACTIVEX.VCX 包含一個(gè) SFThermometer 類。該類是一個(gè)帶有進(jìn)程條,一些標(biāo)簽和一個(gè)取消按鈕的容器類。它的自定義方法 SetTitle 和 SetMaximum 用于設(shè)置 "Main" 標(biāo)簽的標(biāo)題和 ProgressBar 控件的值。要更新溫度計(jì),用 Update 方法。它接收兩個(gè)參數(shù):溫度計(jì)的當(dāng)前值和表單中的 "Current task" 標(biāo)簽的標(biāo)題。傳遞到 Update 的值的轉(zhuǎn)換取決于表單的 lPassPercent 屬性的設(shè)置。如果 lPassPercent 是 .T.,Update 期望一個(gè)百分比值; 如果 lPassPercent 是 .F.,如果 lPassPercent 是 .T.希望一個(gè)值并用該值和值的比來(lái)計(jì)算百分比。
SFThermometer 使用了一種非常有趣的技術(shù)來(lái)允許從一個(gè) "Hard" 循環(huán)中中斷。Update 方法檢查是否鼠標(biāo)移動(dòng)到了取消按鈕上及該按鈕是否被按下。如果是,它用新的 doevents 命令來(lái)允許對(duì)事件進(jìn)行處理(也就是說(shuō),取消按鈕按下),然后設(shè)置一個(gè)用戶取消處理的標(biāo)志。循環(huán)調(diào)用 Update 方法檢查該標(biāo)志以決定是否需要繼續(xù)處理。我原先在 Update 方法中使用 doevents來(lái)允許按下取消按鈕(而不是檢查鼠標(biāo)位置和按下?tīng)顟B(tài)),但這樣要花大量的時(shí)間!
PROGRESS.PRG 是一個(gè)示例程序用于展示 SFThermometer 的使用。PROGRESS 表單只是有一個(gè) SFThermometer 容器,PROGRESS.PRG 運(yùn)行該表單來(lái)顯示溫度計(jì)。