Столкнулся с аздачей написания своей панели инструментов с несколькими кнопками для MS Word. В качестве среды разработки использовалась VS2005. Для начала был найден пример создания панели инструментов для офиса и сделан проект по образу и подобию. И вот уже при запуске ворд показывает самодельную панель инструментов с кнопкой, а по клику по кнопке выдает  ”Hello World” =) Но не все так гладко как казалось…

Пока шла работа с первым экземпляром ворда - все работало, кнопка кликалась, сообщение показывалось. Но как только по  Ctrl-N создавался новый экземпляр окна ворда - в нем по нажатию на кнопку сообщение уже не отображалось.  Наверное создается новый экземляр и к нему не привязывается обработчик события, подумал я. Но небольшой отладочный процесс показал что это не так. Кроме того, переставала работать и кнопка в первом окне, где уж точно был рабочий экземпляр.

Копание в недрах выдачи гугла привело к ничем не примечательному свойству кнопки tag. Как человек, учивший одним из первых языков паскаль, а затем и Delphi, всегда думал что свойство tag является необязательным и используется в собственных целях. Оказалось я глубоко заблуждался =) Стоило добавить строчку

MyButton.Tag = "CoolMyButton";

при инициализации кнопки и все проблемы с несрабатыванием обработчика клика чудесным образом пропали. Получается MS Word использует свойство tag объектов чтобы не запутаться в своих кнопках =)


Comments

Comments are closed.

Name (обязательно)

Email (обязательно)

Сайт

Speak your mind