ListView und Groups! Was mache ich nur falsch...
-
Hallo.
Windows XP unterstützt bei ListViews die Groups.<img src=http://www.swissdelphicenter.ch/screenshots/Tip1782.png></img>
ListView_InsertGroup() etc!
Ich habe eine einfügen können, aber nach der 1. ist Schluss. Wieso nur?LVGROUP lvg, lvg2, lvg3; lvg.cbSize = sizeof(LVGROUP); lvg.mask = LVGF_GROUPID | LVGF_ALIGN | LVGF_HEADER; lvg.pszHeader = L"Eine Group\0"; lvg.cchHeader = wcslen(lvg.pszHeader); lvg.iGroupId = 0; lvg.uAlign = LVGA_HEADER_LEFT; if(ListView_InsertGroup(GetDlgItem(hDlg, IDC_LIST), -1, &lvg) == -1) MessageBox(0, "Error 1", 0, 0); lvg2.cbSize = sizeof(LVGROUP); lvg2.mask = LVGF_GROUPID | LVGF_ALIGN | LVGF_HEADER; lvg2.pszHeader = L"Eine Group 2\0"; lvg2.cchHeader = wcslen(lvg2.pszHeader); lvg2.iGroupId = 1; lvg2.uAlign = LVGA_HEADER_LEFT; if(ListView_InsertGroup(GetDlgItem(hDlg, IDC_LIST), -1, &lvg2) == -1) MessageBox(0, "Error 2", 0, 0); lvg3.cbSize = sizeof(LVGROUP); lvg3.mask = LVGF_GROUPID | LVGF_ALIGN | LVGF_HEADER; lvg3.pszHeader = L"Eine Group 3\0"; lvg3.cchHeader = wcslen(lvg3.pszHeader); lvg3.iGroupId = 2; lvg3.uAlign = LVGA_HEADER_LEFT; if(ListView_InsertGroup(GetDlgItem(hDlg, IDC_LIST), -1, &lvg3) == -1) MessageBox(0, "Error 3", 0, 0);
-
das bild hat aber nix mit dem src zu tun

hast du mal probiert bei ListView_InsertGroup(..) die richtigen indices zu geben (0, 1, 2, ...) oder mal die erste group als 0 und alle folgenden mit -1
-
Ehm ja habe ich, es geht nicht. Es scheint nur immer der Code mit der ID 1 im Struct zu gehen.
-
Logisch wäre es doch so:
ListView_EnableGroupView(GetDlgItem(hDlg, IDC_LIST), true); LVGROUP lvg, lvg2, lvg3; //ZeroMemory(&lvg, 0); lvg.cbSize = sizeof(LVGROUP); lvg.mask = LVGF_GROUPID | LVGF_ALIGN | LVGF_HEADER; lvg.pszHeader = L"Eine Group\0"; lvg.cchHeader = wcslen(lvg.pszHeader); lvg.iGroupId = 0; lvg.uAlign = LVGA_HEADER_LEFT; if(ListView_InsertGroup(GetDlgItem(hDlg, IDC_LIST), 0, &lvg) == -1) MessageBox(0, "Error 1", 0, 0); //ZeroMemory(&lvg2, 0); lvg2.cbSize = sizeof(LVGROUP); lvg2.mask = LVGF_GROUPID | LVGF_ALIGN | LVGF_HEADER; lvg2.pszHeader = L"Eine Group 2\0"; lvg2.cchHeader = wcslen(lvg2.pszHeader); lvg2.iGroupId = 1; lvg2.uAlign = LVGA_HEADER_LEFT; if(ListView_InsertGroup(GetDlgItem(hDlg, IDC_LIST), 1, &lvg2) == -1) MessageBox(0, "Error 2", 0, 0); lvg3.cbSize = sizeof(LVGROUP); lvg3.mask = LVGF_GROUPID | LVGF_ALIGN | LVGF_HEADER; lvg3.pszHeader = L"Eine Group 3\0"; lvg3.cchHeader = wcslen(lvg3.pszHeader); lvg3.iGroupId = 2; lvg3.uAlign = LVGA_HEADER_LEFT; if(ListView_InsertGroup(GetDlgItem(hDlg, IDC_LIST), 2, &lvg3) == -1) MessageBox(0, "Error 3", 0, 0);Aber da kommt kein Error aber nur eine Group (die erste)!
-
ich kann nur raten, da ich kein xp habe (wie du weisst)
LVGROUP lvg; //ZeroMemory(&lvg, 0); lvg.cbSize = sizeof(LVGROUP); lvg.mask = LVGF_GROUPID | LVGF_ALIGN | LVGF_HEADER; lvg.pszHeader = L"Eine Group\0"; lvg.cchHeader = wcslen(lvg.pszHeader); lvg.iGroupId = 0; lvg.uAlign = LVGA_HEADER_LEFT; if(ListView_InsertGroup(GetDlgItem(hDlg, IDC_LIST), 0, &lvg) == -1) MessageBox(0, "Error 1", 0, 0); lvg.pszHeader = L"Eine Group 2\0"; lvg.cchHeader = wcslen(lvg2.pszHeader); lvg.iGroupId = 1; if(ListView_InsertGroup(GetDlgItem(hDlg, IDC_LIST), 1, &lvg) == -1) MessageBox(0, "Error 2", 0, 0); lvg.pszHeader = L"Eine Group 3\0"; lvg.cchHeader = wcslen(lvg3.pszHeader); lvg.iGroupId = 2; if(ListView_InsertGroup(GetDlgItem(hDlg, IDC_LIST), 2, &lvg) == -1) MessageBox(0, "Error 3", 0, 0);
-
ja...
aber leider das selbe ergebnis. es erscheint ein group: "Eine Group" also die erste HILFE