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

StringGrid 選取的框線程式要如何寫呢??

尚未結案
foxfire0906
一般會員


發表:6
回覆:3
積分:1
註冊:2008-09-05

發送簡訊給我
#1 引用回覆 回覆 發表時間:2008-09-05 15:47:23 IP:60.250.xxx.xxx 訂閱
我想更改選取範圍,同時要出現框線,不知道如何著手,這問題困擾已久,懇請各為大大幫忙,謝囉!!!




編輯記錄
foxfire0906 重新編輯於 2008-09-05 16:36:39, 註解 無‧
taishyang 重新編輯於 2008-09-05 16:53:51, 註解 歸類成[問題]‧
RaynorPao
版主


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

發送簡訊給我
#2 引用回覆 回覆 發表時間:2008-09-05 18:07:36 IP:210.208.xxx.xxx 訂閱
以下的範例程式,可以改變選取範圍的顏色,但是框線還沒有辦法,你先參考看看

[code cpp]
void __fastcall TForm1::StringGrid1DrawCell(TObject *Sender, int ACol,
int ARow, TRect &Rect, TGridDrawState State)
{
if(ARow>0 && ACol>0)
{
if(State.Contains(gdSelected))
{
StringGrid1->Canvas->Brush->Color=clGreen;
StringGrid1->Canvas->FillRect(Rect);
StringGrid1->Canvas->TextRect(Rect, Rect.Left 2, Rect.Top 2, StringGrid1->Cells[ACol][ARow]);
}
}
}
[/code]
------
-- 若您已經得到滿意的答覆,請適時結案!! --
-- 欲知前世因,今生受者是;欲知來世果,今生做者是 --
-- 一切有為法,如夢幻泡影,如露亦如電,應作如是觀 --
foxfire0906
一般會員


發表:6
回覆:3
積分:1
註冊:2008-09-05

發送簡訊給我
#3 引用回覆 回覆 發表時間:2008-09-05 18:15:54 IP:60.250.xxx.xxx 訂閱

版主大大 ~

我想問的就是框線的問題,因為框線的範圍主要表示另一各grid對應的部份
papjaj
一般會員


發表:11
回覆:15
積分:5
註冊:2007-01-29

發送簡訊給我
#4 引用回覆 回覆 發表時間:2008-09-16 09:25:44 IP:219.87.xxx.xxx 訂閱

[code cpp]
TRect rect;
rect.Left = StringGrid1->CellRect(col,row).Left;
rect.Right = StringGrid1->CellRect(col,row).Right;
rect.Top = StringGrid1->CellRect(col,row).Top;
rect.Bottom = StringGrid1->CellRect(col,row).Bottom;

StringGrid1->Canvas->Brush->Color = clRed;
StringGrid1->Canvas->FrameRect(rect);

[/code]

這個可以讓滑鼠在拖曳string grid時所點選的那格出現框框
但是多格的我沒試過
herbert2
尊榮會員


發表:58
回覆:632
積分:878
註冊:2004-04-16

發送簡訊給我
#5 引用回覆 回覆 發表時間:2008-11-01 16:52:30 IP:211.72.xxx.xxx 訂閱
補充樓上提供的方案

[code cpp]
void __fastcall TForm1::StringGrid1DrawCell(TObject *Sender, int ACol, int ARow, TRect &Rect,
TGridDrawState State)
{
// goDrawFocusSelected = True, DefaultDrawing = True
TCanvas *oxCanv = StringGrid1->Canvas;
TColor ixColor = StringGrid1->Canvas->Brush->Color;
// 因 State.Contains(gdFocused) 時, DefaultDrawing 會再做 FrameRect() 蓋掉本段所繪的框, 故內縮 1 Pixel
TRect R1(Rect.Left 1,Rect.Top 1,Rect.Right-1,Rect.Bottom-1);
if (!State.Contains(gdFixed) && State.Contains(gdSelected)) {
oxCanv->Brush->Color = clRed;
oxCanv->FrameRect(R1);
oxCanv->Brush->Color = ixColor; // 復原
}
}
[/code]


===================引 用 foxfire0906 文 章===================
我想更改選取範圍,同時要出現框線,不知道如何著手,這問題困擾已久,懇請各為大大幫忙,謝囉!!!

foxfire0906
一般會員


發表:6
回覆:3
積分:1
註冊:2008-09-05

發送簡訊給我
#6 引用回覆 回覆 發表時間:2008-11-24 17:25:20 IP:60.250.xxx.xxx 訂閱
版主大大不好意思唷~~~  這問題在版面上停留這摸久仍未結案.
我想前面幾位大大可能搞錯方向了..

原本我的困難處在於, 一格的虛線框,變成對應的1X1 或 1x2 2x1 2x2 ...格的虛線框囉,
可能一開始問題沒有說清楚,造成大家的困擾,實在對不起大家!!!!!
herbert2
尊榮會員


發表:58
回覆:632
積分:878
註冊:2004-04-16

發送簡訊給我
#7 引用回覆 回覆 發表時間:2008-11-24 17:38:04 IP:211.72.xxx.xxx 訂閱
所以您要的是:不管選了多少格,都只要一個外框?
若真要如此,就真的很難了!因 TStringGrid 是一個 Cell 一個 Cell 處理畫面。

===================引 用 foxfire0906 文 章===================
版主大大不好意思唷~~~ 這問題在版面上停留這摸久仍未結案.
我想前面幾位大大可能搞錯方向了..

原本我的困難處在於, 一格的虛線框,變成對應的1X1 或 1x2 2x1 2x2 ...格的虛線框囉,
可能一開始問題沒有說清楚,造成大家的困擾,實在對不起大家!!!!!
foxfire0906
一般會員


發表:6
回覆:3
積分:1
註冊:2008-09-05

發送簡訊給我
#8 引用回覆 回覆 發表時間:2008-11-24 22:10:17 IP:59.105.xxx.xxx 訂閱
如最上面圖所示,選定的是1x3的虛線框,我不曉得原作者是如何辦到,不過我最終想得到的結果就是如圖那樣.
系統時間:2017-11-19 18:31:00
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!