我有一個運行良好的 Delphi GUI 應用程式,直到顯示解析度更改自動導致程式的 GUI 視窗被重新繪制。WM_DISPLAYCHANGE我們可以通過訊息捕捉到這個顯示事件。
在重繪事件中,似乎TListView在那一刻隱藏的某些組件在它們再次變得可見之前不會被重繪。
似乎僅在表單的可見組件上呼叫重繪,并且作業系統僅在它們再次可見時重繪不可見的專案。
但是,當代碼參考 a 中的專案時,這會導致問題,但TListView在WM_DISPLAYCHANGE訊息之后尚未顯示。TListView里面應該有專案,但回傳TListView.Items.Count0,就好像TListView是空的。
在我使TListView螢屏上可見后,一切都恢復正常,我可以再次參考TListView.
我試圖顯式呼叫TListView.Repaint()以更新它而不必顯示它,但它不起作用。
這是記錄在案的行為嗎?
有沒有辦法立即重繪一個不可見的表單組件,而不讓它在螢屏上可見?
uj5u.com熱心網友回復:
ListView.Items.Count如果沒有分配句柄,則回傳 0。使其在ListView.HandleNeeded之前回傳正確的值呼叫。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/508549.html
