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

如何求取StringGrid指定的Cells(ACol,ARow)的Pixels(x,y)座標值

答題得分者是:RaynorPao
lo
初階會員


發表:8
回覆:69
積分:25
註冊:2003-01-12

發送簡訊給我
#1 引用回覆 回覆 發表時間:2003-02-06 21:58:31 IP:210.85.xxx.xxx 未訂閱
請問先進 如何求取StringGrid指定的Cells(ACol,ARow)的Pixels(x,y)座標x,y值 請指導一個範例.謝謝 老菜鳥 發表人 - lo 於 2003/02/06 22:01:45
RaynorPao
版主


發表:139
回覆:3622
積分:7025
註冊:2002-08-12

發送簡訊給我
#2 引用回覆 回覆 發表時間:2003-02-06 22:06:16 IP:61.221.xxx.xxx 未訂閱
引言: 如何求取StringGrid指定的Cells(ACol,ARow)的Pixels(x,y)座標x,y值 請指導一個範例.謝謝
lo 你好:
(1)每個 cell 有(左上/右上/右下/左下)四點,你想求哪一點呢?
(2)每個 cell 都可以事先知道 width 和 height,不是就可以大約求出每個
   cell 所在位置的 pixels 了嗎?
(>    -- 
        
------
-- 若您已經得到滿意的答覆,請適時結案!! --
-- 欲知前世因,今生受者是;欲知來世果,今生做者是 --
-- 一切有為法,如夢幻泡影,如露亦如電,應作如是觀 --
lo
初階會員


發表:8
回覆:69
積分:25
註冊:2003-01-12

發送簡訊給我
#3 引用回覆 回覆 發表時間:2003-02-06 22:33:22 IP:210.85.xxx.xxx 未訂閱
RaynorPao 兄 因我的sgr表欄位大小有許多種.對單一cell我會算.我想要在搜尋資料用 四角任一角都可.我會算出中心點 我想用在sgr1->Canvas->TextOut(int,int,string)上色,改字 你介紹的連結我有看了但能力還差一點請指教 謝謝 老菜鳥
RaynorPao
版主


發表:139
回覆:3622
積分:7025
註冊:2002-08-12

發送簡訊給我
#4 引用回覆 回覆 發表時間:2003-02-06 22:40:14 IP:61.221.xxx.xxx 未訂閱
引言: 因我的sgr表欄位大小有許多種.對單一cell我會算.我想要在搜尋資料用 四角任一角都可.我會算出中心點 我想用在sgr1->Canvas->TextOut(int,int,string)上色,改字 你介紹的連結我有看了但能力還差一點請指教
lo 你好: 「上色」跟「改字」請參考以下的做法 < class="code"> void __fastcall TForm1::StringGrid1DrawCell(TObject *Sender, int ACol, int ARow, TRect &Rect, TGridDrawState State) { if(ACol==1 && ARow==1) { StringGrid1->Canvas->Brush->Color=clRed; StringGrid1->Canvas->FillRect(Rect); StringGrid1->Canvas->TextOut(Rect.Left, Rect.Top, "ABCDEFG"); } } -- Enjoy Researching & Developing -- 發表人 - RaynorPao 於 2003/02/06 23:06:49
------
-- 若您已經得到滿意的答覆,請適時結案!! --
-- 欲知前世因,今生受者是;欲知來世果,今生做者是 --
-- 一切有為法,如夢幻泡影,如露亦如電,應作如是觀 --
lo
初階會員


發表:8
回覆:69
積分:25
註冊:2003-01-12

發送簡訊給我
#5 引用回覆 回覆 發表時間:2003-02-06 23:31:27 IP:210.85.xxx.xxx 未訂閱
RaynorPao 兄 你好: if(ACol==1 && ARow==1) 及 (Rect.Left, Rect.Top,)相對之間的關係我不清楚.我就是想求Rect.Left, Rect.Top的值不知如何是好 是不是動態中取得(ACol,ARow)後代入就可? 還不瞭解為何要用if(ACol==1 && ARow==1) 我的用法大約如下 String m=sgr1->Cells[i][j]; //...想改m的顏色及背景 sgr1->Canvas->Font->Color=clRed; sgr1->Canvas->Brush->Color=clYellow; sgr1->Canvas->FillRect(sgr1->CellRec(i,j)); sgr1->Canvas->TextOut(rl,rt,m); //..rl=Rect.Left, rt=Rect.Top用笨法求得後代入. 請指教
RaynorPao
版主


發表:139
回覆:3622
積分:7025
註冊:2002-08-12

發送簡訊給我
#6 引用回覆 回覆 發表時間:2003-02-06 23:40:42 IP:61.221.xxx.xxx 未訂閱
引言: if(ACol==1 && ARow==1) 及 (Rect.Left, Rect.Top,)相對之間的關係我不清楚.我就是想求Rect.Left, Rect.Top的值不知如何是好 是不是動態中取得(ACol,ARow)後代入就可? 還不瞭解為何要用if(ACol==1 && ARow==1) 我的用法大約如下 String m=sgr1->Cells[i][j]; //...想改m的顏色及背景 sgr1->Canvas->Font->Color=clRed; sgr1->Canvas->Brush->Color=clYellow; sgr1->Canvas->FillRect(sgr1->CellRec(i,j)); sgr1->Canvas->TextOut(rl,rt,m); //..rl=Rect.Left, rt=Rect.Top用笨法求得後代入. 請指教
lo 你好:
(1)我的 sample code 寫在 OnDrawCell 這個 event procedure 裡面,是因為
   在這裡處理你想要達成的目的,是最方便,也最適合的地方了
( >
    -- 
        
------
-- 若您已經得到滿意的答覆,請適時結案!! --
-- 欲知前世因,今生受者是;欲知來世果,今生做者是 --
-- 一切有為法,如夢幻泡影,如露亦如電,應作如是觀 --
lo
初階會員


發表:8
回覆:69
積分:25
註冊:2003-01-12

發送簡訊給我
#7 引用回覆 回覆 發表時間:2003-02-06 23:51:31 IP:210.85.xxx.xxx 未訂閱
RaynorPao 兄 你好: 大概了解了,現有點事,稍後我實驗一下如果有問題再請教 謝謝 老菜鳥
lo
初階會員


發表:8
回覆:69
積分:25
註冊:2003-01-12

發送簡訊給我
#8 引用回覆 回覆 發表時間:2003-02-07 01:54:06 IP:210.85.xxx.xxx 未訂閱
RaynorPao 兄 你好: 在StringGrid1DrawCell這裡沒問題. 但我在ButtonClick處理時 在sgr1->Canvas->TextOut(Rect.Left, Rect.Top,8);處compiler時出現 E2294 Structure required on left side of.or.*指示.不知如何解決 請再指導一下 謝謝 但是再研究你介紹的連結,我已可求得我要的 TRect CellRect; CellRect=sgr1->CellRect(ACol , ARow); rl=IntToStr(CellRect.Left),rt=IntToStr(CellRect.Top);
RaynorPao
版主


發表:139
回覆:3622
積分:7025
註冊:2002-08-12

發送簡訊給我
#9 引用回覆 回覆 發表時間:2003-02-07 08:29:10 IP:203.73.xxx.xxx 未訂閱
引言: 在StringGrid1DrawCell這裡沒問題. 但我在ButtonClick處理時 在sgr1->Canvas->TextOut(Rect.Left, Rect.Top,8);處compiler時出現 E2294 Structure required on left side of.or.*指示.不知如何解決 請再指導一下 謝謝 但是再研究你介紹的連結,我已可求得我要的 TRect CellRect; CellRect=sgr1->CellRect(ACol , ARow); rl=IntToStr(CellRect.Left),rt=IntToStr(CellRect.Top);
lo 你好: 看來你的問題已經解決了 不過~~你想要「上色」「換字」的那個 > 我舉一個例子好了,以下的程式碼會把 > class="code"> void __fastcall TForm1::StringGrid1DrawCell(TObject *Sender, int ACol, int ARow, TRect &Rect, TGridDrawState State) { if(ACol>=StringGrid1->Selection.Left && ACol<=StringGrid1->Selection.Right && ARow>=StringGrid1->Selection.Top && ARow<=StringGrid1->Selection.Bottom) { AnsiString asz=StringGrid1->Cells[ACol][ARow]; StringGrid1->Canvas->Brush->Color=clRed; StringGrid1->Canvas->FillRect(Rect); StringGrid1->Canvas->TextOut(Rect.Left, Rect.Top, asz); } } void __fastcall TForm1::Button1Click(TObject *Sender) { for(int i=StringGrid1->Selection.Left; i<=StringGrid1->Selection.Right; i ) { for(int j=StringGrid1->Selection.Top; j<=StringGrid1->Selection.Bottom; j ) { StringGrid1->Cells[i][j]=Edit1->Text; } } } 備註: 另外~~建議你多多利用 BCB Help 其實裡面有很多詳細的說明,以及 sample code 喔 --
------
-- 若您已經得到滿意的答覆,請適時結案!! --
-- 欲知前世因,今生受者是;欲知來世果,今生做者是 --
-- 一切有為法,如夢幻泡影,如露亦如電,應作如是觀 --
lo
初階會員


發表:8
回覆:69
積分:25
註冊:2003-01-12

發送簡訊給我
#10 引用回覆 回覆 發表時間:2003-02-07 09:32:02 IP:210.85.xxx.xxx 未訂閱
RaynorPao 兄 你好: 謝謝問題都解決了 我是在比對資料時用,對有相同資料的cell作標示. user 選擇的 cell bcb與c 同時學,才幾個月,還在浮淪吞的階段.bcb help經常有看沒有懂以後請多指導 謝謝 老菜鳥
系統時間:2024-04-29 13:56:04
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!