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


Anmelden zum Antworten