ListBox im Dialog



  • Hallo!

    Kann mir jemand sagen, wie ich ein CListCtrl in meinen Dialog einhaengen kann???

    CListCtrl listBox;
    listBox.Create(WS_VISIBLE|WS_BORDER|LVS_REPORT, CRect(20,20,120,150),this,IDC_LIST1);

    Dialogname: CSafetyGuideDlg_Doc

    Danke
    Matthias



  • Hallo, na das sieht doch schon ganz gut aus.
    Die Variable 'listBox' mußt du aber zu mindest als Member deiner Dialog-Klasse declarieren, weil die sonst nur lokal in der aufrufenden Funktion gültig ist und nach dem Verlassen nicht mehr zur Verfügung steht.

    Die ID IDC_LIST1 muß auch auch vorhanden sein, z.B. 'const UINT IDC_LIST1 = 101;' (VORSICHT diese Bezeichnungen werden auch vom Assistenten gewählt - also lieber 'ne andere EIGENE Bezeichnung wählen, damit nichts schief geht, oder die ID direkt angeben)

    Gruß mathi



  • danke...



  • Hallo nichmal!

    Und wie kann ich jetzt in die zweite Spalte einen Wert eingeben??

    listBox.InsertColumn(0, "Hazard-Key");
    listBox.InsertColumn(1, "Status");

    listBox.SetColumnWidth(0,250);
    listBox.SetColumnWidth(1,50);

    listBox.InsertItem(0,"test",0); schreibt in 1te Splate
    listBox.InsertItem(1,"test",0); schreibt auch in 1te Splate

    Danke Matthias



  • Hmm, wie man am Besten mit dem CListCtrl umgeht weiß ich auch nicht. Hab aber mal was ausprobiert. Die Spalten sind wohl das, was in der MSDN als SubItems bezeichnet wird. So ganz verstehe ich das CListCtrl auch noch nicht, aber folgendes sollte ersteinmal funktionieren:

    listBox.InsertColumn(0, "Hazard-Key");
    listBox.InsertColumn(1, "Status");
    
    listBox.SetColumnWidth(0,250);
    listBox.SetColumnWidth(1,50);
    
    int anz = listBox.GetCountPerPage(); //Zeilen, die ins Control passen (ohne ScrollBalken)
    
    for(int i = 1; i<=anz; i++)
    {
        listBox.InsertItem(i-1, "", 0);
    }
    
    listBox.SetItemText(5,1,"Hallo");       //Zeile 6, Spalte 2
    

    Gruß mathi



  • InsertColumn:
    Erzeugt eine Column im ListCtrl

    InsertItem:
    Erzeugt eine neu Zeile im ListCtrl

    SetItemText:

    Setzt den Text je nach Parameterübergabe deines Items

    So wie es mathi geschrieben hat.
    Gibt aber auch etwas in der FAQ darüber



  • Hier die komplette Loesung:

    Bei InsertColumn musst du angeben, welchen Index du mit der Splalte verbindest (Fett):

    listBox.InsertColumn(0, "Hazard-Key", NULL, 270, 0);
    listBox.InsertColumn(1, "Status", NULL, 50, 1);

    listBox.SetItemText(0,0,"Spalte1Zeile1");
    listBox.SetItemText(0,0,"Spalte1Zeile2");
    listBox.SetItemText(0,1,"Spalte2Zeile1");
    listBox.SetItemText(0,1,"Spalte2Zeile2");

    Ergebnis:

    Hazard-Key Status
    Spalte1Zeile1 Spalte2Zeile1
    Spalte1Zeile2 Spalte2Zeile2

    Gruss

    Matze

    [ Dieser Beitrag wurde am 17.09.2002 um 10:50 Uhr von na_ich editiert. ]



  • na_ich:

    Bevor du ein SetItemText machst solltest du ein Item einfügen.
    SetItemText auf 0,0 geht nur wenn es auch ein Item gibt.


Anmelden zum Antworten