Ok, danke, das hat diesen Fehler schonmal beseitigt.
Ich habe (versucht) eine Klasse zu schreiben, die in der Lage ist (so ziemlich) beliebig viele TShape-Komponenten zu erzeugen und zu verwalten.
Sie enthält bis jetzt die Methoden
Delphi-Quellcode:
{ public-Teil }
procedure Move(x,y: integer; whichOne: integer = 0); { <- Position eines einzelnen oder aller Shapes verändern }
procedure Del(whichOne: integer = 0); { <- Einzelne oder alle Shapes löschen }
procedure Show(show: boolean = true; whichOne: integer = 0); { <- Einzelne oder alle Shapes anzeigen lassen }
procedure Resize(width,height: integer; whichOne: integer = 0); { <- Größe eines einzelnen oder aller Shapes verändern }
constructor Create(howMany,iWidth,iHeight: integer; { <- constructor, dem die "Startwerte" übergeben werden }
BrushStyle: TBrushStyle = bsSolid;
PenStyle: TPenStyle = psSolid;
ParentDing: TWinControl); { <- ???}
destructor Free; { <- destructor, der erst alle TShapes free't und dann die Klasse ansich }
Die TShapes werden in einem Array gespeichert:
Delphi-Quellcode:
{ private-Teil }
FShapeArray: array of TShape;
In der Theorie sollte das funktionieren, doch ein paar Fehler sind noch drin.
Welchen Datentyp muss denn
ParentDing im Constructor haben?
Der sieht übrigends su aus:
Delphi-Quellcode:
constructor TShapeControl.Create(howMany,iWidth,iHeight: integer;
BrushStyle: TBrushStyle = bsSolid;
PenStyle: TPenStyle = psSolid;
Parent: TWinControl); { <- ??? }
var i: integer;
begin
SetLength(FShapeArray, howMany);
for i:=0 to high(FShapeArray) do
FShapeArray[i] := TShape.Create(self);
with FShapeArray[i] do
begin
parent := ParentDing; { <- ParentDing }
height := iHeight;
width := iWidth;
left := 0;
top := 0;
brush.style := BrushStyle;
pen.style := PenStyle;
end;
end;
Ich hoffe ihr könnt mir helfen...