Drawgrid無法正常顯示圖形 |
答題得分者是:taishyang
|
aaparker
一般會員 發表:1 回覆:3 積分:0 註冊:2008-11-12 發送簡訊給我 |
我要點選Drawgrid元件的CELL可以顯示園形
可是當我點選時CELL無法正常的顯示圓形 不過實際上應該可以顯示才對,也不知道問題出在哪,我的程式碼如下 void __fastcall TForm1::DrawGrid1SelectCell(TObject *Sender, int ACol, int ARow, bool &CanSelect) { TRect rt; rt=DrawGrid1->CellRect(ACol,ARow); if(CanSelect==true){ DrawGrid1->Canvas->Pen->Color=clYellow; DrawGrid1->Canvas->Brush->Color=clYellow; int nHeight=rt.Bottom-rt.Top; DrawGrid1->Canvas->Ellipse(rt.Left,rt.Top,rt.Left nHeight,rt.Top nHeight); ShowMessage(IntToStr(rt.Left)); } } |
taishyang
站務副站長 發表:377 回覆:5490 積分:4563 註冊:2002-10-08 發送簡訊給我 |
|
aaparker
一般會員 發表:1 回覆:3 積分:0 註冊:2008-11-12 發送簡訊給我 |
|
taishyang
站務副站長 發表:377 回覆:5490 積分:4563 註冊:2002-10-08 發送簡訊給我 |
DrawGrid1SelectCell事件記錄所選的cell
繪圖的地方放在DrawGrid1DrawCell事件裡面 int gRow; int gCol; //--------------------------------------------------------------------------- __fastcall TForm1::TForm1(TComponent* Owner) : TForm(Owner) { } //--------------------------------------------------------------------------- void __fastcall TForm1::DrawGrid1SelectCell(TObject *Sender, int ACol, int ARow, bool &CanSelect) { gRow = ARow; gCol = ACol; } //--------------------------------------------------------------------------- void __fastcall TForm1::DrawGrid1DrawCell(TObject *Sender, int ACol, int ARow, TRect &Rect, TGridDrawState State) { if (gRow | gCol){ TRect rt; rt=DrawGrid1->CellRect(gCol, gRow); DrawGrid1->Canvas->Pen->Color=clYellow; DrawGrid1->Canvas->Brush->Color=clYellow; int nHeight=rt.Bottom-rt.Top; DrawGrid1->Canvas->Ellipse(rt.Left,rt.Top,rt.Left nHeight,rt.Top nHeight); } } //--------------------------------------------------------------------------- |
aaparker
一般會員 發表:1 回覆:3 積分:0 註冊:2008-11-12 發送簡訊給我 |
謝謝大大簡潔有力的程式 GOOD
然而如果要讓顯示多個不同顏色圓形卻不知如何達到 ,我記得,板上有大大說可用陣列, TList...)記下哪些 Grid 被按過, 然後用記下的資料判斷 ACol, ARow是否被按過, 如果按過就畫, 沒按過就Pass,我試著用二維陣列去做,但程式卻不太能跑 void __fastcall TForm1::DrawGrid1DrawCell(TObject *Sender, int ACol, int ARow, TRect &Rect, TGridDrawState State) { int arr[6][7]; for(int i=0;i<=5;i ){ for(int j=0;j<=6;j ){ arr[i][j]=0; } } TRect rt; if (gRow | gCol ){ arr[gRow][gCol]=1; //用陣列去記住有選過的地方 } for(int i=0;i<=5;i ){ for(int j=0;j<=6;j ){ if(arr[i][j]==1){ rt=DrawGrid1->CellRect(j, i); DrawGrid1->Canvas->Brush->Color=clYellow; int nHeight=rt.Bottom-rt.Top; DrawGrid1->Canvas->Ellipse(rt.Left,rt.Top,rt.Left nHeight,rt.Top nHeight); } } } } 不知道有什麼好解決方法 |
aaparker
一般會員 發表:1 回覆:3 積分:0 註冊:2008-11-12 發送簡訊給我 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |