TListView makierte Zeileninhalt wiedergeben



  • Guten Tag Community,

    habe eine so ähnliche Frage schon mal gestellt, jedoch waren in einem Thread mehrere Fragen, da die Faust regel besagt, dass man pro Thread eine Frage stellt, versuche ich es hier nocheinmal.

    Ich habe eine TListview Komponente, dort lese ich wie folgt die Daten ein.

    verkürtze Version
    {
    TListItem *Item;
    TListColumn *Column;
    
      Column = ListView1->Columns->Add();
      Column->Caption = "Name"; 
      Column->Width = 100;
    
      Column = ListView1->Columns->Add();
      Column->Caption = "Nachname";
      Column->Width = 100;
    
    for Schleife
    
    	Item = ListView1->Items->Add();
    	Item->Caption = Name;
    	Item->SubItems->Add(Vorname);
    }
    

    Nun steht im ListView zb.

    1. Zeile: Max Mustermann

    Nun die Frage

    Wie gelingt es mir, wenn ich auf diese Zeile klicke, dass diese Daten nochmal extra in einem Label oder Memo angezeigt werden?

    und

    besteht die Möglichkeit auf einzelne Items zuzugreifen?
    Wenn man nur zb. den Vorname extra nochmal angezeigt haben möchte



  • Hallo

    Könnte man auch durch ein genaues Lesen der BCB-Hilfe selbst beantworten

    int item = ...;
      int spalte = ...;
      AnsiString text = ListView1->Items->Item[item]->SubItems->Strings[spalte];
    

    bis bald
    akari



  • Ich habe den C++ Builder 2010, soweit mir bekannt ist funktioniert die Hilfestellung (noch) nicht!

    Vielen Dank für den Post akari

    nun

    wie muss ich

    int item = ...;
    int spalte = ...;
    

    den einen Wert zuweisen?



  • Hallo

    Na kommt drauf an was du haben willst. Das aktuell ausgewählte Item ist sogar noch leichter auszuwerten :

    TListItem* sel = ListView->Selected;
    if (sel)
    {
      AnsiString Text = sel->SubItems->Strings[spalte];
    }
    

    bis bald
    akari



  • Hallo

    genau, wenn ich eine Zeile makiere sollen die ganzen Inhalte in dieser Zeile angezeigt werden, zb Memofeld.

    Sorry wenn ich so dumm Frage, aber wie muss ich jetzt die Spalte bestimmen?



  • Hallo,

    Strings[spalte] erwartet den Spaltenindex. Wenn du den kennst schreib ihn rein, andernfalls gibt es glaub ich so etwas wie "FindColumn"?!

    LG, Micha



  • Hallo,

    vorerst vielen Dank für die Posts.

    Hab es jetzt soweit, dass es beim klick auf die Zeile, der erste Column, sprich

    Column->Caption = "Name";

    inhalt angezeigt wird, nun wie ist das auf die Zeile zu übertragen, besser auf die einzelnen Columns?

    TListItem *SelItem = ListView1->Selected;
    	TItemStates selected = TItemStates() << isSelected;
    
    	AnsiString makierterText;
    
    	if (SelItem) // wenn überhaupt eins ausgewählt wurde
    	{
    
    			makierterText = SelItem->Caption;
    			ShowMessage(makierterText);	
    
    	}
    


  • Vielen Dank, ich glaube ich bin selbst auf eine Lösung gekommen, wenn es ganz funktioniert, kann ich ja mal den Code posten,

    Vielen Dank an euch!


Anmelden zum Antworten