|
Вопрос # 3 367/ вопрос открыт / |
|
ДДоброго времени суток.
Есть проблема:
Имеется dxTreeList, к которому прикручено PopupMenu.
У PopupMenu есть событие OnPopup, в котором в зависимости от того, какой узел
текущий (Focused), некоторые пункты меню становятся видимыми, некоторые невидимыми.
Становлюсь я на узел, вызываю это меню и выполняю какой-его пункт,
скажем, N5. Потом выбираю другой узел, опять вызываю меню и при попытке
выполнить тот же пункт N5 оказывается, что N5=nil.
Все пункты меню определены в designe time, их происшествия OnClick тоже.
Подскажете, пожалуйста, что может быть.
 |
Вопрос задал: Booster (статус: Посетитель)
Вопрос отправлен: 5 ноября 2009, 12:50
Состояние вопроса: открыт, ответов: 1.
|
Ответ #1. Отвечает эксперт: min@y™
О, да, я знаком с такой проблемой и я её решил. Правда, криво, но работает.
У меня было несколько проектов с обычным TTreeView и его PopupMenu.
Все действия по активации/деактивации/видимости и пр. для меню/кнопок/TAction у меня были прописаны в Application.OnIdle. Но TTreeView - коварная штука, даже при RightClickSelect:= True меню вылезало с недоступными, но нужными пунктами. Чтобы они стали активными, надо было тыкнуть ЛЕВОЙ нопкой мыши на дереве и только потом - ПРАВОЙ для вызова меню. Поэтому я сделал свойство своего Treeview.PopupMenu = nil и:
procedure TProjectTreeView.SelfOnMouseUp(Sender: TObject;
Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
var
Node: TTreeNode;
begin
if Button = mbRight
then begin
Node:= Self.GetNodeAt(X, Y);
if Assigned(Node)
then begin
Node.Focused:= True;
Node.Selected:= True;
Application.ProcessMessages();
end;
if Assigned(Node)
then Self.ProjectPopupMenu.Popup(Mouse.CursorPos.X, Mouse.CursorPos.Y);
end;
end;
Если это не поможет, можно вызвать вручную Application.OnIdle.
З.Ы. Не стреляйте в пианиста: он играет, как может.
 |
Ответ отправил: min@y™ (статус: Доктор наук)
Время отправки: 5 ноября 2009, 15:54
|
Мини-форум вопроса
Мини-форум пуст.
Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте.
|