TreeView и PopupMenu
Взялся за работу с сабжем. Проблема в том, что не нашел обработчиков событий нажатия правой кнопкой мышки на каком-нибудь узле компонента TreeView. То есть событие нажатия на компоненте есть, а вот именно на узлах -нету. А надо, чтобы контекстное меню появлялось только на узлах компонента.
Буду очень ждать советов и ответов.
Код:
void __fastcall TForm1::TreeView1MouseDown(TObject *Sender,
TMouseButton Button, TShiftState Shift, int X, int Y)
{
if(Button==mbRight)
{
TTreeNode* node=TreeView1->GetNodeAt(X, Y);
if(node)
{
TreeView1->Selected=node;
node->Text="Dun't press me!";
}
}
}
TMouseButton Button, TShiftState Shift, int X, int Y)
{
if(Button==mbRight)
{
TTreeNode* node=TreeView1->GetNodeAt(X, Y);
if(node)
{
TreeView1->Selected=node;
node->Text="Dun't press me!";
}
}
}
Посмотрите, может поможет. Автор не я, код не проверяла. Если у Вас получится, скинте правильный ответ. Авось тоже понадобится.:P
А вот нечто похожее на Делпфях
Код:
procedure TfrmExplorer.TreeViewMouseDown(Sender: TObject;
Button: TMouseButton;
Shift: TShiftState;
X, Y: Integer);
var P : TPoint;
begin
if Button<>mbRight then exit;
TreeMenu.AutoPopup := False;
if TreeView.GetNodeAt(X,Y)<>NIL then
begin
TreeView.Selected := TreeView.GetNodeAt(X,Y);
P.X := X; P.Y:=Y;
P := TreeView.ClientToScreen(P);
TreeMenu.Popup(P.X,P.Y);
end;
end;
Button: TMouseButton;
Shift: TShiftState;
X, Y: Integer);
var P : TPoint;
begin
if Button<>mbRight then exit;
TreeMenu.AutoPopup := False;
if TreeView.GetNodeAt(X,Y)<>NIL then
begin
TreeView.Selected := TreeView.GetNodeAt(X,Y);
P.X := X; P.Y:=Y;
P := TreeView.ClientToScreen(P);
TreeMenu.Popup(P.X,P.Y);
end;
end;
З.Ы. Женщина-программист? Нестандартное и довольно редкое явление. Я уже почти влюбился... :roll: :) :roll: