In Listbox soll ein Editfeld



  • Hallo,

    wie realisiere ich es, wenn ich in einem ListControl Werte editieren will.
    Also dass ich z.b. auf einen wert draufklicke unn dann sich sozusagen in diesem feld ein edit-feld aufgeht, in dem ich gleich meinen neuen text reinschreiben kann??

    lg chris



  • ListBOX oder ListCONTROL? 😕



  • ListControl



  • das hab ich zwar umständlich gelöst aber es funktioniert 😃

    ka obs anders geht:

    Erstmal ein EditFeld irgendwo auf deinem Dialog erstellen und unsichtbar machen.

    dann musst du den Mausklick auf dein CListCtrl abfangen und seine Position ermitteln/berechnen.
    Dann setzt du das EditFeld drüber, machst es sichtbar und gibst ihm den Focus
    wenn es den Focus verliert schreibst du es an die Stelle im CListCtrl auf die du geklickt hast.
    dann machst du das EditFeld wieder unsichtbar und gibst den Focus an das ListCtrl zurück.

    So oder so ähnlich wars glaub ich.

    Edit: Hier noch ein CodeBeispiel:

    //pDeinView = globaler Zeiger auf dein View, hab ich halt zu der zeit so gelöst
    void CMyListCtrl::OnLButtonDblClk(UINT nFlags, CPoint point) 
    { 
        CWnd* pFocus = GetFocus();
    	if (pFocus->m_hWnd == pDeinView->m_ctrlBaugruppen.m_hWnd)
    	{
    		CRect rect; 
    		CRect Pos;    CString str; 
    		CHeaderCtrl* header = GetHeaderCtrl(); 
    		int iItemCnt = GetItemCount(); 
    
    	    LVHITTESTINFO pInfo; 
    	    pInfo.pt = point; 
    	    pInfo.flags = LVHT_ONITEMLABEL; 
    	    int iItem = SubItemHitTest(&pInfo); 
    
    	    for (int i=0;i<=header->GetItemCount();i++) 
    	    { 
    			GetSubItemRect(iItem,i,LVIR_LABEL,rect); 
    			if((point.x > rect.left && point.x < rect.right)) 
    			{ 
    				pMyEdit->m_szChangedItem0 = GetItemText(iItem,0);
    				pMyEdit->m_iItem = iItem;
    				pMyEdit->m_iSubItem = i;
    				CWnd* pWnd = this; 
    				CWnd* pParent = GetParent(); 
    				pWnd->ClientToScreen(&rect); 
    				pParent->ScreenToClient(&rect);
    				rect.top = rect.top-3;
    
    				pDeinView->m_SMDEdit.MoveWindow(rect); 
    				pDeinView->m_SMDEdit.ShowWindow(1); 
    				pDeinView->m_SMDEdit.SetFocus(); 
    				pDeinView->m_SMDEdit.SetWindowText(GetItemText(iItem,i)); 
    				break;
    			} 
    		} 
    	}
        CListCtrl::OnLButtonDblClk(nFlags, point);
    


  • :-\...

    also vielen dank für die ersten tipps...aber ich warte vll. noch andere vorschläge ab....vll. gibt es da auch einen tipp für weniger erfahren progger 🙂





  • Als ob ich erfahren bin 😛

    allein für den globalen Zeiger werd ich gekreuzigt 😃



  • Taelan schrieb:

    Als ob ich erfahren bin 😛

    allein für den globalen Zeiger werd ich gekreuzigt 😃

    *Pellaeon Talean kreuzigt* 🕶 *gg*


Anmelden zum Antworten