Und zwar versuche ich mich (schon wieder) an einem 4-Gewinnt. Diesmal will ich das ganze etwas geschickter anzugehen, als beim letzten Mal. Der Anfang ist erstmal, alle Felder (in meinem Beispiel Shapes) zu erzeugen und richtig zu positionieren. Dafür hab ich ein 2dimensionales Array of TShape genommen.
Feld: array[1.. 8, 1.. 8] of TShape;
Mit folgendem Code will ich nun die Shapes erzeugen und positionieren:
Delphi-Quellcode:
procedure TForm1.FormPaint(Sender: TObject);
var i, j: integer;
begin
if not Shown then //damit es nur einmal ausgeführt wird
begin
For i := 1 to 7 do
for j := 1 to 7 do
begin
Feld[i, j] := TShape.Create(self);
With Feld[i, j] do
begin
Show;
Shape := stCircle;
Brush.Color := clWhite;
Parent := self;
end;
end;
Feld[1, 1].Left := 10; //das erste Feld vorgeben
Feld[1, 1].Top := 10;
For i := 2 to 7 do
For j := 2 to 7 do
begin
Feld[i, j].Left := Feld[i - 1, j].Left + Feld[i, j].Width + 5; //hier braucht man das jeweils vorherige Feld zum Positionieren
Feld[i, j].Top := Feld[i, j - 1].Top + Feld[i, j].Height + 5;
end;
end;
Shown := true;
end;
Das Problem: Es wird nur ein 6x6 Felder großes Spielfeld erzeugt. Die restlichen Shapes liegen oben links einfach herum, ohne irgendwie positioniert worden zu sein. Hat jemand eine Ahnung, warum?