2013-01-22 33 views
2

可能重複:
Delphi Timer: Time before next event在TTimer發生火災之前,還有什麼方法可以獲得時間嗎?

用C++助洗劑在Windows 7 Pro的(64位)XE:

我有一個表格上的TTimer。

我想要做的是更新一個進度條,以顯示TTimer在調用OnTimer事件處理程序之前剩下的時間。

有沒有什麼辦法可以找出低位長,直到TTimer的間隔觸發OnTimer事件?

+0

而這:[如何獲得timeleft在計時器?](http://stackoverflow.com/q/8763976/576719)是上述問題的確切副本。 –

回答

2

不,Windows定時器不提供該接口。

由於無論如何您都要更新進度條,因此您已經有一些週期性代碼比您想要跟蹤的計時器運行得更頻繁。該代碼將由一個定時器觸發,因此在定時器代碼中,檢查當前時間並比較出您之前爲您要跟蹤的計時器計算的到期時間。

然後,擺脫第一個計時器,因爲你不再需要它。相反,只要使用「跟蹤」計時器在時間內觸發原始代碼即可。最終,你將有一個定時器不斷檢查是否該運行代碼。如果是時候,那麼運行代碼;否則,請更新進度欄。

+0

如何添加一個setter到TTimer.Enabled屬性來設置當前的時間戳,然後公開一個名爲「剩餘」的新屬性或類似的東西? –

+0

這將是「您之前爲計時器計算的到期時間,」@Leonardo。無論您是否將計算內容放在組件外,都不會改變問題的答案。操作系統和庫不提供支持,因此您必須單獨實施。 –

+0

問題是,是否可以在'TTimer'上做到這一點。你有計時器啓用的時刻,並且你有'Interval'屬性。只要確保在其「OnExecute」方法中禁用定時器就足以獲得一個很好的顯示估計值。無論如何,LU RD指出了一個重複的問題,討論了很多關於這個問題的內容(包括一些類似的回答和關於這個不太準確的警告)。所以這在任何情況下看起來都是重複的:-) –

相關問題