DBGrid 如何做到滑鼠只用單鍵增加多選? |
答題得分者是:wameng
|
bestlong
站務副站長 發表:126 回覆:734 積分:512 註冊:2002-10-19 發送簡訊給我 |
目標:
想要將程式做出拋轉單據的功能, 所以要利用另一個 Form 來列出清單
然後讓使用者選擇需要的多筆紀錄, 但是多選都要配合按住 Ctrl 鍵.
使用者希望能只用滑鼠單擊或雙擊點選多筆紀錄. 問題:
本想用 DBGrid.OnMouseDown 事件來處理.
才發現 DBGrid 在有資料顯示的時候, 滑鼠點選資料的 Cell 都不會引發 OnMouseDown 事件, 只有在標題列會有引發. 而改用 OnClick 或 OnDblClick 來處理.
每點選一次先前所選的都 UnSelect 了. 請問要如何用標準元件 DBGrid 來達成單擊或雙擊來增加多選呢? 我是雪龍
------
http://blog.bestlong.idv.tw/ http://www.bestlong.idv.tw/ http://delphi-ktop.bestlong.idv.tw/ |
shinjie
資深會員 發表:12 回覆:275 積分:287 註冊:2003-03-19 發送簡訊給我 |
提供一個方法,利用程式模擬Ctrl
在DBGRID的OnCellClick加入
keybd_event(VK_CONTROL,29,KEYEVENTF_EXTENDEDKEY OR 0 ,0); //按住Ctrl
在DBGRID的OnExit加入
keybd_event(VK_RCONTROL,29,KEYEVENTF_EXTENDEDKEY OR KEYEVENTF_KEYUP ,0);//離開DBGRID時Ctrl按鍵放開 如果控制的好的話,應該可以達到你的需求
------
我將在茫茫人海中尋訪我唯一之靈魂伴侶。 得之;我幸。不得;我命。 |
wameng
版主 發表:31 回覆:1336 積分:1188 註冊:2004-09-16 發送簡訊給我 |
如您所願!..... 在 Type 加入以下程式碼
type
TDBGrid = class(DBGrids.TDBGrid)
protected
procedure MouseDown(Button: TMouseButton; Shift: TShiftState;X, Y: Integer);Override;
end; TForm1 = class(TForm)
..... .....
procedure TDBGrid.MouseDown(Button: TMouseButton; Shift: TShiftState;X, Y: Integer);
begin
inClude(Shift,ssCtrl);
inherited MouseDown(Button,Shift,X, Y);
end; 這樣就可以了。
|
webber
初階會員 發表:54 回覆:76 積分:26 註冊:2004-04-20 發送簡訊給我 |
|
bestlong
站務副站長 發表:126 回覆:734 積分:512 註冊:2002-10-19 發送簡訊給我 |
引言: 如您所願!..... 在 Type 加入以下程式碼 type TDBGrid = class(DBGrids.TDBGrid) protected procedure MouseDown(Button: TMouseButton; Shift: TShiftState;X, Y: Integer);Override; end; TForm1 = class(TForm) ..... ..... procedure TDBGrid.MouseDown(Button: TMouseButton; Shift: TShiftState;X, Y: Integer); begin inClude(Shift,ssCtrl); inherited MouseDown(Button,Shift,X, Y); end; 這樣就可以了。這是最快速簡單的處理方法了, 我還在想要是我直接更動了系統原始碼, 那麼就會導致所有的 DBGrid 全部都有同樣的特性. 在想改變的 Form 中, 加入此段 Code 該 Form 中的所有 DBGrid 才會受影響. 我是雪龍
------
http://blog.bestlong.idv.tw/ http://www.bestlong.idv.tw/ http://delphi-ktop.bestlong.idv.tw/ |
webber
初階會員 發表:54 回覆:76 積分:26 註冊:2004-04-20 發送簡訊給我 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |