Ver Mensaje Individual
  #4  
Antiguo 21-01-2011
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Reputación: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
Cita:
Empezado por Chris Ver Mensaje
Para saberlo utiliza el procedimiento TreeView_HitTest. Desconozco si dicho procedimiento está implementado en la unidad Commctrl de delphi.
Tienes razón en el uso del hittest. Aquí un ejemplo de cómo podemos usar el evento MouseDown y el hittest para determinar qué menú desplegar:

Código Delphi [-]
procedure TForm1.TreeView1MouseDown(Sender: TObject; Button: TMouseButton;
    Shift: TShiftState; X, Y: Integer);
var
    Ht: THitTests;
    Pt: TPoint;

begin
    if Button = mbRight then
    begin
        Ht := TreeView1.GetHitTestInfoAt(X, Y);

        if htOnItem in Ht then
        begin
            Pt := TreeView1.ClientToScreen(Point(X, Y));

            TreeView1.Selected := TreeView1.GetNodeAt(X, Y);

            if Assigned(TreeView1.Selected.Parent) then
                PopupMenu1.Popup(Pt.X, Pt.Y)
            else
                PopupMenu2.Popup(Pt.X, Pt.Y);
        end;
    end;
end;

// Saludos
Responder Con Cita