Neu erzeugtes Shape in Delphi durchs Formular laufen lassen?
Ich versuche, dass dauerhaft Shapes erzeugt werden und diese dann durchs Bild fahren. Nur treten kommen bei mir immerzu Fehlermeldungen, dass es eine Zugriffsverletzung gibt. Habt ihr Lösungen hier der Quelltext:
procedure TForm1.Timer1Timer(Sender: TObject)
var n:integer;
begin
Randomize;
begin
ShapeArray[i] := TShape.Create(Self);
ShapeArray[i].Parent := Self;
ShapeArray[i].SetBounds(200,30,30,200+n);
end;
end;
procedure TForm1.Timer2Timer(Sender: TObject);
begin
begin
ShapeArray[i].Left:=ShapeArray[i].Left -10;
end;
1 Antwort
Füge eine globale Variable „i“ hinzu um den Index für das ShapeArray zu speichern.
Initialisiere die Variable „n“ vor der Verwendung
var
i: Integer;
ShapeArray: array of TShape;
procedure TForm1.Timer1Timer(Sender: TObject);
var
n: Integer;
begin
Randomize;
n := Random(100); // oder eine andere gewünschte Obergrenze für die Zufallszahl
i := Length(ShapeArray);
SetLength(ShapeArray, i + 1);
ShapeArray[i] := TShape.Create(Self);
ShapeArray[i].Parent := Self;
ShapeArray[i].SetBounds(200, 30, 30, 200 + n);
end;
procedure TForm1.Timer2Timer(Sender: TObject);
var
j: Integer;
begin
for j := 0 to High(ShapeArray) do
begin
ShapeArray[j].Left := ShapeArray[j].Left - 10;
end;
end;