Как вы нашли, события Click
обычно связаны с действиями левой кнопки мыши. Для управления событиями кнопки мыши более широко используются события Mouse
.
В этом случае вы можете использовать событие OnMouseButtonDown.
Примечание: Это не точно соответствуют «щелчок», так как это происходит в ответ на начальной мыши вниз события, а не надежно реагировать на мышь-вниз прослежены по-а-мышь- в той же области контроля.
Однако, это часто достаточно хорошо.
OnMouseButtonDown событие включает в себя параметр, который идентифицирует Button
участвует и мышь X
и Y
позиций. Он также включает ShiftState
для обнаружения состояний клавиш Ctrl и/или Shift во время события (если это необходимо).
Вы можете использовать их для обнаружения правой кнопки мыши нажата в ваших фиксированных строк/столбцов:
procedure TfrmMain.StringGrid1MouseDown(Sender: TObject;
Button: TMouseButton;
Shift: TShiftState;
X, Y: Integer);
var
grid: TStringGrid;
col, row: Integer;
fixedCol, fixedRow: Boolean;
begin
grid := Sender as TStringGrid;
if Button = mbRight then
begin
grid.MouseToCell(X, Y, col, row);
fixedCol := col < grid.FixedCols;
fixedRow := row < grid.FixedRows;
if (fixedCol and fixedRow) then
// Right-click in "header hub"
else if fixedRow then
// Right-click in a "column header"
else if fixedCol then
// Right-click in a "row header"
else
// Right-click in a non-fixed cell
end;
end;