Listfeld mit mehreren Spalten



  • Hallo!

    Möchte Daten ausgeben in einem Listfeld. Da mehrere verschiedene Daten in eine Zeile geschrieben werden möchte ich das Listfeld in Spalten unterteilen (wie z.B. Excel) jedoch weis ich nicht wie das geht oder muss man da etwas anderes als ein Listfeld verwenden!

    Danke

    Andi



  • CListCtrl* pList = (CListCtrl*) GetDlgItem(ID_DEINER_LISTE);
    
    pList->InsertColumn(0, ("Spalte 1"), LVCFMT_LEFT, 100); // Die 100 legt die Größe fest ...
    pList->InsertColumn(1, ("Spalte 2"), LVCFMT_LEFT, 100);
    pList->InsertColumn(2, ("Spalte 3"), LVCFMT_LEFT, 100);
    
    ....
    

    Gruß
    :: NoName ::



  • ...und mit SetItemText(zeile, spalte) setzt du den Text der Unterspalte.
    Und das List View Control in den "Report Mode" setzen



  • Hallo!

    Danke für die rasche Antwort!
    Werd es gleich ausprobieren!

    mfg Andi



  • Hallo!

    Hab jetzt das CListCtrl schon ausprobiert. Mit InsertItem() mache ich mir die entsprechenden Spalten, was auch funktioniert. Das Problem ist, dass SetItemText(Zeile, Spalte) nicht funktionert.
    Ich rufe diesen Befehl auf SetItemText(1,1,"Text Zeile1 Spalte1"); jedoch passiert gar nichts. Es wird kein Text angezeigt.
    Was mach ich hier falsch??

    Tschau



  • jep, das gleiche problem hab ich auch.

    in der dokumentation hab ich das so verstanden, dass man
    die spaltenköpfe irgendwie mit irgendeiner headerklasse
    füllen soll 😕 das hab ich dann irgendwie probiert, hat aber
    rein garnichts gebracht...



  • Servus,

    nicht mit InsertItem macht man sich eine Spalte, sondern damit macht man sich eine Reihe.

    Erst mit InsertColumn die Spalte, dann mit InsertItem das Element (eine Reihe). Es geht wahrscheinlich nicht, weil das erste Item immer den Index -> NULL (0) hat. Das gleiche gilt für die Spalte.

    also:

    SetItemText(0,0, "Zieh der Katze am Schwanz");
    

    Schittebön 😃

    *winke*
    Hellsgore



  • Hallo

    mache dir Spalten mit

    m_ctlReport.InsertColumn(0, "Spalte 1", LVCFMT_LEFT, 100, -1);
    m_ctlReport.InsertColumn(1, "Spalte 2", LVCFMT_LEFT, 100, 0);
    m_ctlReport.InsertColumn(2, "Spalte 3", LVCFMT_LEFT, 100, 1);
    m_ctlReport.InsertColumn(3, "Spalte 4", LVCFMT_LEFT, 100, 2);
    

    und fülle sie dann mit:

    for (int i=0; i<10; i++)
    {
        m_ctlReport.InsertItem(i, "Text 1");
        m_ctlReport.SetItemText(i, 1, "Text 2");
        m_ctlReport.SetItemText(i, 2, "Text 3");
        m_ctlReport.SetItemText(i, 3, "Text 4");
    }
    

    Wichtig ist das die Nummern der Subitems stimmen



  • Hy!

    Habs jetzt nocheinmal ausprobiert und es funktioniert jetzt!!!!

    Danke


Anmelden zum Antworten