C++ Builder
| Главная | Уроки | Статьи | FAQ | Форум | Downloads | Литература | Ссылки | RXLib | Диски |

 
Главное меню и ControlBar
Pirs
Отправлено: 10.02.2004, 00:51


Дежурный стрелочник

Группа: Участник
Сообщений: 39



Многие компоненты можно засунуть в ControlBar и таскать их там за хвостик. А как запузырить туда MainMenu. Свойства Parent у него нету, а в самой среде Билдера такое вроде возможно.
xTrim
Отправлено: 12.02.2004, 15:12


Машинист паровоза

Группа: Участник
Сообщений: 208



Создаешь ToolBar, у него свойство Menu, выбираешь свое MainMenu, создаешь CoolBar в нем создаешь Band у которого ставишь свойство Control = ToolBar. У формы обнуляешь свойство MainMenu. Все.
Pirs
Отправлено: 13.02.2004, 01:19


Дежурный стрелочник

Группа: Участник
Сообщений: 39



Ну и запутаная это штука!!!
Итак:
1. Ставим ControlBar
2. Бросаем на него ToolBar, а на форму MainMenu и заполняем его
3. По правому клику мыши на ToolBar добавляем кнопки ToolButton по количеству верхних разделов главного меню, ставим у всех свойство Grouped в true.
4. У ToolButton есть свойство MenuItem, его и связываем с каждым верхним разделом MainMenu.
5. Самая хитрая штука — на кнопках нету надписей и Caption не помагает.
6. А оказывается надо не на кнопке а в ToolBar на котором стоит кнопка установить уникальное свойство(!) ShowCaption в true.
7. Для кнопки понадобилось свойство Flat, а его нету.
8. A оказалось, что надо не на кнопке а в ToolBar на котором стоит кнопка установить Flat в true .
9. Обнуляем свойство Menu главной формы
10. То, что во время проектирования написано на кнопке- неважно. После запуска на кнопке появляется Caption из связанного с ним пункта главного меню.

Но тип и стиль шрифта на кнопке не соответствует стилю шрифта главных меню, а с выпадающими подменю все нормально !!!
Как установить на кнопке тип и стиль шрифта главных меню ?

Asher
Отправлено: 13.02.2004, 10:15


Мастер участка

Группа: Модератор
Сообщений: 550



Привет.

Если у тебя Builder 6, то делай как сказал xTrim -
Там свойство Menu у ToolBar даже красным цветом выделено в Object Inspector. И никаких заморочей с MenuItem и шрифтами.
Pirs
Отправлено: 13.02.2004, 11:57


Дежурный стрелочник

Группа: Участник
Сообщений: 39



У меня Builder 5
xrenok
Отправлено: 02.03.2004, 20:10


Ученик-кочегар

Группа: Участник
Сообщений: 19



Кнопки в меню получаются выпуклыми. Плохо смотрится. А как их сделать плоскими как в оболочке Builder'a? Там они становятся выпуклыми только при наведении на них курсора мыши.
xTrim
Отправлено: 03.03.2004, 06:08


Машинист паровоза

Группа: Участник
Сообщений: 208



У ToolBar есть сойство Flat, помоему подойдет
klen
Отправлено: 03.03.2004, 23:52


Машинист паровоза

Группа: Участник
Сообщений: 239



Кстати товарищи есть здесь и косяк, как мне кажется релизация полженной на ToolBar главной меню не совсем честная(я всетаки в исходники то залезу, замучала зараза)  — если вы настроили меню в дизайнере — все пучком, но если вы его меняете в ходе программы — падающие меню изменяются а вот лицевые — хер!!, я к примеру локализацию менять хочу, получается так:
1 Главное меню никому не принадлежит
2 Загружается форма
3 Мой компонент сереализации обьектов (типа RXLib TFormStorage толко хранит все в XML) выполняет загрузку Caption элементов меню
4 Отображается форма и только после этого присваивается TToolBand -> Menu = MaunMenu.

Если сразу в дизайне задать TToolBand -> Menu = MaunMenu , то загружаются только выпадающие элементы!!!!!!

Я думал это я д-к(я и щас в этом почти не сомневаюсь) но вскрытие с отладчиком показало: если не делать в мной указанной последовательности то после загрузки назавания элемента меню (напоминаю что речь о верхних кнопках) меняется на присваеваемое, а вот отображатся оно в упор не хочет!!!!!!!!!!!!! с выпадающими элементами все ок. Кешируется там чтоли это свойство Caption??? не знаю, но фак фактом — нечесное это плавающее гланое меню, потомучто если меню к форме прикрутить все работает как часы.

Надеюсь это глюки только у меня ( BCB6 ES update4 build10.166, ОС w2k SP4)


olegenty
Отправлено: 05.03.2004, 14:38


Ветеран

Группа: Модератор
Сообщений: 2412



А во тут есть есть бесплатное, со всеми версиями совместимое главное меню:
http://jrsoftware.org/download.php/tb2k.zip. Я его давно использую и очень им доволен.
Pirs
Отправлено: 06.03.2004, 00:08


Дежурный стрелочник

Группа: Участник
Сообщений: 39



Хороший компонент, аккуратно причесаный. У него осталась та же проблема — если у ToolBar свойство Menu, то ЦВЕТ шрифта остается черным, несмотря на изменение цвета в настройках винды для главных меню на другой цвет, напр. зеленый.
И непонятно как присоединять меню MDIChild форм. Свойства AutoMerge у него нету. Ну ладно, там вручную можно через Items->Delete у Child и Items->Insert у Main поштучно переместить.Но при Maximized, сhild разворачивается без системных кнопок — эти кнопки просятся в свое родной ToolBar. Получается, что надо показывать сразу два главных меню — и MainForm и ChildForm ?






olegenty
Отправлено: 06.03.2004, 08:26


Ветеран

Группа: Модератор
Сообщений: 2412



нет, как работать с MDI прочти в спраке, там это есть. просто я не помню сейчас, но у меня работало.
Pirs
Отправлено: 06.03.2004, 11:20


Дежурный стрелочник

Группа: Участник
Сообщений: 39



Разобрался. Там проблема, что MdiHandler должен быть единственным указателем на ToolBar с меню. То есть указывать на меню в главной форме может только один Child. Если открывается второй Child с указателем на то же меню, то стоп-машина. Выход: в обработчике OnDeactivate код:MdiHandler->ToolBar = NULL , в обработчике OnActivate код: MdiHandler->ToolBar = MainForm->ToolBarMenu. И все работает !
А компонент вообще-то СУПЕР!. Первый раз такой вижу.
olegenty
Отправлено: 06.03.2004, 15:19


Ветеран

Группа: Модератор
Сообщений: 2412



Ну, если помогло, то я рад )).
А если найдёшь версию 2.0.16, то можешь ещё патч качнуть вот отсюда: http://tbskin.flatstyle2k.de, и поимеешь скиннер, позволяющий придавть меню вид Office XP и Windows XP.

Вернуться в Вопросы программирования в C++Builder