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

StringGrid的Cell上色問題

尚未結案
khaupe
一般會員


發表:28
回覆:25
積分:15
註冊:2003-06-30

發送簡訊給我
#1 引用回覆 回覆 發表時間:2005-07-25 03:04:59 IP:218.165.xxx.xxx 未訂閱
狀況說明: 先說聲抱歉 , 標題下得不是很好 , 我知道Cell上底色的問題很簡單 , 但我的情況略有不同. 我希望程式有以下功能: 1.有個TColor陣列 , 有個RowCount=2的StringGrid , 一個按鈕 2.Button按一下 , Cell[0][1]上底色 color=TColor[0] , RowCount 3.Button再按一下 , Cell[0][2]上底色 color=TColor[1] , RowCount . . . 依此類推 目前做法: 其實我也只會很基本的 , 就像下文提的方法 http://delphi.ktop.com.tw/topic.php?topic_id=74924 雖然我是用TAdvStringGrid , 但試過DrawCell與GetCellColor , 都有同一個問題----Button按第二下時 , 第一下設定的顏色被清除 . 按第三下時 , 第二下的被清除 我想是因為整個StringGrid的Canvas重畫的關係 請問這有辦法解決嗎?? -------------------------------------------------------- 我目前的解決方案是: 每按一下 , 就將每個cell對應的顏色紀錄到一個陣列去 然後每次都全部畫一次 但這樣挺麻煩的 , 且覺得在這種功能上用這麼多code很礙眼 可以利用StringGrid本身的功能而有更簡單的作法嗎?
rogan321
高階會員


發表:21
回覆:307
積分:200
註冊:2003-05-15

發送簡訊給我
#2 引用回覆 回覆 發表時間:2005-07-25 12:22:42 IP:220.130.xxx.xxx 未訂閱
會麻煩嗎? 既然都已丟到陣列,那一個for迴圈不就解決了~~還好吧
RedSnow
版主


發表:79
回覆:1322
積分:845
註冊:2003-12-15

發送簡訊給我
#3 引用回覆 回覆 發表時間:2005-07-25 15:13:42 IP:59.115.xxx.xxx 未訂閱
khaupe 您好:    既然都已經動用 DrawCell 程序了,那就無所謂 "每次都重畫" 的問題了,因為無論是否有變更底色,StringGrid 都僅在有需要作重繪動作時,才會觸發 DrawCell 程序。 對於 Cell 填上不同底色的問題,您僅需在 DrawCell 程序中抓取繪製的 Row 值,並將對應於 Row 的顏色值取出設給 Brush 的 Color,然後填滿對應的格子即可,例如:
TColor c[16] = {clBlack, clMaroon, clGreen, clOlive,
                clNavy, clPurple, clTeal, clGray,
                clSilver, clRed, clLime, clYellow,
                clBlue, clFuchsia, clAqua, clWhite};    void __fastcall TForm1::StringGrid1DrawCell(TObject *Sender, int ACol,
      int ARow, TRect &Rect, TGridDrawState State)
{
    if (ACol == 0 && ARow > 0) {
        StringGrid1->Canvas->Brush->Color = c[ARow-1];
        StringGrid1->Canvas->FillRect(Rect);
    }
}    void __fastcall TForm1::Button1Click(TObject *Sender)
{
    StringGrid1->RowCount  ;
}
以上範例未做最佳化與防錯處理,請自行加上相關設定與檢查動作。 7 天天敲鍵盤 v 時時按滑鼠 8
khaupe
一般會員


發表:28
回覆:25
積分:15
註冊:2003-06-30

發送簡訊給我
#4 引用回覆 回覆 發表時間:2005-08-05 01:07:21 IP:220.142.xxx.xxx 未訂閱
感謝RedSnow的指導 , 我要的功能已經做出來了    雖然沒什麼 , 但得之於本站也該回饋本站 因此抽出這部份功能在以下連結 http://delphi.ktop.com.tw/topic.php?TOPIC_ID=76254
系統時間:2024-05-09 19:46:35
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!