Pagina1 van 1

Lazarus – TTreeview – Voorkom popup menu indien muis niet op een node

Lazarus – TTreeview – Voorkom popup menu indien muis niet op een node

Welkom bij de Tweaking4All gemeenschapsforums!
Voor je gaat deelnemen, bekijk de Forum Regels!

Specifieke onderwerpen: Start het onderwerp met de naam van het programma of systeem.
Voorbeelden: "MacOS X - Jouw vraag", "MS Word - Jouw Tip of Truc".

Merk op: Omschakelen naar een andere taal zal niet werken als je een post aan het lezen bent.
Posts/Reacties hebben geen tegenhanger in de andere taal.




RSS Feed

Home Forums Software Development Delphi, Lazarus, Free Pascal Lazarus – TTreeview – Voorkom popup menu indien muis niet op een node

Dit onderwerp bevat 0 reacties, heeft 1 stem, en is het laatst gewijzigd door  hans 5 maanden, 2 weken geleden.

1 bericht aan het bekijken (van in totaal 1)
  • Auteur
    Berichten
  • 5651

    hans
    Sleutelbeheerder

    Tijdens het schrijven van ApplePi-Baker v2, liep ik tegen een probleem met TTreeView.

    Wanneer je namelijk de treeview met rechts aanklikt, voor een popup menu, dan wordt het menu getoond, ookal selecteer je geen node in de treeview (ttreeview.multiselect = false).
    Lastig dus als je het menu wilt aanpassen op basis van de node onder de muis,

    De oplossing:

    De makkelijkste oplossing bleek eenvoudiger dan gedacht.
    Als Treeview met rechts wordt aangeklikt, dan kunnen we het OnContextPopup event gebruiken.
    Deze geeft niet alleen de muis coördinaten, welke we met GetNodeAt() kunnen omzetten naar een node, maar het heeft ook een variabele “Handled“.
    Als we deze variable “Handled” op TRUE zetten, dan ziet TreeView dat alle rechts-klik-acties klaar en afgehandeld zijn en het popup-menu wordt dan niet weergegeven.

    Alles in code:

    procedure TForm1.TreeviewContextPopup(Sender: TObject; MousePos: TPoint; var Handled: Boolean);
    begin
      if Treeview.GetNodeAt(MousePos.X, MousePos.Y) = nil then
        Handled := True;
    end;   
1 bericht aan het bekijken (van in totaal 1)



Je moet ingelogd zijn om reacties te kunnen plaatsen voor dit onderwerp.