如何設定CTRL , SHIFT鍵 |
答題得分者是:Justmade
|
huangeider
高階會員 發表:288 回覆:492 積分:231 註冊:2003-02-26 發送簡訊給我 |
|
Justmade
版主 發表:94 回覆:1934 積分:2030 註冊:2003-03-12 發送簡訊給我 |
你是在那裡要這樣用丫?
很多元件本身就支援這功能,如在 ListBox / ListView 等元件只要設定
MultiSelect := true 就可以了 若是自訂的元件,就要靠你的程式碼去判定 onMouseDown event
procedure TForm1.ListView1MouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); begin if ssCtrl in Shift then // Ctrl is pressed begin .... end; if ssShift in Shift then // Shift is pressed begin .... end; end; |
huangeider
高階會員 發表:288 回覆:492 積分:231 註冊:2003-02-26 發送簡訊給我 |
引言: 你是在那裡要這樣用丫? 很多元件本身就支援這功能,如在 ListBox / ListView 等元件只要設定 MultiSelect := true 就可以了 若是自訂的元件,就要靠你的程式碼去判定 onMouseDown eventaricprocedure TForm1.ListView1MouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); begin if ssCtrl in Shift then // Ctrl is pressed begin .... end; if ssShift in Shift then // Shift is pressed begin .... end; end;小弟是在DBGRID內用的 選了MULTISELECT後 CTRL可以用 但SHIFT沒有選一區段的作用 照前輩的作法以下用在dbgrid中 沒有作用是不是要再自寫其它的程式碼? procedure TForm1.DBGrid1MouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); begin if ssCtrl in Shift then// Ctrl is pressed begin end; if ssShift in Shift then // Shift is pressed begin end; end; end. |
Justmade
版主 發表:94 回覆:1934 積分:2030 註冊:2003-03-12 發送簡訊給我 |
對 DBGrid 而言,即是自訂程式亦不易達成,因為 DBGrid.SelectedRows 變數是唯獨的,而 SelectedRows (TBookMarkList) 裡又沒入加入新 BookMark 的功能,即是說你不能直接修改這個 SelectedRows 的資料。 即使你承繼 TDBGrid 成為一個新元件再修改程式碼,理論上應可達到這個效果,但絕不簡單,這應是為甚麼 Borland 沒做這個功能罷, 參考 TCustomDBGrid 是甚樣處理 Ctrl-Click 的 :
procedure TCustomDBGrid.MouseDown(Button: TMouseButton; Shift: TShiftState; X, Y: Integer); begin ... ... if (dgMultiSelect in Options) and FDatalink.Active then with FBookmarks do begin FSelecting := False; if ssCtrl in Shift then CurrentRowSelected := not CurrentRowSelected else begin Clear; CurrentRowSelected := True; end; end; ... end;好像很容易,因為只對現在的記錄在設定。但若是 Shift,就要先移動回之前的 selected 再一筆一筆的移回現在的記錄並設定每筆為 selected ,也要考慮這樣移動使用者的 Table 不知會否帶來其他問題(如觸發 afterscroll等)。 Borland 一直沒包括這個功能可能是有他的道理的。 |
huangeider
高階會員 發表:288 回覆:492 積分:231 註冊:2003-02-26 發送簡訊給我 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |