ListView Item kopieren



  • Hallo !

    Ich möchte in einem ListView Objekt(View Style = fsReport) ein vorhandenes Item (Caption)komplett mit SubItems an einer andere Stelle zusätzlich einfügen. Wollte aber nicht Insert benutzen und dann alle SubItems einzeln abfragen und dann zum neuen Eintrag hinzufügen.
    Habe schon

    TCustomListControl::CopySelection
    

    oder

    ListView->Items->AddItem(ListView->Selected,ListView->Items->Count);
    

    probiert, bekomme da aber nur einen nicht sichtbaren Eintrag (also leeren Eintrag), der wahrscheinlich nur eine Referenz auf das zu kopierende Item darstellt. Kann ich das irgendwie anders lösen ?
    Danke



  • Brechstangenmethode:
    (Die aber in 99,9% der Fälle auch korrekt funktionieren wird)

    int new_pos=0;
     if(ListView1->Selected)
      ListView1->Items->Insert(new_pos)->Assign(ListView1->Selected);
    

    Schönere Methode:

    int new_pos=0;
     if(ListView1->Selected)
     {
      TListItem* new_item=ListView1->Items->Insert(new_pos);
      if(new_item)
       new_item->Assign(ListView1->Selected);
      new_item=NULL;
     }
    


  • Danke werd ich probieren.
    Muß ich

    new_item=NULL;
    

    auf NULL setzen ?



  • Hallo

    Im gezeigten Code nicht. Wenn du das new_item auch noch nach der gezeigten Erstellung weiterverwenden willst darfst du sogar nicht auf NULL setzen (dazu muß natürlich die Deklaration aus dem if-scope verlagert werden).

    bis bald
    akari



  • Nein musst du nicht.
    Ich habs mir nur angewöhnt Pointer die ich nicht mehr brauche auf NULL zu setzen.


Anmelden zum Antworten