查找所选单元格是否在范围内

时间:2012-08-28 07:33:44

标签: delphi

所以我有一个StringGrid,我想找出例如当前选择的单元格是否在1,1和2,2之内,如果是这样,将值i更改为1.这可能吗? 我也想知道是否有可能为单个细胞做到这一点。因此,假设所选单元格为0,0它将执行showmessage('error');这将全部通过按钮点击激活。

1 个答案:

答案 0 :(得分:2)

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

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;