1
TDBGridの子孫があり、複数の行を選択できます。TDbGridのガター(左余白)のクリックを検出しますか?
グリッターの中をクリックするとこのモードがオンになり、グリッドのセルをクリックするとオフになります。
OnMouseDownイベントハンドラで、クリックしている場所を検出できますか?
TDBGridの子孫があり、複数の行を選択できます。TDbGridのガター(左余白)のクリックを検出しますか?
グリッターの中をクリックするとこのモードがオンになり、グリッドのセルをクリックするとオフになります。
OnMouseDownイベントハンドラで、クリックしている場所を検出できますか?
OnMouseDown
は難しい。ときOnMouseDown
だけTDBGrid
のために発射しているようです、しかし
var
Coord: TGridCoord;
begin
Coord := TCustomGrid(DBGrid1).MouseCoord(X, Y);
if Coord.X = 0 then
// We're in the "gutter"
end;
:あなたは祖先TCustomGrid
だそれにTDBGrid
を型キャストすることで、イベントにX
とY
パラメータを経由して座標を取得し、行と列に変換することができますヘッダー行がクリックされます。
OnCellClick
は実際のセル(ガターとヘッダー行を除く)でのみ発生するため、動作しません。どちらもしたくないときは起動しないので、どちらもOnColEnter
になりません。
あなたの最良のオプションは複数選択し、Windowsの他のすべてのアプリのよう、あなたの複数選択を行うには、マウスの左ボタンで標準Ctrlキーとシフトに修飾子を使用することであろうように見えます。
「OnMouseDown」では難しいです。あなたは座標を得ることができますが、それらの座標の下の列を追跡し、それが正しいかどうかを確認する必要があります。しかし、代わりに 'TDBGrid.OnCellClick'が動作するはずです。 'OnColEner'を見ることもできます。 –
ここでのテスト:OnCellClick(名前が示すように)は、セルのクリックでのみ発生しますので、その1/2の必要があります。マルチセレクトをオフにすることができます。 しかし、私はまだガターをクリックするかどうかを検出する方法が必要なので、オンにすることができます。私は、単に列0の左の境界線の左にクリックしているかどうかを知る必要があります。 – Tom
OnCellClickは機能しません。ガターでは発火しません。 OnMouseDownは機能しますが、それはタイトル行(ガターを含む)でのみ発生するように見えます。実際にクリックされたセルを取得するにはいくつかの作業が必要です。私はあなたが、Ctrlキーを押しながらクリックすると、Shiftキーを押しながらクリックするだけで、マルチ選択のための標準的なキーを使用するより良いと思う - Windowsの他のすべてのアプリケーションと同様。 :) –