Hola
TavoBran,,
podrías hacer varios cambios
Código:
type
TArrEdits = array of array of TEdit;
procedure CrearEdits(var Edits:TArrEdits; MaxX, MaxY:integer);
var
I, J:integer;
begin
Button1.Visible := False;
for i:=0 to MaxX-1 do
for J:=0 to MaxY-1 do
begin
Edits[I, J] := TEdit.Create(Self);
Edits[I, J] .Text := '';
Edits[I, J] .Top := 21 * (i + 1);
Edits[I, J] .Left := 21 * (j + 1);
Edits[I, J] .Width := 20;
Edits[I, J] .Height := 20;
Edits[I, J] .AutoSize := False;
Edits[I, J] .Enabled := False;
Edits[I, J] .Parent := Panel1;
Button3.Visible := True;
end;
end;
procedure llenarEdits(var Edits:TArrEdits; MaxX, MaxY:integer);
var
I, J:integer;
begin
for i:=0 to MaxX-1 do
for J:=0 to MaxY-1 do
begin
Edits[I, J].text :=IntToStr(Random(100));
end;
end;
procedure TForm1.Button1Click(Sender: TObject);
var
ArrEdits:TArrEdits;
MX, MY:integer; //maximo de columnas y filas
begin
//pedir al usuario los valores de MX y MY
SetLength(ArrEdits, MX, MY); //Aquí se establece las dimenciones del array en dos dimensiones
CrearEdits(ArrEdits);
llenarEdits(ArrEdits);
end;
Un detalle que falto en el anterior ejemplo es que los parámetros debes declararlos por referencia.
Otra observación: los Arrays dinámicos empiezan en cero(0).
Saludos,