CListCtrl - Eingabe?



  • Hi,

    ich beschäftige mich das erste mal mit CListCtrl und habe eine Frage und zwar ist es möglich das man in einem CListCtrl selbst Daten eingibt oder kann man
    sie da immer nur anzeigen lassen?

    MfG



  • Ja, das ist möglich, es giebt da 2 möglichkeiten. Zum einen kannst du auf www.codeguru.com gehen oder auch auf www.codeproject.com und dir da fertige klassen nehmen die das unterstützen, allerdings kann es da auch durchaus kompliziert werden oder 2 Weg du schreibst dir selber ne funktion die wenn du z.B: einen doppelklich auf das ListCtrl machst ein Editfeld drübersetzt. Das habe ich gemacht. Klappt perfekt muss ich sagen.



  • Danke das funktioniert soweit, aber da habe ich gleich noch eine Frage, wie kann ich das Editfeld so erzeugen das es sich immer der jeweiligen Spalten- bzw Zellengöße des CListCtrl anpasst?



  • Hierist mal mein code. Müstest ihn eben anpassen.

    m_ListCtrl1.SetColumnWidth(0,500);
        RECT    rect,client;
        POINT   pointer;
        CString Ausgaben;
        NM_LISTVIEW* pNMListView = (NM_LISTVIEW*) pNMHDR;
        LPNMITEMACTIVATE temp = (LPNMITEMACTIVATE) pNMHDR;
        nItem = temp->iItem;nSubItem = temp->iSubItem;
        m_ListCtrl1.GetItemRect(temp->iItem,&rect,LVIR_BOUNDS);
        Ausgaben.Format("%s%s",m_ListCtrl1.GetItemText(pNMListView->iItem,0),
        m_ListCtrl1.GetItemText(pNMListView->iItem,1));
        if(temp->iItem==-1)
        {}
        else
        if(temp->iSubItem==0)
        {
            SucheDatensatz_Ausgaben(Ausgaben);
            SetDlgItemText(IDC_EDIT1,m_ListCtrl1.GetItemText(pNMListView->iItem,0));
            m_ListCtrl1.GetWindowRect(&client);
            CWnd::ScreenToClient(&client);
            m_ListCtrl1.GetItemPosition(pNMListView->iItem,&pointer);
            ::SetWindowPos(::GetDlgItem(m_hWnd,IDC_EDIT1),
            HWND_TOP,client.left+2,client.top+rect.top,
            m_ListCtrl1.GetColumnWidth(0)+2,rect.bottom-rect.top+3,NULL);
            ::ShowWindow(::GetDlgItem(m_hWnd,IDC_EDIT1),SW_SHOW);
            ::SetFocus(::GetDlgItem(m_hWnd,IDC_EDIT1));
        }
        else
        {
            CRect rect1;
            SucheDatensatz_Ausgaben(Ausgaben);
            SetDlgItemText(IDC_EDIT2,m_ListCtrl1.GetItemText(temp->iItem,temp->iSubItem));
            m_ListCtrl1.GetWindowRect(&client);
            CWnd::ScreenToClient(&client);
            m_ListCtrl1.GetSubItemRect(temp->iItem,LVIR_BOUNDS,temp->iSubItem,rect1);
            m_ListCtrl1.GetItemPosition(pNMListView->iItem,&pointer);
            ::SetWindowPos(::GetDlgItem(m_hWnd,IDC_EDIT2),
            HWND_TOP,client.left+m_ListCtrl1.GetColumnWidth(0)+rect1.left+2,client.top+rect1.top,
            rect.right-m_ListCtrl1.GetColumnWidth(0)-1,rect.bottom-rect1.top+3,NULL);
            ::ShowWindow(::GetDlgItem(m_hWnd,IDC_EDIT2),SW_SHOW);
            ::SetFocus(::GetDlgItem(m_hWnd,IDC_EDIT2));
        }
        *pResult = 0;
    


  • Danke!


Anmelden zum Antworten