StringGrid 有一個屬性 Selection ,儲存被選中的起始位置至結束位置。
所以,只要判斷 cell 是否在 Selection 之內即可。

function IsCellSelected(StringGrid: TStringGrid; X, Y: Longint): Boolean;
begin
  Result := False;
  try
    if (X >= StringGrid.Selection.Left) and (X <= StringGrid.Selection.Right) and
      (Y >= StringGrid.Selection.Top) and (Y <= StringGrid.Selection.Bottom) then
      Result := True;
  except
  end;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
  if IsCellSelected(stringgrid1, 2, 2) then
    ShowMessage('Cell (2,2) is selected.');
end;

PS:StringGrid 的 multiselect 是一個範圍的方式, 而不能跳著選。

台南小新 發表在 痞客邦 PIXNET 留言(0) 人氣()