0

だから私は StringGrid を持っており、たとえば、現在選択されているセルが 1,1 と 2,2 の範囲内にあるかどうかを調べたい場合は、値 i を 1 に変更します。これは可能ですか? また、単一細胞でそれが可能かどうかも知りたいです。したがって、選択したセルが 0,0 の場合、showmessage('error'); を実行するとします。これはすべてボタンクリックでアクティブになります。

4

1 に答える 1

2

次の例では、データ型を使用して座標で指定されたセルがデータ型で指定された範囲内にあるIsCellInRange場合、関数は True を返し、そうでない場合は Falseを返します。TGridCoordTGridRect

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 に答える