Verwendung von CListView



  • Hallo Forum,

    Ich muss für ein SDI-Programm die Ansichtsklasse CListView verwenden.
    Leider weiß ich nicht genau wie diese verwendet wird.

    bitte erklärt mir wie ich:
    -> Spalten erstellen und beschriften kann,
    -> Daten in die Liste hinzufügen und löschen kann und
    -> wie man auf ausgewählte Daten (Blau markiert) zugreifen kann.

    Es wäre super wenn ihr kleine Beispiele geben könnt 😉 .



  • Hi!
    Probiers mal so:
    Für folgendes in PreCreateWindow ein:

    cs.style |= LVS_SHOWSELALWAYS | LVS_REPORT | LVS_EX_FULLROWSELECT;
    

    Füg folgendes ein:

    #ifdef _DEBUG
    #define new DEBUG_NEW
    #undef THIS_FILE
    static char THIS_FILE[] = __FILE__;
    #endif
    
    //Eigener Code beginn
    #define NUM_COLUMN 4
    
    static _TCHAR *_gszColumnLabel[NUM_COLUMN] =
    {
        _T("Spalte 1"), _T("Spalte 2"), _T("Spalte 3"), _T("Spalte 4"), 
    };
    
    static int _gnColumnFmt[NUM_COLUMN] =
    {
        LVCFMT_LEFT, LVCFMT_LEFT, LVCFMT_LEFT,LVCFMT_LEFT
    };
    
    static int _gnColumnWidth[NUM_COLUMN] =
    {
        100, 250, 100, 250
    };
    

    Füg folgendes in OnInitialUpdate ein:

    LV_COLUMN lvc;
    
    lvc.mask = LVCF_FMT | LVCF_WIDTH | LVCF_TEXT | LVCF_SUBITEM;
    
    for(int i = 0; i < NUM_COLUMN; i++)
    {
        lvc.iSubItem = i;
        lvc.pszText = _gszColumnLabel[i];
        lvc.cx = _gnColumnWidth[i];
        lvc.fmt = _gnColumnFmt[i];
        GetListCtrl().InsertColumn(i, &lvc);
    }
    GetListCtrl().InsertItem(0,"HALLO",0);
    GetListCtrl().SetItemText(0,1,"HALLO");
    

    mfg *mike* 😃



  • Vielen Dank schon im voraus!



  • Original erstellt von <mike>:
    **Hi!
    Probiers mal so:
    Für folgendes in PreCreateWindow ein:

    cs.style |= LVS_SHOWSELALWAYS | LVS_REPORT | LVS_EX_FULLROWSELECT;
    

    Füg folgendes ein:

    #ifdef _DEBUG
    #define new DEBUG_NEW
    #undef THIS_FILE
    static char THIS_FILE[] = __FILE__;
    #endif
    
    //Eigener Code beginn
    #define NUM_COLUMN 4
    
    static _TCHAR *_gszColumnLabel[NUM_COLUMN] =
    {
        _T("Spalte 1"), _T("Spalte 2"), _T("Spalte 3"), _T("Spalte 4"), 
    };
    
    static int _gnColumnFmt[NUM_COLUMN] =
    {
        LVCFMT_LEFT, LVCFMT_LEFT, LVCFMT_LEFT,LVCFMT_LEFT
    };
    
    static int _gnColumnWidth[NUM_COLUMN] =
    {
        100, 250, 100, 250
    };
    

    Füg folgendes in OnInitialUpdate ein:

    LV_COLUMN lvc;
    
    lvc.mask = LVCF_FMT | LVCF_WIDTH | LVCF_TEXT | LVCF_SUBITEM;
    
    for(int i = 0; i < NUM_COLUMN; i++)
    {
        lvc.iSubItem = i;
        lvc.pszText = _gszColumnLabel[i];
        lvc.cx = _gnColumnWidth[i];
        lvc.fmt = _gnColumnFmt[i];
        GetListCtrl().InsertColumn(i, &lvc);
    }
    GetListCtrl().InsertItem(0,"HALLO",0);
    GetListCtrl().SetItemText(0,1,"HALLO");
    

    mfg *mike* :D**

    Hi Mike! 🙂

    Dein Beitrag hat mir auch sehr geholfen, aber...

    Wie bekomme ich eigene Daten in die Felder der Liste, und wie kann ich diese Daten in den 4 Spalten dann editieren??? 😮

    Über Hilfe wäre ich sehr , sehr dankbar !!! 😞
    (Is nämlich heut ein sch... Montag 😡 )

    MFG Oliver



  • Wie bekomme ich eigene Daten in die Felder der Liste, und wie kann ich diese Daten in den 4 Spalten dann editieren???

    Ich verstehe nicht so ganz was du Möchtest steht doch im beispiel drin SetItemText(...) und GetItemText(...) wenn du den Editieren wilst kannst du duch erst lesen und dann schreiben 😕

    Wenn es so sein soll als ob du im feld Editierst geht das glaube ich nicht direckt! aber wie währ es mit einem editfeld das du dadrüber legst macht dann denn anschein als ob direckt in die Tabelle hinein editiert wird!

    Ich hoffe das hilf etwas so am Montag 😢



  • Original erstellt von ldr-alpha:
    **Wenn es so sein soll als ob du im feld Editierst geht das glaube ich nicht direckt! aber wie währ es mit einem editfeld das du dadrüber legst macht dann denn anschein als ob direckt in die Tabelle hinein editiert wird!

    **

    🙄
    So meinte ich dat unjefähr... Dat mit Set und Get hat ich schon geschnalt.
    😞
    Ich dachte halt es gäb eine Möglichkeit a la Excel-Tabelle.
    Schön mit Spalten und Zeilen. Damit man auch mal eine Zeile löschen kann. Die Tabelle soll übrigens Koordinaten enthalten (X1, Y1, X2, Y2). Pro Zeile also einen Satz an Koordinaten.

    Nun denn.... 🕶
    Bis Morgen an alle da draus und viel Spaß beim Tippen...
    Vielleicht hat ja noch einer eine elegante Lösung auf Lager

    RanCarter
    🙂



  • Hi!
    Das mit dem editieren ist nicht ganz so einfach (leider). Ihr hattet recht, man muss da ein Edit "drüberlegen". Auf www.codeproject.com gibts ein paar tuts. Oder man machts einfach: Dialog mit den entsprechenden Daten laden. Reine Geschmackssache 😉

    mfg *mike* 😃



  • Original erstellt von <mike>:
    **Hi!
    Das mit dem editieren ist nicht ganz so einfach (leider). Ihr hattet recht, man muss da ein Edit "drüberlegen". Auf www.codeproject.com gibts ein paar tuts. Oder man machts einfach: Dialog mit den entsprechenden Daten laden. Reine Geschmackssache 😉

    mfg *mike* :D**

    Alles klar!
    I will see!

    Carter
    🙂



  • Und wie schaffe ich es nun dass ich die ganze Zeile markieren kann?


Anmelden zum Antworten