關於StringGrid多重選擇Cell的問題 |
尚未結案
|
01453
一般會員 發表:7 回覆:10 積分:3 註冊:2007-08-31 發送簡訊給我 |
各位前輩及高手,小弟我遇到了問題,找了站內很多文章,都沒有辦法順利解決。
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 發送簡訊給我 |
經過這幾天的測試,有一點點的小發現
問題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]
------
不斷學習,才能豐富人生! |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |