Nächstes Item in TTreeView



  • Hallo,
    Wie kann ich in einem TTreeView das jeweil nächste bzw. vorherige Item sekeltieren, so, als wenn ich die UP bzw. DOWN-Taste gedrückt hätte!?

    Ich habe es bisher so versucht, allerdings funktioniert dass halt nicht wirklich so, als wenn man UP bzw. DOWN gedrückt hätte:

    article_list->Select(article_list->Items->Item[article_list->Selected->Index-1]);
    

    GetNext() und GetPrev() zeigen überhaupt keine Reaktion!?

    Und wenn ich

    article_list->Select(article_list->Items->Item[article_list->Selected->AbsoluteIndex-1]);
    

    versuche, dann springt er mir bei einem ParentItem, wenn man DOWN drückt, nicht zum nächsten Parent-Item sondern expandiert sich und springt zum nächsten Child-Item...

    Also sozusagen den Druck der UP bzw. DOWN-Taste simulieren?



  • Reyx schrieb:

    GetNext() und GetPrev() zeigen überhaupt keine Reaktion!?

    Du verwendest sie ja auch gar nicht, oder?
    Ansonsten: sieh dir mal die (anderen) Methoden von TTreeNode an.



  • Naja, dass Problem ist, dass ich bei dem TreeView bei gedrückter CTRL-Taste den Richtungstasten nach Links und Rechts andere Funktionen zugeteilt habe. Damit man jetzt aber bei gedrückter CTRL-Taste auch weiterhin durch das TreeView navigieren kann habe ich es jetzt halt mit

    article_list->Select(article_list->Items->Item[article_list->Selected->AbsoluteIndex-1]);
    // und
    article_list->Select(article_list->Items->Item[article_list->Selected->AbsoluteIndex+1]);
    

    gemacht, nur es verhält sich halt anders, wenn man bei einem Item, welches Child-Items hat, die Down-Taste drückt.

    GetNext(), GetPrev(), GetNextChild(), GetPrevChild(), GetNextVisible() und GetPrevVisible() haben überhaupt keine Reaktion gezeigt (ich habe es probiert und es ist gar nichts passiert).

    Letztendlich ist es auch nicht weiter schlimm, es funktioniert ja so, wie ich es jetzt mache, nur wirklich intuitiv ist es leider nicht 🙄



  • Reyx schrieb:

    ich habe es probiert und es ist gar nichts passiert

    Da du uns nicht zeigst, was genau du probiert hast, gehe ich davon aus, dass dir die Gründe für das Nichtfunktionieren egal sind!?



  • Naja, halt die aufgelistste Funktionen von TTreeView::Selected.

    Das ganze habe ich dann im OnKeyDown geprüft, also z.B.

    void __fastcall Tmainform::article_listKeyDown(TObject *Sender, WORD &Key,
          TShiftState Shift)
    {
    if(Key == VK_DOWN && mainform->CtrlPressed)  {
         article_list->Selected->GetNext(); // z.B.
    }
    // ...
    

    EDIT: Ah, da fällt mir doch gleich der Fehler auf 😉
    Ich habe den Rückgabewert von TTreeView::Selected::GetNextVisible übersehen, jetzt klappt's jedenfalls:

    article_list->Select(article_list->Selected->GetNextVisible());
    

Anmelden zum Antworten