Visualizzazione dei risultati da 1 a 2 su 2

Discussione: TreeView [Delphi 5]

  1. #1
    Utente di HTML.it
    Registrato dal
    Nov 2001
    Messaggi
    145

    TreeView [Delphi 5]

    Ciao a tutti! Vorrei che quando l'utente seleziona un nodo nel TreeView e schiaccia lo spazio apparisse un PopUpMenu. Il problema è che mi servono le coordinate del nodo corrente selezionato in modo da far apparire il PopUp in quella posizione! Ecco il mio codice:

    procedure TForm1.TreeView1KeyUp(Sender: TObject; var Key: Word; Shift: TShiftState);

    begin
    case Key of
    VK_SPACE : PopupMenu7.popup(...........)
    end
    end;

    Grazie!! ))))))))))))

    p.s.Sto usando Delphi 5 e Windows XP

  2. #2
    Moderatore di Programmazione L'avatar di alka
    Registrato dal
    Oct 2001
    residenza
    Reggio Emilia
    Messaggi
    24,466
    Ti scrivo la soluzione che ho implementato con qualche riga di commento per spiegare...poi mi dirai se è di tuo gradimento.
    codice:
    procedure TForm1.TreeView1KeyDown(Sender: TObject; var Key: Word; Shift: TShiftState);
    var
      rNode: TRect;
      pTree, pNode: TPoint;
    begin
      case Key of
        VK_SPACE:
          // Verifica se è stato selezionato un nodo
          if TreeView1.Selected <> nil then
          begin
            // Individua la posizione del controllo TreeView
            pTree := Point(TreeView1.Left, TreeView1.Top);
            // Individua l'area occupata dal testo del nodo selezionato
            rNode := TreeView1.Selected.DisplayRect(True);
            // Converte la posizione del nodo in coordinate dello schermo
            pNode := ClientToScreen(Point(rNode.Left, rNode.Top));
            // Somma la posizione del nodo a quella del controllo TreeView
            // con un lieve spostamento verso il basso
            Inc(pNode.x, pTree.x);
            Inc(pNode.y, pTree.y + 18);
            // Visualizza il menu Popup alla posizione specificata
            PopupMenu1.Popup(pNode.x, pNode.y);
          end;
      end;
    end;
    Unica cosa: generalmente lo spazio viene utilizzato nei controlli ListView e TreeView per effettuare selezioni (quando queste sono multiple)...fai attenzione che la tua scelta di visualizzare il menu Popup sulla pressione dello spazio non interferisca con le azioni standard dei tasti.
    MARCO BREVEGLIERI
    Software and Web Developer, Teacher and Consultant

    Home | Blog | Delphi Podcast | Twitch | Altro...

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.