|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
10.01.2009, 22:59 | #1 |
Форумчанин
Регистрация: 03.10.2008
Сообщений: 180
|
Меню с Items в виде набора Bitmap (как меню редактирования в Word'е)
Здравствуйте. Как сделать меню, где элементами могут быть изображения в несколько рядов? Одним словом смотрите рисунки, на которых изображены меню MS Word 2007. Нужно чтобы меню были в точности такими же (главное меню и Поп-Ап меню).
Благодарю за ответы.
лучший подарок женщине-программисту
|
11.01.2009, 01:07 | #2 |
Форумчанин
Регистрация: 31.05.2007
Сообщений: 486
|
Если использовать стандартные компоненты, т.е. TMainMenu и TPopupMenu, то для их элементов (TMenuItem) нужно обрабатывать события:
OnMeasureItem - для установки ширины/высоты пункта меню OnDrawItem или OnAdvancedDrawItem - для прорисовки пункта меню, здесь можно извращаться как угодно. |
11.01.2009, 18:29 | #3 |
Форумчанин
Регистрация: 03.10.2008
Сообщений: 180
|
Так, понятно. Можно в Item вставить картинку, нарисовать на канве и пр. А как построить элементы таким образом, чтобы они были не списком а в несколько рядов (см. рисунки выше)?
К тому же, когда вставляешь изображение в Item через OnDrawItem, то пропадает выделение при наведении курсора. Как это исправить?
лучший подарок женщине-программисту
Последний раз редактировалось chandrasecar; 11.01.2009 в 18:43. |
11.01.2009, 20:00 | #4 |
Android Developer
Старожил Подтвердите свой е-майл
Регистрация: 19.02.2007
Сообщений: 3,708
|
Никак. к примеру моя программа, XWindows Dock - найти не сложно в гугле, меню такое вы в жизне не сделаите с использованием GDI и TPopupMenu но в вашем случае, легче сделать окошко его отрисовать как надо, и баловаться с ShowWindow при наведении на пункт в меню "родителе". Почему сразу мысли что надо TPopupMenu прорисовывать... намного легче и больше возможности если сам все сделаеш...
|
12.01.2009, 14:49 | #5 |
Форумчанин
Регистрация: 03.10.2008
Сообщений: 180
|
Да ВОВАН13, Вы суперский программер, респект Вам. Однако программисты это как-то делают. А я с этой необходимостью столкнулся впервые и не знаю как это реализовать.
Скачал Вашу прогу но что-то не запускается, поэтому того меню, которое я в жизни не сделаю, не видел. Но раз Вы такое сделали, то должны знать как решить проблему на подобие моей. Хотя бы вкратце опишите как сделать. А может и компоненты есть какие-то? Вот, например, Animated Menus v3.0 (http://www.softsl.com/index.php?name...op=view&id=24). Там у Item'а есть св-во Control, значение которого, может принимать ctlButtonArray (настраивается все в разделе Инспектора ControlOptions). У меня чувство что это может быть тем что мне нужно, но пока не смог с этим разобраться. Одним словом, помогите, подскажите.
лучший подарок женщине-программисту
|
13.01.2009, 23:26 | #6 |
Форумчанин
Регистрация: 03.10.2008
Сообщений: 180
|
ВОВАН13, Вы делали свое суперское меню с использованием GDI и какой среды программирования - Delphi или C++?
Как я понял в Delphi GDI представлен методами рисования на Канве и самой Канвой? Просто отрисовывали Ваше меню на Канве?
лучший подарок женщине-программисту
Последний раз редактировалось chandrasecar; 13.01.2009 в 23:30. |
14.01.2009, 01:36 | #7 |
Форумчанин
Регистрация: 02.01.2009
Сообщений: 340
|
chandrasecar, скорее всего она у вас запустилась, просто вы её не видите из-под Панели задач она просто по умолчанию под ней прячется
DelphiWorld 6. Скачай, поставь, и будет тебе счастье=) Программирование, как и любовь -- одно слово, за которым скрывается бесконечное множество занятий.
|
14.01.2009, 09:20 | #8 |
Android Developer
Старожил Подтвердите свой е-майл
Регистрация: 19.02.2007
Сообщений: 3,708
|
Я использовал Delphi 7, GDI+, и слои Windows. По сути если надо сделать главное меню наподоби того как оно на рисунках, то можно даже обойтись и TPopupMenu. По сути смотрите что совпадает у каждого пункта, т.е. можно спокойно рисовать вначале (слева) у пункта серый квадрат к примеру в ширину равный высоте пункта, потом темней линию на правой стороне этого квадрата, ну и так далее... Есть очень не плохой пример, RyMenu чтоли называется, в старые добрые времена только им и пользовался, там очень ярко и четко описана отрисовка пунктов (он в исходниках). Ну собственно далее по аналогии..
p.s. чисто совет, без задней мысли, попробуйте разобраться с GDI+, а когда разберетесь, перед вами откроются огромные возможности, и потом будете еще смеется над тем как вы бились с GDI чтобы добится подобного эффекта... |
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
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 |