Guten Morgen, Allerseits.
Leider ist mir kein aussagekräftigerer Titel eingefallen - hier nun mein Problem:
Auf einem Panel werden zur Laufzeit 27x27 Labels erzeugt. Wird ein Label angeklickt, sollen in allen Labels der selben Spalte, die den gleichen Text enthalten wie das angeklickte Label, der Text gelöscht werden. Ich habe das so gelöst:
Delphi-Quellcode:
begin
TempLabel := System.Windows.Forms.&Label.Create;
// speichert das angeklickte Label in TempLabel
TempLabel := Sender as System.Windows.Forms.&Label;
for I := 0 to Self.Panel1.Controls.Count - 1 do
begin
if (Panel1.Controls[i].Left = TempLabel.Left)
AND (TempLabel.Text = Panel1.Controls[i].Text) then
begin
Panel1.Controls[i].Text := '';
end;
// Kontrollanzeige
TBText.Text := TBText.Text + i.ToString + ': ' + TempLabel.Text + ' - ' + Panel1.Controls[i].Text + #13#10;
end;
Dabei tritt folgendes Problem auf:
Wenn der erste Vergleich "true" ist, wird auch TempLabel.Text verändert und enthält dann einen leeren String, so dass alle weiteren Vergleiche "false" ergeben.
Ich kann mir das nicht erklären, da m.E. die Zuweisung des angeklickten Labels an TempLabel ausserhalb der Schleife vorgenommen wird und in der Schleife keine weitere Zuweisung erfolgt. Das scheint aber offensichtlich doch nicht so zu sein. Wo liegt mein Denkfehler?
Für jeden Hinweis bin ich wie immer dankbar.
mfg gfjs;