Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C++ Builder > проблема с меню


Автор: bent 20.3.2006, 16:45
Здравствуйте. Может, Вас и позабавит моя проблема, но я работаю только чуть больше года, ну а с меню работать пришлось только вот сейчас. Итак, разрабатывается некоторый графический редактор (ну, это неважно). В нем реализуется типовое переключение между окнами с помощью пункта меню "Window". Здесь вот начинается проблема. Открыто у меня несколько окон и я хочу переключиться. Для этого нужно знать имя окна. Вот отрывок кода:

TMenuItem *vClickedItem = dynamic_cast<TMenuItem *>(Sender);
if (vClickedItem)
{
AnsiString vFrameName;
vFrameName = vClickedItem->Caption;
int vClickedIndex = mpDesignerOpenedFrameList->IndexOf(vFrameName);
}.

Так вот, к названию окна приписывается амперсанд (&), т.е. vFrameName = "&название окна". Ну, я стал вырезать его - тогда при двух открытых окнах стало работать, но если больше, возникает такая ситуация: например, есть три открытых окна и в обработчике клика бывает такое:
vFrameName = "D:\\&остальной путь".
В Help'е почитал про это и выяснил, что это связано с клавишами быстрого доступа и для отключения добавления амперсанда нужно использовать метод TMenuItem::RethinkHotkeys(). Делал - проблема осталась.
Помогите пожалуйста, если Вам понятна проблема.
smile

Автор: Romikgy 20.3.2006, 17:03
Цитата(bent @ 20.3.2006, 15:45 Найти цитируемый пост)
Вам понятна проблема.

неа не понятна

Автор: sexton 20.3.2006, 17:18
А наличие амперсанда в названии принципиально? Может стоит убрать его нафиг?

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)