Что-то у вас переменных слишком много.
procedure TForm1.Button1Click(Sender: TObject);
var
n, i, j: integer;
begin
n := StrToInt(Edit1.Text);
StringGrid1.ColCount := n;
StringGrid1.RowCount := n;
for i := 0 to n - 1 do
with StringGrid1 do
begin
RowHeights[i] := (Height - n + 1) div n;
ColWidths[i] := (Width - n + 1) div n;
end;
for i := 0 to n - 1 do
begin
for j := 0 to n - i - 1 do
StringGrid1.Cells[j, i] := IntToStr(i + 1 + j);
for j := n - i to n - 1 do
StringGrid1.Cells[j, i] := IntToStr(n);
end;
end;
P.S. И if здесь, в общем-то, не нужен.