Hey,
ich möchte gerne Shapes dynamisch erzeugen.
Dafür habe ich mir gedacht ich mach das in einem Array.
Ich mach das aber in einer zweiten
Unit (um das schön objectorientiert zu machen ..).
Ich hab das wie folgt umgesetzt ABER trotzdem haben nach dem erzeugen alle Einträge in meinem Array den wert "Nil" und wenn ich damit weiter arbeiten möchte bekomme ich fehlermeldungne (weil ja nichts da ist zum drauf zugreifen .. )
könnt ihr mir sagen woran es liegt ?
Delphi-Quellcode:
procedure TVerw.Add_Ufo(Starty,StartX,Geschwin : integer;
Sender :TComponent; Unterlage : TWinControl);
begin
SetLength(Ufo_Arr,Length(Ufo_Arr) + 1 );
Ufo_Arr[Length(Ufo_Arr)] := TUfo.Create(StartX,StartY,Geschwin,Sender);
Ufo_Arr[Length(Ufo_Arr)].Parent := Unterlage; // => das Form auf dem es Dargestellt werden soll
Ufo_Arr[Length(Ufo_Arr)].Name := 'Ufo' + IntToStr(Length(Ufo_Arr)) ;
Ufo_Arr[Length(Ufo_Arr)].Shape :=stCircle;
Ufo_Arr[Length(Ufo_Arr)].Brush.Color := ClBlue ;
Ufo_Arr[Length(Ufo_Arr)].Width := Ufo_Breite ;
Ufo_Arr[Length(Ufo_Arr)].Height := Ufo_hoehe ;
Ufo_Arr[Length(Ufo_Arr)].Show;
end;
außerdem habe ich die Create Routine ein wenig verändert, aber ich denke nicht, dass es daran liegt ..
nur zur sicherheit hier die veränderte Create Routine :
Delphi-Quellcode:
// Tufo ist vom Type TShape
constructor TUfo.Create(StartKoX, StartKoY, Geschwindigkeit: integer; Owner : TComponent );
begin
inherited Create(Owner) ;
Left := StartKoX ;
Top := StartKoY ;
Rich_Arr[1] := Geschwindigkeit ;
Rich_Arr[2] := 0 ;
Muenze := false ;
end;