6

Delphi 2010 ではdgRowSelect、 True に設定されているときにクリックされたセルを検出する方法はありますか?

通常はOnCellClick(Column: TColumn)イベント ハンドラを使用しますが、期待どおりに動作しません。このdgRowSelect = False手順では、クリックされた列が渡されますが、dgRowSelect = Trueこの手順では、クリックされた列に関係なく、最初の列が渡されます。

この奇妙な動作を修正する方法を見つけることができたとしてもOnCellClick、パラメーターの受け渡しを呼び出すコードがどこにあるのかわかりません。TColumn

4

1 に答える 1

15

マウス座標を使用して列を取得できます。を呼び出した後TDBGrid.MouseCoord、返さTGridCoord.Xれる には列番号がY含まれ、 には行が含まれます (もちろん、既に持っています)。

procedure TForm1.DBGrid1CellClick(Column: TColumn);
var
  Pt: TPoint;
  Coord: TGridCoord;
  ClickCol: Integer;
begin
  Pt := DBGrid1.ScreenToClient(Mouse.CursorPos);
  Coord := DBGrid1.MouseCoord(Pt.X, Pt.Y);
  ClickCol := Coord.X;
  ShowMessage('You clicked column ' + IntToStr(ClickCol));
end;

詳細についてTGridCoordは、ドキュメントを参照してください。

以前の質問への回答に使用したのと同じアプリを使用してテストしました。

于 2012-12-18T17:09:43.317 に答える