Listbox
-
hi,
Kann ich mit einer Listbox mehrere Spalten machen und über jeder Spalte jeweils eine Leiste mit Titel? Wenn ja, wie? Wenn nein, mit welcher anderen windowclass?
Dankecu blue
-
Kann dir morgen 25.07 dazu ein Beispiel liefern. Komme heute nicht mehr an meinen Source dran
-
ListView
-
Hiermit erzeuge ich einen Listview mit 3 Spalten
in der ersten ein Icon, die 2. fürs Datum und die Dritte für Text
Bei Fragen die Hilfe des Visual C/C++ Compilers hilft jetzt glaube ich weiter,
da du jetzt einen Einsprung darin hast.static int USR_HISTORYVIEWER_GenHistWindow_ETZ(HMODULE hInst,HWND hDlg,HWND *hListView) { HIMAGELIST hSmall; HIMAGELIST hImage; LV_COLUMN col; LV_ITEM item; *hListView = CreateWindowEx(WS_EX_CLIENTEDGE, WC_LISTVIEW, "", WS_CHILD | WS_BORDER | WS_VISIBLE | WS_VSCROLL | LVS_REPORT | LVS_NOLABELWRAP | LVS_SINGLESEL | LVS_ICON | LVS_EDITLABELS, 6,270, 618,233, hDlg,NULL,NULL/*HInst*/,0); //Spalte 1 col.mask = LVCF_FMT | LVCF_WIDTH | LVCF_TEXT | LVCF_SUBITEM | LVCF_IMAGE; col.fmt=LVCFMT_LEFT | LVCFMT_COL_HAS_IMAGES ; col.pszText = (char*)"S"; col.cx =(int)(24); col.iSubItem = 1; col.cchTextMax = NORMSTRINGLEN; col.iImage = -1; ListView_InsertColumn (*hListView,1,&col); //Spalte 2 col.mask = LVCF_FMT | LVCF_WIDTH | LVCF_TEXT | LVCF_SUBITEM; col.fmt=LVCFMT_LEFT; col.pszText = (char*)"Zeit"; col.cx =(int)(70); col.iSubItem = 2; ListView_InsertColumn (*hListView,2,&col); //Spalte 3 col.mask = LVCF_FMT | LVCF_WIDTH | LVCF_TEXT | LVCF_SUBITEM; col.fmt=LVCFMT_LEFT; col.pszText = (char*)"Comment"; col.cx =(int)(705); col.iSubItem = 3; ListView_InsertColumn (*hListView,3,&col); ShowWindow (*hListView, SW_SHOW); UpdateWindow(*hListView); item.mask = LVIF_TEXT; item.iItem = ListView_GetItemCount(*hListView); item.iSubItem = 0; hImage = ImageList_Create(32, 32, ILC_COLOR8 | ILC_MASK, 1, 1); hSmall = ImageList_Create(16, 16, ILC_COLOR8 | ILC_MASK, 5, 1); ImageList_AddIcon(hSmall, LoadIcon(hInst, MAKEINTRESOURCE(IDI_ICON_ATP))); ImageList_AddIcon(hSmall, LoadIcon(hInst, MAKEINTRESOURCE(IDI_ICON_CAL))); ImageList_AddIcon(hSmall, LoadIcon(hInst, MAKEINTRESOURCE(IDI_ICON_ENG))); ImageList_AddIcon(hSmall, LoadIcon(hInst, MAKEINTRESOURCE(IDI_ICON_CMT))); ImageList_AddIcon(hSmall, LoadIcon(hInst, MAKEINTRESOURCE(IDI_ICON_ERROR))); ImageList_AddIcon(hSmall, LoadIcon(hInst, MAKEINTRESOURCE(IDI_ICON_ST1))); ImageList_AddIcon(hSmall, LoadIcon(hInst, MAKEINTRESOURCE(IDI_ICON_ST2))); ImageList_AddIcon(hSmall, LoadIcon(hInst, MAKEINTRESOURCE(IDI_ICON_ST3))); ImageList_AddIcon(hSmall, LoadIcon(hInst, MAKEINTRESOURCE(IDI_ICON_NONE))); ListView_SetImageList(*hListView, hImage, LVSIL_NORMAL); ListView_SetImageList(*hListView, hSmall, LVSIL_SMALL); return PASS; }
Hiermit trage ich eine Zeile in solch einen Listview ein
int Imago; //eine int von 0..7 die eines der oben geladenen Bilder auswählt LV_ITEM item; char szBuffer1[NORMSTRINGLEN]={""}; char szBuffer2[NORMSTRINGLEN]={""}; char szBuffer3[NORMSTRINGLEN]={""}; //szBuffer3 ist leer item.iItem = ListView_GetItemCount(hListView); item.pszText=szBuffer3; item.mask = LVIF_TEXT | LVIF_IMAGE | LVIF_PARAM; item.state =LVIS_FOCUSED|LVIS_SELECTED; item.iSubItem = 0; // Spaltenauswahl item.iImage = Imago; // Bildauswahl ListView_InsertItem(hListView,&item); //Texte szBuffer1 Datum //Texte szBuffer2 Text ListView_SetItemText(hListView,item.iItem,1,szBuffer1); ListView_SetItemText(hListView,item.iItem,2,szBuffer2);
Ich hoffe es hilft
-
Danke für die ausführliche Antwort!!!
Es hat geholfen!!!
-
hi,
Leider hab ich doch noch ein Problem. Wie kann ich einen Item in eine andere Spalte einfügen?
Mein Code:
/*ListView erstellen*/ hList = CreateWindowEx(VS_EX_FLATSB,WC_LISTVIEW,NULL,WS_VISIBLE|WS_CHILD|WS_BORDER|WS_VSCROLL|LVS_SHOWSELALWAYS|LVS_SINGLESEL|LVS_REPORT|LVS_NOLABELWRAP|LVS_NOSORTHEADER, ,0,700,250,hWnd,NULL,hInstance,NULL); /*Spalten einfügen*/ LVCOLUMN Column; Column.mask = LVCF_TEXT|LVCF_WIDTH|LVCF_FMT|LVCF_SUBITEM|LVCF_ORDER; Column.fmt = LVCFMT_CENTER; Column.cx = 50; Column.pszText = "Status"; Column.cchTextMax = strlen("Status"); Column.iOrder = 0; Column.iSubItem = 0; ListView_InsertColumn(hList, 0, &Column); Column.cx = 500; Column.pszText = "Name"; Column.cchTextMax = strlen("Name"); Column.iOrder = 1; Column.iSubItem = 1; ListView_InsertColumn(hList, 1, &Column); Column.cx = 150; Column.pszText = "IP"; Column.cchTextMax = strlen("IP"); Column.iOrder = 2; Column.iSubItem = 2; ListView_InsertColumn(hList, 2, &Column); /*Items einfügen*/ LVITEM Item; Item.mask = LVIF_TEXT; Item.iItem = 1; Item.iSubItem = 0; Item.pszText = "Hallo"; Item.cchTextMax = strlen("hallo"); ListView_InsertItem(hList, &Item); /*Item in die 2Spalte <<-- wird nicht angezeigt*/ Item.iItem = 1; Item.iSubItem = 1; ListView_InsertItem(hList, &Item);
Danke
-
Schau dich mal in der MSDN-Library um: Using List-View Controls - da ist auch ein Beispiel
-
Schau die mal das Stück Code an
item.iItem = ListView_GetItemCount(hListView); // Hole Anzahl der Zeilen in Listbox item.pszText=szBuffer3; item.mask = LVIF_TEXT | LVIF_IMAGE | LVIF_PARAM; item.state =LVIS_FOCUSED|LVIS_SELECTED; item.iSubItem = 0; item.iImage = Imago; //Bild ListView_InsertItem(hListView,&item); // Füge eine Zeile an, hier auch gleichzeitig füllen // mit Bild in Spalte 0 //Texte ListView_SetItemText(hListView,item.iItem,1,szBuffer1); // Fülle Spalte 1 deshalb die 1 in szBuffer1 steht //der Text den ich eintagen möchte ListView_SetItemText(hListView,item.iItem,2,szBuffer2); // Fülle Spalte 2 deshalb die 2 ....
Wie gut das es kein Help und keine Beispiele gibt