CTreeView - Linien anzeigen, Leerzeile einfügen



  • Hallo

    Hab schon wieder ein Problem.
    Ich habe in meiner Anwendung links ein CTreeView und rechts verschiedene CFormViews.

    Code zum CTreeView:

    CTreeCtrl &TreeCtrl = GetTreeCtrl();
    TreeCtrl.SetImageList(TreeImageList,TVSIL_NORMAL);
    
    HTREEITEM hThisItem = TreeCtrl.InsertItem("Main Settings",0,0);
    TreeCtrl.InsertItem("Tournament",1,1,hThisItem);
    

    Nun möchte ich, dass zwischen den einzelnen Elementen Linien gezogen werden. (so wie im Explorer)
    Hab dazu was gefunden was mit TVS_HASLINES in der Create-Methode funktioniert. Nun habe ich aber keine Create-Methode.
    Gibts da eine andere Lösung ?

    Die zweite Frage:
    Ist es möglich in ein CTreeView eine Leerzeile einzufügen, also eine Zeile in der nichts steht, und die man auch nicht anklicken kann ?
    Klar könnte ich einfach eine Zeile ohne Text und Bild machen, aber anklicken kann man die dann trotzdem noch, was nicht sein soll.

    Gibts da Abhilfe ?

    Vielen Dank schon mal 🙂



  • CrazyOwl schrieb:

    Hallo
    Die zweite Frage:
    Ist es möglich in ein CTreeView eine Leerzeile einzufügen, also eine Zeile in der nichts steht, und die man auch nicht anklicken kann ?
    Klar könnte ich einfach eine Zeile ohne Text und Bild machen, aber anklicken kann man die dann trotzdem noch, was nicht sein soll.

    die freundin ist gerade nach hause gefahren. im moment keine lust den gesamten code herauszusuchen. falls du nach der beschreibung nicht weisst was ich meine, frag nochmal bitte!

    hatte ein mal ein ähnliches problem. gelöst habe ich es so:
    TVN_SELCHANGED event überschreiben. (OnTvnSelchanged(...))
    dort abfragen welche beschriftung das ausgewählte element hat. (siehe faq!)
    und falls die beschriftung == "" ==> auswahl aufheben.
    auswahl aufheben habe ich in der msdn gesehen. weiss jetzt aber nicht 100% genau wo.

    naja, auf jeden fall wird die auswahl gekillt, falls das ausgewählte die leerzeile ist. du kannst aber auch immer zwischenspeichern, was die letzte auswahl war und diese dann auswählen. das wäre wahrscheinlich eleganter. weil der benutzer dann gar nicht merkt, dass sich die auswahl geändert hat.



  • Ok, das mit dem aufheben und dem merken ist schon mal ne ganz gute Idee.
    Werd das mal ausprobieren. Danke 🙂

    Bleibt noch die Frage wie ich die Linien bekomme.



  • ModifyStyle(0,TVS_HASLINES)

    kann man auch in den Eigenschaften des TreeViews einstellen.



  • Hey cool, vielen Dank. 🙂


Anmelden zum Antworten