Welches Item wurde im CTreeView markiert ?



  • Hallo Leute,

    mal wieder ne Frage,

    ich baue mir aus der Datenbank eine Baumstruktur zusammen.

    Jetzt möchte ich wiessen, auf welches Item der User gedrückt hat, und zwar das Item Selbst, sein UnterItem und dessen UnterItem usw.

    HTREEITEM hSelectedItem = m_StatistikListe.GetSelectedItem();
    	CString m_strAuswahl;
    	m_strAuswahl = m_StatistikListe.GetItemText(hSelectedItem);
    

    So bekomme ich das gedrückte Item, aber wie jetzt weiter... es können unterItem bestehen oder eben keine..

    Gruß
    andy_mann



  • CTreeCtrl::GetChildItem



  • Ich Danke Dir,

    ich habe immer das Problem, wenn ich die Baumstruktur durchforste und überprüfe ob das Item das selectierte Item ist, kann es sein dass dieser in irgend einem unteritem öffters vor kommt.

    Deswegen ist die Auswahl nicht eindeutig.

    Ich gebe jedem Zweig eine ID noch mit, das Funkt dann zwar ist aber obtisch nicht sehr schön, da die ID dann ja mit erscheinen muß.

    Gibt es da nicht eine andere Lösung ?

    Gruß
    andy_mann



  • Ich verstehe dich nicht ganz, denn mit

    HTREEITEM hSel = m_ctrlTree.GetSelectedItem();
    

    erhälst du doch eindeutig das markierte Item.

    Wieso durchforstest du denn dann noch den Baum, wenn du schon weißt, welches das selektierte Item ist?



  • Hhhmmm...
    und wie heißte dann der Baumzweig vom Selectierten Icen ??

    Es klappt ohne Probleme wenn alle Icans anders heissen, dann kann ich nach entsprechenden suchen.
    Ist aber eins gleich stimmt der Vergleich ja nicht mehr..

    Gruß
    andy_mann



  • andy_mann schrieb:

    Hhhmmm...
    und wie heißte dann der Baumzweig vom Selectierten Icen ??

    ???

    Annahme, dein Baum sieht so aus (selektiert soll der Eintrag in Klammern sein):

    |  Eintrag 1
    -  Eintrag 2
    |      Eintrag 2.1
    |      Eintrag 2.2
    -      [Eintrag 2.3]
    |          Eintrag 2.1.1
    |          Eintrag 2.1.2
    |          Eintrag 2.1.3
    

    Weiter nehme ich an, dass der Code so aussieht:

    HTREEITEM hSel = m_ctrlTree.GetSelectedItem();
    HTREEITEM hParent = m_ctrlTree.GetParentItem(hSel);
    HTREEITEM hChild = m_ctrlTree.GetChildItem(hSel);
    CString szSel = m_ctrlTree.GetItemText(hSel);
    CString szParent = m_ctrlTree.GetItemText(hParent);
    CString szChild = m_ctrlTree.GetItemText(hChild);
    CString szMsg;
    
    szMsg.Format("Selektiert: %s\nStamm vom Selektierten: %s\n1. Kind vom Selektierten: %s", szSel, szParent, szChild);
    AfxMessageBox(szMsg, MB_OK);
    

    ...dann erhälst du eine Messagebox mit folgendem Text:

    Selektiert:               Eintrag 2.3
    Stamm vom Selektierten:   Eintrag 2
    1. Kind vom Selektierten: Eintrag 2.1.1
    


  • Ehrlich so einfach geht das ??

    und ich habe mit Schleiffen und zeuch gearbeitet...

    Vielen Dank,
    Gruß
    andy_mann


Anmelden zum Antworten