(495) 925-0049, ITShop интернет-магазин 229-0436, Учебный Центр 925-0049
  Главная страница Карта сайта Контакты
Поиск
Вход
Регистрация
Рассылки сайта
 
 
 
 
 

Меню в стиле XP

Источник: sources

Автор: Profi

Очень часто в сети на форумах по программированию можно встретить вопросы типа: "как сделать меню в стиле XP" или "нужен компонент Menu в стиле Office 2003". Обычно предлагаются или сторонние компоненты, или вовсе экзотические решения вроде ручной прорисовки пунктов меню (знать это, конечно, надо, но лично мне данный метод применять не приходилось). Я же расскажу, как можно сделать это с помощью стандартных компонентов, входящих в Delphi 7 и выше (пример буду рассматривать, используя BDS 2006).

Итак, приступим. Запустим Delphi for Win32 и создадим новый проект. Открываем вкладку компонентов Additional и кидаем на форму три компонента: TActionManager, TActionMainMenuBar и TXPColorMap (заметим, что визуальный из них только один - TactionMainMenuBar).

Меню в стиле XP

Рис.1

Теперь свяжем "Меню" с "Менеджером Действий" и "Цветовой Темой". На вкладке Structure нажимаем на плюсик левее ActionManager1 и видим там два пункта: ActionBars и LinkedActionList. ActionBars - содержит список bar"ов, с которыми работает TActionManager, а LinkedActionList - перечень дополнительных списков действий. Нам нужен именно ActionBars. Кликнем на нем правой кнопкой мыши и выберем AddItem (добавить элемент).

Меню в стиле XP

Рис.2

Появится новый элемент - 0 - TActionBarItem. В Object Inspector"е нажимаем на стрелочку правее пункта ActionBar и выбираем ActionMainMenuBar1. Теперь в Structure выбираем ActionMainMenuBar1 и видим, что в пункте ActionManager уже стоит ActionManager1. Да, связь "Меню" и "Менеджера Действий" завершена, но вот "Цветовая Тема" в "Меню" еще не настроена. Находим в Object Inspector"е пункт ColorMap и указываем там XPColorMap1.

Теперь создадим первый пункт меню - Файл. Снова открываем в Structure ActionBars и видим, что 0 - TActionBarItem превратился в 0 - TActionBar -> ActionMainMenuBar1. Нажимаем на плюсик слева от пункта, кликаем на свойстве Items правой кнопкой и выбираем AddItem. У нас появился пункт 0 - ActionClientItem0, это и есть наш первый пункт меню. Меняем его Caption с ActionClientItem0 на Файл и компилируем проект. Но что мы видим! Пункт неактивен. Все верно, ведь у него нет дочерних пунктов, да и никакого действия мы на него не повесили. Сейчас мы это исправим.

В Structure находим 0 - Файл, кликаем правой кнопкой на его свойстве Items и снова AddItem. Этим действием мы добавили дочерний пункт ActionClientItem0 к пункту Файл. Меняем его Caption на Выход и вновь компилируем проект.

Меню в стиле XP

Рис.3

Что ж, пункт Файл стал активным, но вот Выход - нет. Исправим это, "повесив" на пункт Выход действие. Выберем в Structure ActionManager1 и, кликнув правой кнопкой мыши, выберем пункт "Customize…". Откроется окно редактора "Действий".

Меню в стиле XP

Рис.4

Кликнем на кнопку New Action и, тем самым, создадим новое действие Action1. Теперь посмотрим на Structure, у ActionManager1 появился новый пункт (No Category). Раскроем его, нажав на плюс, и увидим там только что созданный Action1. Изменим его Caption на Выход. Теперь перейдем на вкладку Events и дважды кликнем на пустом поле правее OnExecute. Delphi сама переключится на редактор кода, и мы увидим новую функцию Action1Execute. Напишем внутри функции всего одну строчку: Close;. Теперь вернемся в Structure к элементу 0 - Выход, и в свойстве Action укажем Action1. Компилируем, нажимаем Файл - Выход, радуемся.

Меню в стиле XP

Рис.5

Как видно из рисунка 5, меню выглядит в стиле Office 2003.

Теперь добавим картинку. Идем на вкладку компонент Win32 и кидаем на форму TImageList. Дважды кликаем на нем и, нажав Add, добавляем какую-нибудь картинку.

Меню в стиле XP

Рис.6

Снова идем в Structure и в свойстве Images ActionManager1 указываем ImageList1. Находим 0 - Выход и, нажав на стрелочку правее пункта ImageIndex в свойствах, выбираем только что добавленную картинку. Если кто-то поторопился и уже скомпилировал проект, то он будет разочарован, так как никакой картинки в пункте меню Выход не появилось. А все потому, что ту же самую картинку нужно повесить и на Действие, выполняемое этим пунктом. Находим в Structure Action1 и его свойству ImageIndex присваиваем индекс той же самой картинки. Компилируем, нажимаем Файл, радуемся.

Меню в стиле XP

Рис.7

Но на этом останавливаться, ясное дело, не нужно. Можно создавать меню любой вложенности:

Меню в стиле XP

Рис.8

А так же менять цвета. Либо сменив "Цветовую Тему", либо сами цвета в Теме:

Меню в стиле XP

Рис.9

Чтобы сделать черту (как между пунктами "Открыть" и "Сохранить" на рисунке 9), свойству Caption нужно присвоить "-" (без кавычек).

Вот так мы, не написав ни строчки кода и не пользуясь сторонними компонентами (что обеспечивает максимальную переносимость кода), создали меню в стиле MS Office 2003.

Меню в стиле XP

Рис.10

Еще очень советую обратить внимания на компоненты TPopupActionBar и TActionToolBar, находящиеся все на той же вкладке компонентов Additional.

Надеюсь, данная статья принесет кому-то пользу.

Успехов в программировании.

Ссылки по теме


 Распечатать »
 Правила публикации »
  Написать редактору 
 Рекомендовать » Дата публикации: 23.03.2009 
 

Магазин программного обеспечения   WWW.ITSHOP.RU
Delphi Professional Named User
Enterprise Connectors (1 Year term)
Radmin 3.x - Стандартная лицензия 1 компьютер
VMware Workstation Pro 12 for Linux and Windows, ESD
Zend Guard 1 Year Subscription
 
Другие предложения...
 
Курсы обучения   WWW.ITSHOP.RU
 
Другие предложения...
 
Магазин сертификационных экзаменов   WWW.ITSHOP.RU
 
Другие предложения...
 
3D Принтеры | 3D Печать   WWW.ITSHOP.RU
 
Другие предложения...
 
Новости по теме
 
Рассылки Subscribe.ru
Информационные технологии: CASE, RAD, ERP, OLAP
Новости ITShop.ru - ПО, книги, документация, курсы обучения
Программирование на Microsoft Access
CASE-технологии
СУБД Oracle "с нуля"
Delphi - проблемы и решения
Проект mic-hard - все об XP - новости, статьи, советы
 
Статьи по теме
 
Новинки каталога Download
 
Исходники
 
Документация
 
 



    
rambler's top100 Rambler's Top100