Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Мультимедиа в Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 10.01.2009, 22:59   #1
chandrasecar
Форумчанин
 
Аватар для chandrasecar
 
Регистрация: 03.10.2008
Сообщений: 180
Вопрос Меню с Items в виде набора Bitmap (как меню редактирования в Word'е)

Здравствуйте. Как сделать меню, где элементами могут быть изображения в несколько рядов? Одним словом смотрите рисунки, на которых изображены меню MS Word 2007. Нужно чтобы меню были в точности такими же (главное меню и Поп-Ап меню).
Благодарю за ответы.
Изображения
Тип файла: jpg Меню Word 2007 - 1.jpg (53.6 Кб, 163 просмотров)
Тип файла: jpg Меню Word 2007 - 2.jpg (38.1 Кб, 152 просмотров)
лучший подарок женщине-программисту
chandrasecar вне форума Ответить с цитированием
Старый 11.01.2009, 01:07   #2
Jeni
Форумчанин
 
Регистрация: 31.05.2007
Сообщений: 486
По умолчанию

Если использовать стандартные компоненты, т.е. TMainMenu и TPopupMenu, то для их элементов (TMenuItem) нужно обрабатывать события:
OnMeasureItem - для установки ширины/высоты пункта меню
OnDrawItem или OnAdvancedDrawItem - для прорисовки пункта меню, здесь можно извращаться как угодно.
Jeni вне форума Ответить с цитированием
Старый 11.01.2009, 18:29   #3
chandrasecar
Форумчанин
 
Аватар для chandrasecar
 
Регистрация: 03.10.2008
Сообщений: 180
По умолчанию

Так, понятно. Можно в Item вставить картинку, нарисовать на канве и пр. А как построить элементы таким образом, чтобы они были не списком а в несколько рядов (см. рисунки выше)?

К тому же, когда вставляешь изображение в Item через OnDrawItem, то пропадает выделение при наведении курсора. Как это исправить?
лучший подарок женщине-программисту

Последний раз редактировалось chandrasecar; 11.01.2009 в 18:43.
chandrasecar вне форума Ответить с цитированием
Старый 11.01.2009, 20:00   #4
BOBAH13
Android Developer
Старожил Подтвердите свой е-майл
 
Аватар для BOBAH13
 
Регистрация: 19.02.2007
Сообщений: 3,708
По умолчанию

Никак. к примеру моя программа, XWindows Dock - найти не сложно в гугле, меню такое вы в жизне не сделаите с использованием GDI и TPopupMenu но в вашем случае, легче сделать окошко его отрисовать как надо, и баловаться с ShowWindow при наведении на пункт в меню "родителе". Почему сразу мысли что надо TPopupMenu прорисовывать... намного легче и больше возможности если сам все сделаеш...
BOBAH13 вне форума Ответить с цитированием
Старый 12.01.2009, 14:49   #5
chandrasecar
Форумчанин
 
Аватар для chandrasecar
 
Регистрация: 03.10.2008
Сообщений: 180
По умолчанию

Да ВОВАН13, Вы суперский программер, респект Вам. Однако программисты это как-то делают. А я с этой необходимостью столкнулся впервые и не знаю как это реализовать.
Скачал Вашу прогу но что-то не запускается, поэтому того меню, которое я в жизни не сделаю, не видел. Но раз Вы такое сделали, то должны знать как решить проблему на подобие моей. Хотя бы вкратце опишите как сделать.
А может и компоненты есть какие-то? Вот, например, Animated Menus v3.0 (http://www.softsl.com/index.php?name...op=view&id=24). Там у Item'а есть св-во Control, значение которого, может принимать ctlButtonArray (настраивается все в разделе Инспектора ControlOptions). У меня чувство что это может быть тем что мне нужно, но пока не смог с этим разобраться.
Одним словом, помогите, подскажите.
лучший подарок женщине-программисту
chandrasecar вне форума Ответить с цитированием
Старый 13.01.2009, 23:26   #6
chandrasecar
Форумчанин
 
Аватар для chandrasecar
 
Регистрация: 03.10.2008
Сообщений: 180
По умолчанию

ВОВАН13, Вы делали свое суперское меню с использованием GDI и какой среды программирования - Delphi или C++?
Как я понял в Delphi GDI представлен методами рисования на Канве и самой Канвой? Просто отрисовывали Ваше меню на Канве?
лучший подарок женщине-программисту

Последний раз редактировалось chandrasecar; 13.01.2009 в 23:30.
chandrasecar вне форума Ответить с цитированием
Старый 14.01.2009, 01:36   #7
goblinyara
Форумчанин
 
Аватар для goblinyara
 
Регистрация: 02.01.2009
Сообщений: 340
По умолчанию

chandrasecar, скорее всего она у вас запустилась, просто вы её не видите из-под Панели задач она просто по умолчанию под ней прячется
DelphiWorld 6. Скачай, поставь, и будет тебе счастье=)
Программирование, как и любовь -- одно слово, за которым скрывается бесконечное множество занятий.
goblinyara вне форума Ответить с цитированием
Старый 14.01.2009, 09:20   #8
BOBAH13
Android Developer
Старожил Подтвердите свой е-майл
 
Аватар для BOBAH13
 
Регистрация: 19.02.2007
Сообщений: 3,708
По умолчанию

Я использовал Delphi 7, GDI+, и слои Windows. По сути если надо сделать главное меню наподоби того как оно на рисунках, то можно даже обойтись и TPopupMenu. По сути смотрите что совпадает у каждого пункта, т.е. можно спокойно рисовать вначале (слева) у пункта серый квадрат к примеру в ширину равный высоте пункта, потом темней линию на правой стороне этого квадрата, ну и так далее... Есть очень не плохой пример, RyMenu чтоли называется, в старые добрые времена только им и пользовался, там очень ярко и четко описана отрисовка пунктов (он в исходниках). Ну собственно далее по аналогии..

p.s. чисто совет, без задней мысли, попробуйте разобраться с GDI+, а когда разберетесь, перед вами откроются огромные возможности, и потом будете еще смеется над тем как вы бились с GDI чтобы добится подобного эффекта...
BOBAH13 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Items of ComboBox Технолог Компоненты Delphi 2 20.04.2008 14:04
Строка набора URL.... maLoy*508 Общие вопросы Delphi 13 30.03.2008 16:44
Програмка для освоения набора тескта Иллидан Софт 7 23.03.2008 11:22
Меню в виде дерева pu4koff JavaScript, Ajax 7 16.10.2007 11:24
TreeView2.Items.Item[j+1].text забито мусором, а должен быть текст AlDelta Общие вопросы Delphi 1 07.09.2007 16:37