2010-04-02 112 views
2

我有一個從PB應用程序中調用的運行時間比較長的存儲過程。我希望UI顯示正在處理的指示符,但我不知道確切的進度。也就是說,我不能說是完成了10%還是90%。我所知道的是當它完成時。PowerBuilder不確定進度條

爲了讓用戶看一下我想在窗口的某處放置一個「Inderterminate」(水平)進度條。我查看了內置HProgressBar控件的文檔,並沒有看到如何強制這種行爲。

寫我自己的控制或導入另一個控制的缺點,有沒有辦法做到這一點?

回答

2

Powerbuilder不包含內置的方法來執行此操作,但可以使用Win32控件。在燈架上有一個很好的文章在這裏(其中包括進度條的例子!):

這是一個較舊的文章,但它仍然適用於PowerBuilder的較新版本。

0

有點難以控制。由於PowerBuilder不是多線程的,當存儲過程運行時,應用程序UI將無法正確更新。

在控制返回之前,必須等待操作完成。

在過去,我展示了一個動畫來說明長時間運行的操作正在進行中。如果您使用動畫控制,它將在SP運行時繼續播放。

+0

雖然你提出了一個很好的觀點,但PB並不是多線程並不完全準確。您可以使用SharedObjectRegister()創建線程,並且有一個可能適用於此的Async DB Parm。但是,根據性能影響的權重,OP可能想要在主線程運行GUI時生成一個線程來執行檢索。如果大部分開銷在數據傳輸中,這可以在一個使用RetrieveRow的線程中完成,儘管這會帶來其自身的性能影響。 – Terry 2010-04-12 04:03:32