Тема: Контекстное меню

Прошу помощи в реализации контекстного мнею. По справке что-то не осилил...
Проблемы в запуске команд на выполнение и добавлении системных команд

Как например добавить системную команду tdmCmdProperties или tdmCmdLocateTree?
Вот так не прокатывает:

Set ContextDlgMenu = ThisApplication.Dialogs.ContextMenu
ContextDlgMenu.AppendSystemMenu tdmCmdLocateTree ' Пункт меню не появляется

ContextDlgMenu.AppendSeparator ' Работает
ContextDlgMenu.AppendUserMenu ID, "MyItem", 0 ' Работает

(изменено: Edhunter, 24 ноября 2014г. 12:51:44)

Re: Контекстное меню

С первой попытки тоже не вышло. Почитал повнимательней пример в хэлпе - как выяснилось, для системных команд необходимо инициировать свойство Object диалога. Что в общем то логично.
Добавил :

ContextDlgMenu.Object = ThisObject

и все заработало

Re: Контекстное меню

Посмотрел ещё и на выпадающее меню...

set popup = ContextDlgMenu.AppendPopupMenu("test", 10)
popup.AppendUserMenu ID, "MyItem", 0

Весьма интересно, надо подумать, может и мне куда самопальное меню воткнуть.

Re: Контекстное меню

Edhunter, Спасибо! А слона то я не заметил:)

Re: Контекстное меню

После чтения данной темы и разбора на примерах все-таки остались вопросы:

1. Как вызвать реакцию на выбор пункта меню? (в том числе и системного).
2. Можно ли добавлять пункты в системное контекстное меню? (в том числе в группы "Создать", "Найти", ...)

Нет ли у кого-нибудь подобных примеров кода?

Re: Контекстное меню

1. Системные пункты меню работают вполне себе самостоятельно. Правда некоторые вообще не работают =( (у меня не заработали tdmCmdAddDesktop вообще, а tdmCmdLocateTree возвращает ошибку)
2. Вмешаться в работу системного меню у меня невышло, если очень хочется - можно самостоятельно перерисовать данные меню при помощи AppendPopupMenu

Re: Контекстное меню

Edhunter пишет:

1. Системные пункты меню работают вполне себе самостоятельно. Правда некоторые вообще не работают =( (у меня не заработали tdmCmdAddDesktop вообще, а tdmCmdLocateTree возвращает ошибку)
2. Вмешаться в работу системного меню у меня невышло, если очень хочется - можно самостоятельно перерисовать данные меню при помощи AppendPopupMenu

Да, действительно, некоторые работают ) А начала с tdmCmdLocateTree, которое как раз вообще не работает. Не удалось также добиться выполнения кода пользовательской команды. И привязать существующую команду к пункту меню видимо тоже не получится...
В общем, пока одни НЕ  :(  Видимо, перерисовать системное меню - это был бы единственный вариант, но только в том в случае, если бы все системные пункты работали...

Re: Контекстное меню

1. а какие проблемы с пользовательскими командами ? У меня вроде все ок
2. К какому пункту меню необходимо привязать команду ?

Re: Контекстное меню

Edhunter пишет:

1. а какие проблемы с пользовательскими командами ? У меня вроде все ок
2. К какому пункту меню необходимо привязать команду ?

Несколько дней назад писала личным сообщением... что-нибудь дошло?   :huh:

Re: Контекстное меню

А я ещё удивился что интерес к теме пропал, посмотреть в личные сообщения я не догадался =)))
Отвечу сюда, вдруг кого ещё данный вопрос волнует

AppendUserMenu - добавляет действительно "пользовательский" элемент. То есть его задача - это не вызов конкретной команды (для этого есть тип меню tdmMenuCommand) а обработка выбранного пользователем пункта.
cmdID - это произвольный номер который будет возвращен методом Show диалога при выборе данного пункта. Соответственно прям в коде пишете что с этим выбором делать дальше