Eine Checkbox in einer Listbox als Element der Listbox plazieren?
-
Tag allerseits,
ist es moeglich, eine Checkbox als Element einer Listbox hinzuzufuegen?
gruss
v R
-
Glaube die Listbox macht das nicht mit. Beim ListView gehts schon.
-
Ah, sehr gut, danke. Aber wie genau funktioniert das? Ich erstelle eine
Listview mit dem Style LVS_EX_CHECKBOXES und LVS_SINGLESEL. Nur wie
fuege ich jetzt eine Checkbox der Liste hinzu?Ich habe mir mal einen Wrapper gebaut, der macht folgendes:
void ListView::add(HWND handle, const string_type& text) { LVITEM new_item; ListViewItem* new_listview_item = new ListViewItem; memset(&new_item, 0, sizeof(LVITEM)); new_item.mask = LVIF_STATE | LVIF_TEXT; new_item.iItem = items.size() + 1; new_item.pszText = (LPWSTR)text.c_str(); new_listview_item->key = reinterpret_cast<size_t>(handle); new_listview_item->caption = text; new_listview_item->item = new_item; items.push_back(new_listview_item); item_it = items.begin(); ListView_InsertItem(hwnd(), &new_listview_item->item); }ListViewItem ist eine eigene Struktur und dient lediglich zur internen Daten-
haltung. Wenn ich ein Element auf diese Art und Weise hinzufuege, dann hab
ich das Problem, dass es nicht als Checkbox-Element hinzugefuegt wird,
der entsprechende Style ist allerdings gesetzt, was hab ich uebersehen?gruss
v R
-
Ok, also das letzte Problem hab ich nun behoben, es reicht nicht, den Style
fuer die Checkboxes beim Erstellen anzugeben, man muss es danach explizit
setzen.Jetzt hab ich aber noch eine Frage, wenn die Liste in einer Spalte voll ist,
dann geht er hin und faengt an, neue Elemente in die naechste Spalte einzutragen.Ist es moeglich, dass die immer untereinander angeordnet sind und er nicht
automatisch eine neue Spalte anfaengt?gruss
v R
-
virtuell Realisticer schrieb:
Jetzt hab ich aber noch eine Frage, wenn die Liste in einer Spalte voll ist,
dann geht er hin und faengt an, neue Elemente in die naechste Spalte einzutragen.Ist es moeglich, dass die immer untereinander angeordnet sind und er nicht
automatisch eine neue Spalte anfaengt?Das verstehe ich nicht! Hast Du mehrere Spalten?
Das ListCtrl fängt gar nichts an von selbst in neue Spalten und Zeilen zu übertragen.
-
Martin Richter schrieb:
virtuell Realisticer schrieb:
Jetzt hab ich aber noch eine Frage, wenn die Liste in einer Spalte voll ist,
dann geht er hin und faengt an, neue Elemente in die naechste Spalte einzutragen.Ist es moeglich, dass die immer untereinander angeordnet sind und er nicht
automatisch eine neue Spalte anfaengt?Das verstehe ich nicht! Hast Du mehrere Spalten?
Das ListCtrl fängt gar nichts an von selbst in neue Spalten und Zeilen zu übertragen.Ich hab mich wahrscheinlich nur falsch ausgedrueckt. Habe ich so viele Elemente
hinzugefuegt, dass der sichtbare Bereich voll ist, dann faengt er an, neben
dem ersten Element das neue Elementen hinzuzufuegen (ist ja quasi die neue
Spalte).Ich liefere mal besser einen Screenshot
:http://img221.imageshack.us/img221/2782/guiproblemcv9.jpg
Ich haette gern, dass man die Elemente einfach untereinander einfuegt und
ggf. eine vertikale Scrollbar erzeugt wird.gruss
v R
-
Setze den Stil LVS_REPORT und nicht LVS_LIST
-
Martin Richter schrieb:
Setze den Stil LVS_REPORT und nicht LVS_LIST
Das hab ich auch schon versucht, allerdings werden dann die Elemente nicht
mehr hinzugefuegt. Muss ich dann den Code zum Hinzufuegen der Elemente noch
irgendwie aendern?gruss
v R
-
Dann musst Du mindestens eine Spalte hinzufügen mit ListView_InsertColumn
-
Martin Richter schrieb:
Dann musst Du mindestens eine Spalte hinzufügen mit ListView_InsertColumn
Super geil, so funktionierts, danke!
gruss
v R