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

Drawgrid無法正常顯示圖形

答題得分者是:taishyang
aaparker
一般會員


發表:1
回覆:3
積分:0
註冊:2008-11-12

發送簡訊給我
#1 引用回覆 回覆 發表時間:2008-12-22 17:04:37 IP:125.224.xxx.xxx 訂閱
我要點選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

發送簡訊給我
#2 引用回覆 回覆 發表時間:2008-12-22 18:04:03 IP:118.169.xxx.xxx 訂閱
DrawGrid1SelectCell事件記錄所選的cell
繪圖的地方放在DrawGrid1DrawCell事件裡面
aaparker
一般會員


發表:1
回覆:3
積分:0
註冊:2008-11-12

發送簡訊給我
#3 引用回覆 回覆 發表時間:2008-12-22 19:11:37 IP:125.224.xxx.xxx 訂閱
謝謝大大的意見
可是請問一下,如何可以點選CELL後會出圓形
因為我可以在DrawGrid1DrawCell劃出圓形來,
但卻無法依照點選CELL後,顯示出圓形來
taishyang
站務副站長


發表:377
回覆:5490
積分:4563
註冊:2002-10-08

發送簡訊給我
#4 引用回覆 回覆 發表時間:2008-12-22 19:23:45 IP:118.169.xxx.xxx 訂閱
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

發送簡訊給我
#5 引用回覆 回覆 發表時間:2008-12-22 23:07:40 IP:125.224.xxx.xxx 訂閱
謝謝大大簡潔有力的程式 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

發送簡訊給我
#6 引用回覆 回覆 發表時間:2008-12-23 01:36:46 IP:125.224.xxx.xxx 訂閱
上一個回復我用2維陣列解決了


總而言之,還是謝謝前輩的熱心指導
系統時間:2024-04-20 20:05:16
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!