Не очень понятно, все-таки.
У TStringGrid есть несколько обработчиков событий, которые могут быть полезны для решения этой задачи :
Код:
//Если Пользователь "выбрал" ячейку (кроме Fixed-ячеек)
procedure TForm1.StringGrid1SelectCell(Sender: TObject; ACol, ARow: Integer;
var CanSelect: Boolean);
begin
ShowMessage('StringGrid1SelectCell: ACol='+IntToStr(StringGrid1.Col)+' ARow='+IntToStr(StringGrid1.Row));
end;
//Если Пользователь "щелкнул" один раз в области компонента (кроме Fixed-ячеек)
procedure TForm1.StringGrid1Click(Sender: TObject);
begin
ShowMessage('StringGrid1Click: ACol='+IntToStr(StringGrid1.Col)+' ARow='+IntToStr(StringGrid1.Row));
end;
//Если Пользователь "щелкнул" дважды в области компонента (кроме Fixed-ячеек)
procedure TForm1.StringGrid1DblClick(Sender: TObject);
begin
ShowMessage('StringGrid1DblClick: ACol='+IntToStr(StringGrid1.Col)+' ARow='+IntToStr(StringGrid1.Row));
end;
//Реакция на событие: "нажатие" кнопкой мышки в области компонента
//Здесь - на любой ячейке (включая и Fixed)
procedure TForm1.StringGrid1MouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
Var
ACol,ARow : integer;
begin
StringGrid1.MouseToCell(X, Y, ACol, ARow);
ShowMessage('StringGrid1MouseDown: ACol='+IntToStr(ACol)+' ARow='+IntToStr(ARow));
end;
Последний обработчик - вообще "универсальный".
Реагирует на щелчок мышкой в любой области компонента.
Можно их комбинировать.
Некоторые (из них) исключают друг-друга.
Если есть StringGrid1MouseDown или StringGrid1SelectCell, то StringGrid1Click и StringGrid1DblClick "пролетают" ...