Hallo @all
Ich habe ein kleines Problem mit dem ich nicht weiter komme.
Während der Laufzeit des Programm erstelle ich TLabels und will die auch wieder während der Laufzeit löschen.
Nun, also zum Problem...
Ich kann die TLabels nicht mehr löschen da ich immer den Fehler des Index außerhalb des gültigen Bereiches komme.
Der Index ist jedoch zum Zeitpunkt 5 und componentcount hat 62 Objekte zu diesem zeitpunkt...
Ein Hinweis noch... Lösche ich den TLabel mit Namen direkt funktioniert es (z.B. Label6.free)
Zur Entwurfszeit weiß ich jedoch noch nicht wieviele TLabel ich bekomme.
Wo ist mein Fehler?????
Hier erst einmal der Source Code zum erstllen.
Delphi-Quellcode:
procedure TForm6.BitBtn10Click(Sender: TObject);
var
x,y:integer;
a:TLabel;
begin
x:=1;
for y:=0 to componentcount-1 do
if components[y]is TLabel then x:=x+1;
a:=TLabel.Create(Form6);
a.name:='Label'+inttostr(x);
a.Parent:=Form6;
a.Left:=100;
a.Font.Size:=12;
a.Font.Style:=[fsbold];
a.Top:=50;
a.tag:=37;
a.OnMouseMove:=Image1Mousemove;
a.OnClick:=statictext6click;
end;
Hier das Procedure zum löschen.
Delphi-Quellcode:
procedure TForm6.BitBtn8Click(Sender: TObject);
var
x:integer;
f:textfile;
a:Timage;
b:TMemo;
c:TLabel;
s:string;
begin
opendialog1.filterindex:=1;
if OpenDialog1.Execute then
begin
x:=0;
while x<componentcount-1 do
if (components[x])is TLabel then
begin
with components[x]do
begin
if (Name<>'Label1')and(Name<>'Label2')and(Name<>'Label3')
and(Name<>'Label4')and(Name<>'Label5')and(Name<>'Form6')
then
begin
components[x].free;
x:=x-1;
end;
end;
x:=x+1;
end;
Danke für eure Hilfe im Vorraus
Rainer Groer
[edit=Phoenix]Delphi-Tags eingefügt. Das nächste mal bitte selber machen. Mfg, Phoenix[/edit]