お気づきのように、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;