die einfachste und vielleicht auch perfomanteste Lösung wäre wie schon angesprochen wohl diese
Delphi-Quellcode:
private
LabelList: TList; //Liste in der die Labels gehalten werden
[...]
LabelList := TList.Create; //Liste muss natürlich erzeugt werden (im Create)
[...]
LabelList.Free; //und auch wieder zuerstört werden(im Destroy)
[...]
procedure TYourClass.ClearLabellist; //Diese Procedure gibt alle Labels frei
var LCount: Integer;
begin
for LCount := 0 to LabelList.Count - 1 do //und zwar in dem alle Labels aus der Liste freigegeben werden
TObject(LabelList.Items[LCount]).Free;
LabelList.Clear;
end;
[...]
var
i,j:integer;
begin
ClearLabelList; //befor neue Labels angelegt werden geben wir die alten Labels frei
Label4.Visible:=False;
Wort:=sl.Strings[random(sl.Count)];
Label4.Caption:=Wort;
j:=176;
for i:=1 to Label4.GetTextLen do
begin
Buchstabe:=TLabel.Create(nil);
Buchstabe.Parent:=Form1;
Buchstabe.Caption:=Copy(wort,i,1);
Buchstabe.Left:=j+20;
Buchstabe.Top:=176;
j:=Buchstabe.Left;
LabelList.Add(Buchstabe); //damits wieder freigegeben werden kann muss es noch in die Liste eingetragen werden
end;
end;