Column-Überschrift Abfragen (CListCtrl)


  • Administrator

    Also erstens, die Struktur heisst LVCOLUMN.
    Zweitens sollte man vielleicht eine Überprüfung reinsetzen:

    if(lvc.mask & LVCF_TEXT)
    {
        // ...
    }
    

    Und drittens, versuch mal dies hier:

    v_sColumnHeader.Format(_T("%s"), lvc.pszText);
    

    Grüssli



  • danke. hab ich gemacht, die fehlermeldung sieht zwar jetzt anders aus, aber der fehler ist immer noch der selbe.

    im debug hab ich folgende werte:
    lvc = {...} was mich etwas irritiert

    lvc.mask = 4
    lvc.pszText = 0xcccccccc "" bzw. CXX0030: Fehler: "Ausdruck kann nicht ausgewertet werden"

    aber diese zeile ist doch richtig? oder?

    c_lstList.GetColumn(3, &lvc);
    

    ps. LVCOLUMN ersetzt die alte LV_COLUMN unter vc6 geht beides.


  • Administrator

    Ach ich hab grad in der MSDN nachgeschaut. Sorry ... Fehler ...

    Die mask wird anderst verwendet, als ich dachte. Sie definiert, was du holen willst, bzw. bei SetColumn setzen willst.

    Also korrekt wäre es:

    LVCOLUMN lvc;
    lvc.mask = LVCF_TEXT;
    
    c_ListCtrl.GetColumn(3, &lvc);
    

    Die Überprüfung kannst dann weglassen. Sorry, mein Fehler. Ist etwas her, dass ich das letzte mal LVCOLUMN verwendet habe ^^

    Grüssli



  • ja, so hab ich mir das auch gedacht, aber es funzt nich.

    das das setzen der überschriften klappt, hab ich mal versucht sie direkt danach wieder abzufragen:

    LVCOLUMN lvc;
    lvc.mask = LVCF_TEXT | LVCF_WIDTH;
    lvc.cx = 80;
    lvc.pszText = "Wert";
    c_ListCtrl.InsertColumn(3, &lvc);
    lvc.pszText = "Parmeter";
    c_ListCtrl.InsertColumn(7, &lvc);  //soweit gehts
    
    lvc.mask = LVCF_TEXT;
    c_ListCtrl.GetColumn(3, &lvc); //lvc.pszText wird nicht aktualisiert
    

  • Administrator

    hast du jetzt das 3 und das 7 nur als Beispiel gemacht, oder ist das wirklich so? Also hast du keine Kolonne von 0 bis 2 und von 4 bis 6? Dann wäre nämlich dein GetColumn aufruf falsch. Die Kolonne 3 wird nämlich in deinem Beispiel an die Position 0 gestetzt und die Kolonne 7 an die Position 1. Kannst du auch erkennen über den Rückgabewert von InsertColumn. Somit kann GetColumn(3, ...) gar nicht funktionieren, da an der Stelle 3 gar keine Kolonne ist.

    Grüssli



  • Bei mir gehts.



  • klar hat jede column eine überschrift (hab nur die als bsp herausgezogen)



  • jemand noch ne idee, was ich noch falsch machen könnte?



  • Versuch das mal:

    LVCOLUMN lc;
    lc.mask = LVCF_TEXT;
    char szBuffer[100];
    lc.cchTextMax = 100;
    lc.pszText = szBuffer;
    
    c_ListCtrl.GetColumn( 0, &lc );
    


  • Hallo,
    @Airdamn, dein Vorschlag funktioniert, der hier auch:

    TCHAR lpBuffer[256];
    HDITEM hdItem;
    hdItem.mask = HDI_TEXT;
    hdItem.pszText = lpBuffer;
    hdItem.cchTextMax = 256;
    CString csstr;
    pListCtrl->GetHeaderCtrl()->GetItem(1,&hdItem);
    csstr = hdItem.pszText;
    

    was einem lieber ist 😕

    lg
    pixel


Anmelden zum Antworten