Cita:
Empezado por Chris
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