高手指点:如何控制绘制的stringgrid颜色不被刷去 |
尚未結案
|
huyang
一般會員 發表:23 回覆:26 積分:9 註冊:2003-11-20 發送簡訊給我 |
|
wyndog
資深會員 發表:7 回覆:362 積分:348 註冊:2004-10-12 發送簡訊給我 |
這個部份嘛,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 發送簡訊給我 |
|
wyndog
資深會員 發表:7 回覆:362 積分:348 註冊:2004-10-12 發送簡訊給我 |
|
huyang
一般會員 發表:23 回覆:26 積分:9 註冊:2003-11-20 發送簡訊給我 |
|
wyndog
資深會員 發表:7 回覆:362 積分:348 註冊:2004-10-12 發送簡訊給我 |
引言: OnDrawCell 事件是每次刷新都重绘 我是根据一个比较耗时的查询语句检测是否标为红色,而Stringgrid的OnDrawCell事件每次刷新都重绘,每次重绘都执行查询语句会很影响速度 所以我将重绘颜色放在Button的clck事件中 请问有什么好的解决办法吗另外建一個表(陣列)來存... 比如說,每次要標為紅色時,就把那格的坐標填到自己的陣列去 這樣重繪的時候,只要查表,就知道要不要畫顏色上去 算是以空間換取時間的方法 當然,如果資料會變動的話,有些細節要留意就是了 |
huyang
一般會員 發表:23 回覆:26 積分:9 註冊:2003-11-20 發送簡訊給我 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |