Home » Tutorials » VCL » TList
TList
Schritt 2
Jetzt fügen wir folgenden Code in unser OnCreate-Ereignis ein:
Randomize; Objekte:=TList.Create; ZeichenFlaeche.Align:=alClient;
Im OnClose-Ereignis fügen wir Folgendes ein:
while Objekte.Count>0 do begin LoescheObjekt(Objekte[0]); Objekte.Delete(0); end; Objekte.Free;
Die LoescheObjekt-Prozedur werden wir später definieren.
Zuerst werden wir aber die verschiedenen Objekte erstellen. Jedesmal, wenn der Benutzer auf einen der Buttons klickt, soll ein Rechteck etc. erstellt werden.
Hierzu definieren wir zwei Prozeduren, eine für Bilder, eine für Formen:
public { Public-Deklarationen } Objekte:TList; AnGewaehlt:Integer; // welches Objekt ist gerade angewählt procedure NeuesBild(FileName:String); procedure NeueForm(WelcheForm:Integer); end; procedure THauptform.NeuesBild(FileName:String); var Bild:^BildTyp; begin New(Bild); with Bild^ do begin Typ:=1; X:=0; y:=0; Image:=TBitmap.Create; // Speicher zuweisen Image.LoadFromFile(FileName); // Laden Width:=Image.Width; Height:=Image.Height; end; Objekte.Add(Bild); // zu unseren Objekten hinzufügen AnGewaehlt:=Objekte.Count-1; // das neueste wird angewählt end; procedure THauptform.NeueForm(WelcheForm:Integer); var Form:^FormTyp; begin New(Form); with Form^ do begin Typ:=2; X:=Random(ZeichenFlaeche.ClientWidth div 2); { wir positionieren es einfach zufällig} y:=Random(ZeichenFlaeche.ClientHeight div 2); Width:=Random(ZeichenFlaeche.ClientWidth div 4)+10; Height:=Random(ZeichenFlaeche.ClientHeight div 4)+10; FormTyp:=WelcheForm; LinienFarbe:=clBlack; FuellFarbe:=clBlue; end; Objekte.Add(Form); AnGewaehlt:=Objekte.Count-1; // das neueste wird angewählt end;
Im nächsten Schritt werden wir die Prozedur schreiben, die unsere Objekte anzeigt (PaintIt), vorerst weisen wir den Buttons jeweils folgenden OnClick-Code zu:
Ein Rechteck:
<delphi NeueForm(1);
PaintIt;
Ein Kreis:
NeueForm(2); PaintIt;
Ein Bild:
if PictureDialog.Execute then NeuesBild(PictureDialog.FileName); PaintIt;