In Delphi 2010 is there any way to detect which cell was clicked when dgRowSelect
is set to True ?
Normally I would use the OnCellClick(Column: TColumn)
event handler, but this does not work as expected. With dgRowSelect = False
this procedure gets passed the column that was clicked, but with dgRowSelect = True
this procedure is passed the first column, regardless of which column was clicked.
I can't work out where the code is that calls the OnCellClick
passing in the TColumn
parameter, if I could find that I might be able to work out how to fix this odd behaviour.
You can use the mouse coordinates to get the column. After calling TDBGrid.MouseCoord
, the returned TGridCoord.X
contains the column number, and the Y
contains the row (which, of course, you already have):
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;
More info on TGridCoord
in the documentation.
Tested using the same app used for my answer to your previous question.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With