線上訂房服務-台灣趴趴狗聯合訂房中心
發文 回覆 瀏覽次數:1298
推到 Plurk!
推到 Facebook!

請問 StringGrid 顯示效率

尚未結案
hugo
一般會員


發表:1
回覆:4
積分:1
註冊:2002-12-10

發送簡訊給我
#1 引用回覆 回覆 發表時間:2004-06-28 17:51:37 IP:210.66.xxx.xxx 未訂閱
各位先進大家好:     小弟有一個問題是:如果我從USB不斷的接收 DATA 進來,經過整理在顯示在StringGrid 中(不斷的增加 ROW 數量),我發現如果我的程式是在最上層(也就是我可以從螢幕即時看到顯示的DATA),"好像"因為 StringGrid 更新效率,導致我的 BUFFER (程式中所開的一個BUFFER)使用率變的很高,也就是很多 DATA 來不及更新在螢幕上,可是我如果將執行中之程式用其他應用程式(如檔案總管)蓋住他(也就是我無法從螢幕即時看到顯示的DATA,因為被其他應用程式蓋住了),看來 StringGrid 更新效率會較好(好像是因為OS不用即時重繪螢幕),BUFFER (程式中所開的一個BUFFER)使用率變的很低,請問各位大大有無較好之解法,因為我必須即時在螢幕上看到更新的DATA。 
huwk
資深會員


發表:26
回覆:340
積分:323
註冊:2002-04-03

發送簡訊給我
#2 引用回覆 回覆 發表時間:2004-06-29 18:55:05 IP:61.222.xxx.xxx 未訂閱
請問更新的時間會很長嗎? 若否.那可以在每次更新前..設visible成false 更新完再設成ture..應可以加快不少..
------
熊的學習 http://huwk.blogspot.com
hugo
一般會員


發表:1
回覆:4
積分:1
註冊:2002-12-10

發送簡訊給我
#3 引用回覆 回覆 發表時間:2004-06-29 19:54:37 IP:210.66.xxx.xxx 未訂閱
huwk 大大你好:     用你建議的方法看來沒有改善,而且畫面看來向在閃爍(我是每增加一row     visible 就ON-OFF一次。       現在想用的解決方法是,採用FIFO的方式,假設max rowcount=1000,     第1001筆加入時,就將第 0 row 刪除,已維持max rowcount=1000.     可是我參考站上的方法,寫了以下程式,可是發現超過1000筆資料後,     每次更新變很慢,因為必須同更新1000筆的資料,不曉的個位先進有     無更好的解法。          iIndex = 1;        StringGrid->Rows[iIndex]->Clear();        for(int i=iIndex; iRowCount; i ) { StringGrid->Rows[i]->Assign(StringGrid->Rows[i 1]); } //StringGrid->Rows[StringGrid->RowCount-1]->Clear(); StringGrid->Rows[StringGrid->RowCount]->Clear(); StringGrid->RowCount-=1;
huwk
資深會員


發表:26
回覆:340
積分:323
註冊:2002-04-03

發送簡訊給我
#4 引用回覆 回覆 發表時間:2004-06-29 20:35:45 IP:61.222.xxx.xxx 未訂閱
您好..因為您有指出若被其它程式蓋住,效率是您可以接受的..so.此法理論上應是合用的,請問您的visible改變的地方在如下嗎?    
引言: StringGrid visible設成false iIndex = 1; StringGrid->Rows[iIndex]->Clear(); for(int i=iIndex; iRowCount; i ) { StringGrid->Rows[i]->Assign(StringGrid->Rows[i 1]); } //StringGrid->Rows[StringGrid->RowCount-1]->Clear(); StringGrid->Rows[StringGrid->RowCount]->Clear(); StringGrid->RowCount-=1; StringGrid visible設成true
------
熊的學習 http://huwk.blogspot.com
hugo
一般會員


發表:1
回覆:4
積分:1
註冊:2002-12-10

發送簡訊給我
#5 引用回覆 回覆 發表時間:2004-06-30 08:57:17 IP:210.66.xxx.xxx 未訂閱
huwk 大大你好: 沒錯 visible 擺的位置就像你寫的樣子,可是螢幕看起來像在電視上 看到播用攝影機拍CRT電腦螢幕的樣子,看起來很不舒服。 且採用FIFO(限制MAX ROWCOUNT=1000),會導致花太多時間在搬移 1000筆資料上,不曉的各位先進有無其他解法。
huwk
資深會員


發表:26
回覆:340
積分:323
註冊:2002-04-03

發送簡訊給我
#6 引用回覆 回覆 發表時間:2004-06-30 12:00:19 IP:61.222.xxx.xxx 未訂閱
您好~ 看起來你應不止有顯示重畫速度慢的問題~~ 應還有tstrings塞值花時間的問題... so..有個小建議~在不更換元件下.. 將source這二個方法ColumnMoved; RowMoved提到 public , 然後用這方法取代 StringGrid->Rows[i]->Assign(StringGrid->Rows[i 1]); 我想應可以有所改善~~ ps..我沒細看是否會對其它程式造成什麼影響oh~~理論上應是不會才是.. 發表人 - huwk 於 2004/06/30 12:05:19
------
熊的學習 http://huwk.blogspot.com
系統時間:2024-05-15 6:43:15
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!