Dachte ich mir auch schon und hab deswegen das hier gebastelt.
Delphi-Quellcode:
procedure TForm1.bbtn_ErzeugenClick(Sender: TObject);
var Anzahl, i, j, k: Integer;
Ergebnis: real;
Help: String;
begin
if (lbledt_Anzahl.Text='') then Showmessage('Bitte geben Sie eine Zahl ein!')
else
begin
Anzahl:=StrToInt(lbledt_Anzahl.Text);
Ergebnis:=sqrt(Anzahl);
Help:=FloatToStr(Ergebnis);
j:=StrToInt(Help);
for i:=1 to j do
begin
for k:=1 to j do
begin
if TEdit(FindComponent('Edit'+IntToStr(Zahl)))=nil then
begin
edFeld:=TEdit.Create(Self);
with edFeld do
begin
Parent:=Self;
AutoSize:=False;
Name:='Edit'+IntToStr(Zahl);
Left:=(34*i)+20;
Top:=(34*k)+105;
Width:=35;
Height:=35;
Color:=clwhite;
Ctl3D:=False;
Text:='';
onClick:=Edit1Click;
end; //with
Zahl:=Zahl+1;
end; //if Komponenten suchen
end; //for k:=1
end; //for i:=1
end; //Fehlerabfang
end;
Haut soweit gut hin, solange es Zahlen wie 36 (Wurzel 6), 16(4) oder 25(5) sind. Bloß schon bei 20 scheiterte es, weil 4,4721... kein gültiger Integerwert ist. -.-
EDIT: Mh, ich will bei 20 ja z.B. 4 und 5 haben. Wenn ich dem jetzt sage, dass er für i abrunden und für j aufrunden soll? Dann hätte ich 4 und 5!
EDIT2: Nee, funktioniert nicht. Bsp: 14, da geht nur 2x7 und da ist nix mit auf- und abrunden.