很多時候,DataWindow 的設計目的在於監視列表的資料,尤其是會自動定期更新的列表。 譬如說,我有一個紀錄狀態的 Table ,裡面紀錄的狀態一直在改變, 因此,我會需要一個 DataWindow 定時的去 Retrieve 這些紀錄資料,並將它顯示到畫面上, 讓管理人員可以一目了然。 當然,你會說這有什麼困難?用一個 DataWindow 加上 Timer 就可以解決啦! 但如果,這些資料多到螢幕容納不下時會發生什麼事? 如果你設定必需2秒更新一次又會怎麼樣? 事實是,當管理人員下拉(Scroll)該 DataWindow 以便檢視下方被遮住的資料時, 由於 Retrieve 的關係,所以畫面又跳回第一筆 Row 啦!!! 管理人員會落入不勝其擾的拉下又跳回、拉下又跳回的無間地獄了。 也許加大 Timer 間隔是個方法,不過對於資料的即時性就大打折扣了, 尤其是特別重要的資料更是如此,例如即時股票的變化..... 所以需要一點小技巧來達成這樣的運作模式,利用下面的程式碼技巧可以避開 DataWindow 的顯示畫面 reflash 動作: DataStore lds_src Long ll_row , ll_rcount Integer li_col , li_ccount //建立一個資料倉儲並使之與資料視窗的來源物件相同 lds_src = Create DataStore lds_src.DataObject = dw_1.DataStore lds_src.SetTransObject(SQLCA) //由資料倉儲來讀取資料 lds_src.Retrieve() ll_rcount = lds_src.RowCount() li_ccount = integer(dw_1.Object.DataWindow.Column.Count) for ll_row = 1 to ll_rcount for li_col = 1 to li_ccount //複製資料蓋掉畫面上的資料 dw_1.Object.Data[ll_row , li_col] = lds_src.Object.Data[ll_row...