Kontrollkästchen in Liste einfügen



  • Hallo

    Ich habe folgendes Problem. Ich habe eine Liste in die ich gerne Kontrollkästchen einfügen würde. Also praktisch in der Ersten Reihe sollte man die einzelnen Zeilen auswählen und dann durch betätigen eines Buttons die restlichen gelöscht werden. Leider habe ich absolut keine Ahnung wie ich das anstellen sollte. Für Hilfe währe ich seht dankbar.

    Gruß Salfador



  • Hi.

    Um die Checkboxen einzufügen, brauchst du ein ListCtrl. Bei Eigenschaften musst du bei Ansicht Bericht auswählen. Dann deklarierst du darauf ein Control und rufst die Funktion SetExtendedStyle() auf.

    CListCtrl m_cList;
    m_cList.SetExtendedStyle(LVS_EX_CHECKBOXES | LVS_EX_FULLROWSELECT | LVS_EX_INFOTIP);
    

    Allerdings ist das regieren auf die Eingabe ein bisschen komplizierter. Dafür musst du LVN_ITEMCHANGED abfragen.



  • Hallo

    danke für die schnelle Antwort. Funktionier so weit wunderbar. Mit LVN_ITEMCHANGED blick ich noch nicht so ganz. Aus der Beschreibung in der MSDN bi auch nicht schlau geworden Bei normalen Kontrollkästchen wird ja einfach die Membervariable auf true oder false gesetzt. Wie kann ich aber in diesem Fall die einzelnen Kästchen abfragen?

    Gruß Salfador



  • Wie gesagt, dass ist ein bisschen kompliziert. CListCtrl hat nämlich keine Funktion, die den letzten Wert wiedergibt. Wenn du nicht so viele Boxen hast, kannst du einfach jedesmal, wenn LVN_ITEMCHANGED gesendet wird, den Wert von allen Boxen abfragen. Um das jetzt abzufragen, gibst du einfach folgendes in der Message map deiner Klasse an:

    ON_NOTIFY(LVN_ITEMCHANGED, IDC_DEINELISTE, OnChanged)

    OnChanged() ist dann die Funktion, die bei jeder Veränderung der ListCtrl aufgerufen wird.



  • Habs gefunden

    for (int i = 0; i < m_list.GetItemCount(); ++i)
            {
    		if (m_list.GetCheck(i)==false)
    			{
    				m_list.DeleteItem(i);
    				--i;
    			}
    	}
    

    vieleicht ein Fall für die FAQ?
    gruß Salfador


Anmelden zum Antworten