0

因此,我有一个 StringGrid,例如,我想找出当前选定的单元格是否在 1,1 和 2,2 之间,如果是,请将值 i 更改为 1。这可能吗?我也想知道是否可以为单个单元格执行此操作。因此,假设所选单元格为 0,0,它将执行 showmessage('error'); 这一切都将通过单击按钮激活。

4

1 回答 1

2

在以下示例中IsCellInRange,如果使用数据类型的坐标指定的单元格TGridCoord位于数据类型指定的范围内,则函数返回 True,否则返回TGridRectFalse:

uses
  Math;

function IsCellInRange(const Cell: TGridCoord; const Range: TGridRect): Boolean;
begin
  Result := InRange(Cell.X, Range.Left, Range.Right) and
    InRange(Cell.Y, Range.Top, Range.Bottom);
end;

procedure TForm1.Button1Click(Sender: TObject);
var
  Cell: TGridCoord;
  Range: TGridRect;
begin
  Cell.X := StringGrid1.Col;
  Cell.Y := StringGrid1.Row;
  Range.Left := 1;
  Range.Top := 1;
  Range.Right := 2;
  Range.Bottom := 2;

  if IsCellInRange(Cell, Range) then
    StringGrid1.Cells[Cell.X, Cell.Y] := '1'
  else
    ShowMessage('Error, cell is not in range!');
end;
于 2012-08-28T07:43:57.817 回答