Подправьте процедуры и уберите лишнее из глобальных переменных. Хорошо бы и m убрать, но смотрите сами.
Код:
procedure TForm1.Button3Click(Sender: TObject);
begin
m:= strtoint(edit1.text);
Stringgrid1.colcount := m;
stringgrid1.Width:= stringgrid1.DefaultColWidth*(m+1);
end;
procedure TForm1.Button2Click(Sender: TObject);
var i : integer;
begin
for i:= 0 to m-1 do
stringgrid1.cells[i,0]:=inttostr(-127+random(255));
end;
procedure TForm1.Button4Click(Sender: TObject);
var a : array of integer;
j, buf, i :integer;
begin
SetLength(a, m);
for i := 0 to m-1 do
a[i] := StrToInt(StringGrid1.Cells[i,0]) ;
for i := 0 to m - 1 do
for j := i + 1 to m-1 do
if a[j] < a[i] then
begin
buf := a[i];
a[i] := a[j];
a[j] := buf;
end;
for I := 0 to m - 1 do
StringGrid1.Cells[i,0] := IntToStr(a[i]);
end ;