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

關於StringGrid多重選擇Cell的問題

尚未結案
01453
一般會員


發表:7
回覆:10
積分:3
註冊:2007-08-31

發送簡訊給我
#1 引用回覆 回覆 發表時間:2007-10-11 13:51:04 IP:60.248.xxx.xxx 訂閱
各位前輩及高手,小弟我遇到了問題,找了站內很多文章,都沒有辦法順利解決。
1.我將StringGrid的options中的goRangeSelect開啟,讓使用者可以用滑鼠拖曳一塊cell區域,但是Focused的cell永遠都是我按下滑鼠左鍵時的cell,而不是拖放後的最後一個cell,我不知道該如何完成此功能。
2.當我在用滑鼠拖曳cell時,若此時利用滑鼠的滾輪來選擇下一行的cell,則變成一開始被Focus的cell往下一格,且剛才選擇的區域都不見了,怎麼才能讓滑鼠的滾輪只控制scrollbar,不會影響到我選擇的cell。
3.當我選擇某一個cell時,將對應此cell的fixed cell ([0,ARow] & [ACol,0])做特效,以突顯選擇的cell,我有參考http://delphi.ktop.com.tw/board.php?cid=30&fid=69&tid=83227的文章,但是結果並不是我想要的。

上述的問題,有看過別人做過,但是他是用VC,測試的圖片http://delphi.ktop.com.tw/download/upload/470db663d45f7_StringGrid.JPG,而如今我想用BCB完成同樣的功能,但是卻浪費了二個星期卻不能突破,希望各位能幫我理出一些頭緒,謝謝!
------
不斷學習,才能豐富人生!
01453
一般會員


發表:7
回覆:10
積分:3
註冊:2007-08-31

發送簡訊給我
#2 引用回覆 回覆 發表時間:2007-10-16 19:06:21 IP:60.248.xxx.xxx 訂閱
經過這幾天的測試,有一點點的小發現
問題1:目前還沒有解決方法。
問題2:我發現可以利用http://delphi.ktop.com.tw/board.php?cid=168&fid=913&tid=87852的方法達到目的,且只要將程式修改成
[code cpp]
Perform(WM_VSCROLL,SB_LINEUP ,0) 或Perform(WM_VSCROLL,SB_LINEDOWN ,0)
[/code]
問題3:測試出可利用DrawEdge( )完成,可是我發現若DrawEdge()放在DrawCell的函式內,功能無法顯示,但是若把程式放在SelectCell的函式內,則正常,可是當我移動ScrollBar時,cell [0,ARow]的特效就會不見,且快速拉動ScrollBar時,連cell [ACol,0] 的特效也會不見,不知道有誰能指點我一下,謝謝!

[code cpp]
void __fastcall TForm6::StringGrid1DrawCell(TObject *Sender, int ACol, int ARow,
TRect &Rect, TGridDrawState State)
{
TRect aRect;
if(State.Contains(gdFocused)) {
aRect = StringGrid1->CellRect(0,ARow);
DrawEdge(StringGrid1->Canvas->Handle,&aRect,BDR_SUNKENINNER,BF_RECT);
aRect = StringGrid1->CellRect(ACol,0);
DrawEdge(StringGrid1->Canvas->Handle,&aRect,BDR_SUNKENINNER,BF_RECT);
}
}
[/code]
------
不斷學習,才能豐富人生!
系統時間:2024-11-25 23:40:06
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!