Baum-Item editieren



  • Hallo!

    In einem TreeCtrl habe ich die Tree-Items editierbar gemacht. Das Problem, das nun aufgetaucht ist, wäre, daß wenn nun das Edit-Feld des TreeCtrls den Fokus hat, es nicht auf Tasteneingaben (ich will Esc und Return abfangen).

    Ich habe zwar Beispiel-Code in der MSDN gefunden, dort reagiert das Edit-Feld ohne Grund auf Esc und Return sehr wohl. Ich habe mir den Code genauestens angesehen, finde aber nicht, warum es dort funktioniert bei mir aber nicht.

    Auch die Properties der Bäume sind gleich. Eine Zuweisung des Edit-Feldes mit GetEditControl() zu einem abgeleiteten CEdit (wo Keys abgefangen werden) ist auch gescheitert.

    Was kann jetzt noch getan werden?



  • Nochmals, wenn ich mich ein bisserl zu holprig ausgedrückt habe.

    Wenn ich ein TreeCtrl-Item editiere, reagiert das (TreeCtrl-)Edit-Feld nicht auf Enter und Escape.

    Wie kann ich es bewerkstelligen, daß dieses Edit-Feld auf Enter und Escape reagiert.



  • Wenn deine TreeCtrl in einem CView liegt, bekommt dieser die Keyboard-Events. Dann musst du folgendes tun:

    (Die View-Klasse ist in dem Beispiel CMainView, abgeleitet von CFormView. Der Baum ist Member von CMainView und heißt m_ctlTree)

    BOOL CMainView::PreTranslateMessage(MSG* pMsg)
    {
        // If edit control is visible in tree view control, sending a
        // WM_KEYDOWN message to the edit control will dismiss the edit
        // control.  When ENTER key was sent to the edit control, the parent
        // window of the tree view control is responsible for updating the
        // item's label in TVN_ENDLABELEDIT notification code.
        if (pMsg->message == WM_KEYDOWN &&
            pMsg->wParam == VK_RETURN || pMsg->wParam == VK_ESCAPE)
        {
            CEdit* edit = m_ctlTree.GetEditControl();
            if (edit)
            {
                edit->SendMessage(WM_KEYDOWN, pMsg->wParam, pMsg->lParam);
                return TRUE;
            }
        }
    
      return CFormView::PreTranslateMessage(pMsg);
    }
    


  • Das hört sich ja gut an. Werde ich umgehend ausprobieren!

    Vielw Grüße

    Christian



  • Suuuuuuuuuuper!!! Das ist klar, daß ich da beim MSDN-Code-Beispiel nix finde. Ich habe ja auch nur im TreeCtrl gesucht. Nochmals danke!!!!

    Gruß Christian


Anmelden zum Antworten