Как выровнять меню

Vadik(R)

Well-known member
12.12.2007
469
0
#1
В общем мой вопрос сложно описать, но легко проиллюстрировать. Смотрим рисунки вложения.
Вопрос: как выровнять меню как во втором рисунке, то есть по правому краю? Есть ли вообще такое свойство в делфи?
___________1.PNG
___________2.PNG
 

Вложения

Vadik(R)

Well-known member
12.12.2007
469
0
#2
Насчет настроек - по-моему все перепробывал - не нашел. Когда назначаешь клавишу быстрого доступа - её сочетание автоматически приписывается к меню. Проблема в том, что выравнивание идет по левому краю. Но выход я кажется нашел. Просто написать на кнопках значения клавиш быстрого доступа, создать ещё одно меню. Второе меню сделать скрытым, назначить клавишы быстрого доступа туда, а при нажатии быстрых клавиш сделать сделать что-то типа: Меню2.Онклик Бегин Меню1.Клик Енд. Но это конечно я набросками написал, просто меня бесит что этот способ немного через Ж, а меня уже это достало, у меня почти все программирование на Delphi сводится к программированию через Ж...
 

vital

Больной Компом Детектед
29.01.2006
2 432
34
#3
у меня почти все программирование на Delphi сводится к программированию через Ж...
Вот это весьма символично.. Очень ярко показывает ситуацию сложившуюся у борланда.. или кто там уже.. Embarcadero вроде.

И поделу.
Раз применять методы пятой точки.. А не проще пробелами выровнять?=)
 

Vadik(R)

Well-known member
12.12.2007
469
0
#4
Пытался пробелами, но как-то странно, делфи все равно подвигает "текст горячих клавиш". Да ладно, проблема-то уже нашла решение :)
 
Z

zubr

#5
1. Достаточно установить свойство TMainMenu.OwnerDraw в True.
2. При TMainMenu.OwnerDraw = True в обработчике события TMenuItem.OnDrawItem вообще с меню можно делать что угодно, рисовать, шрифт менять, даже под углом текст выводить.
3. Если сравнивать работу с меню в Delphi, к примеру, с работой с меню в VS C++ MFC, то там того самого через ж.пу на порядок больше.
 

vital

Больной Компом Детектед
29.01.2006
2 432
34
#6
2Zubr
Уважаемый зубр. Просьба. Специально для меня седлайте пример вывода меню под углом.. Просто интересно как это. Правда, очень=)
 
Z

zubr

#7
Меню с 2-мя строками под 45 градусов по часовой и против часовой стрелки.
 

Вложения

vital

Больной Компом Детектед
29.01.2006
2 432
34
#8
Спасибо)

Все, оказалось просто.. Эх.. Не хватает мне знаний с опытом=) И еще. Меню там начинаются с &. Сама дельфи, вроде бы использует его как указатель, типа след букву подчеркнуть. А как обработаь это самому? Как подчеркнуть отдельную букву перед которой амперсанд?
 
Z

zubr

#9
Ручками. Алгоритм следующий:
1. У фонта канвы выставляем стиль fsUnderline.
2. Выводим первую букву (TextRect или TextOut).
3. У фонта канвы убираем стиль fsUnderline.
4. Выводим оставшийся текст: ACanvas.TextOut(textLeft + ACanvas.TextWidth('C'), textTop, 'mmmmmmmm'); Здесь C-первая буква текста.
 

Vadik(R)

Well-known member
12.12.2007
469
0
#11
Вот ещё вопрос, надеюсь последний ^_^
Вы, наверное, заметили, что последнее время задаю много вопросов. Это просто потому что решил создать программку на делфи с небольшим хоть каким-то интерфейсом, и узнать что-то новое. Уже давно на Делфи не писал ничего.
Ну вот в общем суть вопроса: вы наверное замечали, что у некоторых программ в меню есть слева значок, например для меню новый файл - обычно белый лист бумаги, открыть - открытая папочка, сохранить - дискета. Так вот, где эти значки берут? Некоторые рисуют сами - это видно, что значки не обычные. Но в большинстве случаев значки у "Новый файл", "Открыть", "Сохранить" и "О программе" в разных программах одинаковые. Я пытался искать эти значки в интернете, но попадал на сайты, где есть значки просто для программ, папок и т.д. А именно для меню программы - нет. Не подскажите, где можно добыть значки именно для меню?
Заранее спасибо.
 
E
#12
Познакомтель с TActionList (вроде так), у него кое что есть - из стандартного.
 

vital

Больной Компом Детектед
29.01.2006
2 432
34
#13
А еще вместе с самой дельфей идет набор картинок в папке Borland[codegear] shared(она нахоидится там, где указали при установке(там спрашивалось=).. Обычно C:\program file\borland shared если не ошибаюсь.. Я просто менял этот путь всегда), и вместе с студией от МС идут эти картинки тоже(не помню в какой папке)
 

Vadik(R)

Well-known member
12.12.2007
469
0
#14
vital, спасибо, правда там уж очень позорные иконки и их мало, лучше уж без них тогда ;)
Хотя может это зависит и от версии Delphi?
Но в любом случае, проблему я свою решил: они находятся в shell32.dll и comctl32.dll, так же в какой-то из библиотек находится и курсор для ссылки, который я так сильно искал в соседней теме ;)
 

vital

Больной Компом Детектед
29.01.2006
2 432
34
#15
Начиная с версии 2005 (или 2006.. опять же не понмю точно) вместе с дельфей помимо стандартных дельфийских идет набор картинок от студии GlyFX(в борланд шейред одноименная папка) так вот там весьма не позорные иконки.
А выдирать картинки редактором ресурсов.. Упаси боже) Зачем тратить время?