OberonCore https://forum.oberoncore.ru/ |
|
Вложенные меню https://forum.oberoncore.ru/viewtopic.php?f=24&t=247 |
Страница 1 из 1 |
Автор: | Kubanych [ Пятница, 16 Июнь, 2006 08:18 ] |
Заголовок сообщения: | Вложенные меню |
Здравствуйте. Не подскажете, как на blackbox делать вложенные меню? Обычные меню как делать ясно. Заранее благодарю. С уважением, Кубаныч. |
Автор: | Иван Горячев [ Пятница, 16 Июнь, 2006 09:44 ] |
Заголовок сообщения: | Re: Вложенные меню |
Kubanych писал(а): Здравствуйте.
Не подскажете, как на blackbox делать вложенные меню? Обычные меню как делать ясно. Заранее благодарю. С уважением, Кубаныч. На сайте CPC есть подсистема CpcMenus. Она как раз для этого, но накладывает некоторые ограничения (когда я её смотрел - нельзя было назначать вложенным пунктам горячие клавиши, сейчас может что изменилось). |
Автор: | Kubanych [ Пятница, 16 Июнь, 2006 11:24 ] |
Заголовок сообщения: | |
Наверное, я неправильно выразился. Нужно такое вложенное меню, как, например, в системном меню "Пуск" при выборе пункта "Программы" выходит другое (вложенное) меню со своими пунктами для выбора. CpcMenus только помогает отключить неиспользуемые пункты меню. |
Автор: | Иван Горячев [ Пятница, 16 Июнь, 2006 11:31 ] |
Заголовок сообщения: | |
Обшибся подсистемой ![]() |
Автор: | Kubanych [ Понедельник, 19 Июнь, 2006 07:34 ] |
Заголовок сообщения: | |
Спасибо |
Автор: | Иван Кузьмицкий [ Пятница, 02 Май, 2008 17:32 ] |
Заголовок сообщения: | Re: Вложенные меню |
Оригинальный модуль CpcDropDown глючит с русскими названиями пунктов меню (BlackBox 1.5re026). Пришлось модуль доработать напильником с использованием процедуры MtStrings.ToUnicode: Код: PROCEDURE MakeDropDowns*;
VAR m: HostMenus.Menu; item: StdDialog.Item; res: INTEGER; hMenu: WinApi.HMENU; dst: ARRAY 100 OF CHAR; (*добавлено - Кузьмицкий И.*) BEGIN m := HostMenus.FirstMenu(); WHILE m # NIL DO item := m.firstItem; WHILE item # NIL DO IF (LEN(item.string$) > 0) & (item.string[0] = "$") THEN hMenu := GetHandle(item.string); IF hMenu # WinApi.NULL THEN MtStrings.ToUnicode(item.item^, dst); (*добавлено - Кузьмицкий И.*) (*убрано в комментарий - Кузьмицкий И. res := WinApi.ModifyMenuW(HostMenus.menuBar, item(HostMenus.Item).id, WinApi.MF_BYCOMMAND + WinApi.MF_POPUP + WinApi.MF_STRING, hMenu, item.item^) *) res := WinApi.ModifyMenuW(HostMenus.menuBar, item(HostMenus.Item).id, WinApi.MF_BYCOMMAND + WinApi.MF_POPUP + WinApi.MF_STRING, hMenu, dst) (*правка - Кузьмицкий И.*) END END; item := item.next END; m := m.next END END MakeDropDowns; |
Страница 1 из 1 | Часовой пояс: UTC + 3 часа |
Powered by phpBB® Forum Software © phpBB Group https://www.phpbb.com/ |