1
我有一個TDBGrid的後代,允許選擇多行。檢測TDbGrid的裝訂線(左邊距)中的點擊?
我想打開,當他們在陰溝裏點擊這個模式,和關閉,當他們在網格中的任何單元格單擊。
有沒有在onmousedown事件的事件處理程序我可以檢測他們點擊的方法嗎?
我有一個TDBGrid的後代,允許選擇多行。檢測TDbGrid的裝訂線(左邊距)中的點擊?
我想打開,當他們在陰溝裏點擊這個模式,和關閉,當他們在網格中的任何單元格單擊。
有沒有在onmousedown事件的事件處理程序我可以檢測他們點擊的方法嗎?
OnMouseDown
是困難的;你可以通過X
和Y
參數到事件的座標,並通過類型轉換的TDBGrid
將其轉換爲行和列的始祖TCustomGrid
:
var
Coord: TGridCoord;
begin
Coord := TCustomGrid(DBGrid1).MouseCoord(X, Y);
if Coord.X = 0 then
// We're in the "gutter"
end;
然而,似乎OnMouseDown
只火的TDBGrid
當標題行被點擊。
OnCellClick
似乎是一個可能的選擇,但它只能在實際的細胞(不包括排水溝和標題行)火災,所以它不會起作用。 OnColEnter
也不會,因爲它不會在你想要的時候觸發。
它看起來像你的最好的辦法是使用標準按Ctrl和移改性劑與鼠標左鍵做你的多重選擇,如同在Windows中所有其他應用程序,並多選。
'OnMouseDown'很困難;你可以得到座標,但是你必須跟蹤這些座標下的列,看看它是否正確。但是,'TDBGrid.OnCellClick'應該可以工作。你也可以看看'OnColEner'。 –
在此處測試:OnCellClick(顧名思義)僅在單元格單擊時觸發,所以這是我需要的1/2。它可以關閉多選。 但是,我仍然需要一種方法來檢測他們是否點擊排水溝,所以我可以打開它。我只需要知道他們是否正在點擊列0左邊的左側。 – Tom
OnCellClick不起作用;它不會在排水溝上開火。 OnMouseDown可以工作,但它似乎只在標題行(包括陰溝)上觸發,並且您必須執行一些工作來檢索單擊的實際單元格。我想你最好使用標準按鍵進行多選 - 「Ctrl + Click」和「Shift + Click」 - 就像Windows中的其他應用程序一樣。 :) –