SubItemImages gehen nach ListItem1->Assign(ListItem2) verloren
-
Hallo,
folgender Code kopiert beim Sortieren mittels temporärem ListItem und Assign() das SubItemImage nicht mit. Weiß jemand warum?SubItemImage index 3 dem SubItem index 1 zuweisen
for (int i = 0; i < ListView1->Items->Count;i++) { if(ListView1->Items->Item[i]->SubItems->Strings[0] == player) ListView1->Items->Item[i]->SubItemImages[1] = 3; }
Aussschnitt aus dem Sortieralgo
TListItem* tmp = ListView1->Items->Add(); tmp->Assign(ListView1->Items->Item[i]); ListView1->Items->Item[i]->Assign(ListView1->Items->Item[i + 1]); ListView1->Items->Item[i + 1]->Assign(tmp); tmp->Delete();
-
Manchmal ist es sinnvoller sich über die Borlandhilfe hinaus über diverse Funktionen zu informieren
Assign kopiert nur bestimmte Eigenschaften und Daten. Ich habe den Dreiecktausch erweitert und so funktioniert es nun:
TListItem* tmp = ListView2->Items->Add(); tmp->Assign(ListView2->Items->Item[i]); tmp->SubItemImages[0] = ListView2->Items->Item[i]->SubItemImages[0]; ListView2->Items->Item[i]->Assign(ListView2->Items->Item[i + 1]); ListView2->Items->Item[i]->SubItemImages[0] = ListView2->Items->Item[i + 1]->SubItemImages[0]; ListView2->Items->Item[i + 1]->Assign(tmp); ListView2->Items->Item[i + 1]->SubItemImages[0] = tmp->SubItemImages[0]; tmp->Delete();
Ich tappte die ganze Zeit im Dunkeln mit der Annahme das Assign eine 1:1 Kopie aller Elemente des Items ermöglicht. AssignTo() deswegen zu überschreiben wäre im Angesicht des minimalen Nutzens/Aufwands eher mit Kanonen auf Spatzen...