全國最多中醫師線上諮詢網站-台灣中醫網
發文 回覆 瀏覽次數:1233
推到 Plurk!
推到 Facebook!

高手指点:如何控制绘制的stringgrid颜色不被刷去

尚未結案
huyang
一般會員


發表:23
回覆:26
積分:9
註冊:2003-11-20

發送簡訊給我
#1 引用回覆 回覆 發表時間:2005-03-17 09:38:26 IP:61.185.xxx.xxx 未訂閱
我是在一个click事件中根据判断条件刷stringgrid的颜色,代码如下: StringGrid1.Canvas.brush.Color:=clred; StringGrid1.Canvas.FillRect(stringGrid1.CellRect(1,1); 当有一个窗口刷过StringGrid1上面画的颜色就没有了,有什么好办法可以使上面的颜色不会被刷取
wyndog
資深會員


發表:7
回覆:362
積分:348
註冊:2004-10-12

發送簡訊給我
#2 引用回覆 回覆 發表時間:2005-03-17 09:57:52 IP:60.248.xxx.xxx 未訂閱
這個部份嘛,StringGrid 不會自動重繪 所以,你要在重繪的事件 OnDrawCell 中,自己再加上那段程式碼    
procedure TForm1.StringGrid1DrawCell(Sender: TObject; ACol, ARow: Integer;
  Rect: TRect; State: TGridDrawState);
begin
  StringGrid1.Canvas.brush.Color:=clred;
  StringGrid1.Canvas.FillRect(stringGrid1.CellRect(1,1));
end;
當然啦,這只是偷懶的寫法,可以參考一下 Rect 決定要不要去重繪那段
huyang
一般會員


發表:23
回覆:26
積分:9
註冊:2003-11-20

發送簡訊給我
#3 引用回覆 回覆 發表時間:2005-03-17 20:38:20 IP:61.185.xxx.xxx 未訂閱
我是在一个click事件中根据判断条件刷stringgrid的颜色,这时Form已经打开stringgrid已经绘过 再在onDrawCell事件中重绘好像已经不起作用了,所以红色被刷了 發表人 - huyang 於 2005/03/17 20:43:44
wyndog
資深會員


發表:7
回覆:362
積分:348
註冊:2004-10-12

發送簡訊給我
#4 引用回覆 回覆 發表時間:2005-03-17 23:30:31 IP:61.62.xxx.xxx 未訂閱
唔,你測試過了嗎? OnDrawCell 應該是每次重繪就會觸發吧 而你有視窗經過 StringGrid 的話 它一定會進行重繪的
huyang
一般會員


發表:23
回覆:26
積分:9
註冊:2003-11-20

發送簡訊給我
#5 引用回覆 回覆 發表時間:2005-03-18 09:35:20 IP:61.185.xxx.xxx 未訂閱
多谢wyndog OnDrawCell 事件是每次刷新都重绘 我是根据一个比较耗时的查询语句检测是否标为红色,而Stringgrid的OnDrawCell事件每次刷新都重绘,每次重绘都执行查询语句会很影响速度 所以我将重绘颜色放在Button的clck事件中 请问有什么好的解决办法吗
wyndog
資深會員


發表:7
回覆:362
積分:348
註冊:2004-10-12

發送簡訊給我
#6 引用回覆 回覆 發表時間:2005-03-18 09:50:59 IP:60.248.xxx.xxx 未訂閱
引言: OnDrawCell 事件是每次刷新都重绘 我是根据一个比较耗时的查询语句检测是否标为红色,而Stringgrid的OnDrawCell事件每次刷新都重绘,每次重绘都执行查询语句会很影响速度 所以我将重绘颜色放在Button的clck事件中 请问有什么好的解决办法吗
另外建一個表(陣列)來存... 比如說,每次要標為紅色時,就把那格的坐標填到自己的陣列去 這樣重繪的時候,只要查表,就知道要不要畫顏色上去 算是以空間換取時間的方法 當然,如果資料會變動的話,有些細節要留意就是了
huyang
一般會員


發表:23
回覆:26
積分:9
註冊:2003-11-20

發送簡訊給我
#7 引用回覆 回覆 發表時間:2005-03-18 10:50:43 IP:61.185.xxx.xxx 未訂閱
引言: 另外建一個表(陣列)來存... 比如說,每次要標為紅色時,就把那格的坐標填到自己的陣列去 這樣重繪的時候,只要查表,就知道要不要畫顏色上去 算是以空間換取時間的方法 當然,如果資料會變動的話,有些細節要留意就是了
呵呵 这到是个好办法 谢谢wyndog 不知还有什么好方法 發表人 - huyang 於 2005/03/18 10:57:03
系統時間:2024-06-01 15:51:57
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!