Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > Программа и интерфейс
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 25.03.2012, 17:04
binary binary вне форума
Прохожий
 
Регистрация: 24.03.2012
Сообщения: 16
Репутация: 10
По умолчанию проблема с работой функции SetMenuItemInfo

Доброго времени суток, уважаемые форумчане.
Недавно появилось желание расположить пункт главного меню "О программе" с правой стороны.
Рассмотрел пример использования GetMenuItemInfo и SetMenuItemInfo.
В итоге расположил следующий код в событиях OnCreate и OnPaint главной формы приложения и OnChange компонента
MainMenu:
Код:
var // определение глобальных переменных
mii: TMenuItemInfo;
MainMenu: hMenu;
Buffer: array[0..1000] of Char;
=========
// непосредственно код

MainMenu := Self.Menu.Handle;

mii.cbSize := SizeOf(mii) ;
mii.fMask := MIIM_TYPE;
mii.dwTypeData := Buffer;
mii.cch := SizeOf(Buffer);
GetMenuItemInfo(MainMenu, N21.Command, false, mii) ;

mii.fType := mii.fType or MFT_RIGHTJUSTIFY;
SetMenuItemInfo(MainMenu, N21.Command, false, mii) ;
Админ: Пользуемся тегами для оформления кода!

Всё работает. Однако заметил, что при деактивации какого-либо пункта меню (установка enabled в false) функция прекращает располагать нужный пункт меню с правой стороны.

Встречался ли кто с такой проблемой?
Заранее благодарен.

Последний раз редактировалось Admin, 25.03.2012 в 17:19.
Ответить с цитированием
  #2  
Старый 25.03.2012, 17:09
binary binary вне форума
Прохожий
 
Регистрация: 24.03.2012
Сообщения: 16
Репутация: 10
По умолчанию

С функцией ModifyMenu тоже самое
Ответить с цитированием
  #3  
Старый 25.03.2012, 17:53
Аватар для cotseec
cotseec cotseec вне форума
Активный
 
Регистрация: 16.07.2008
Сообщения: 353
Версия Delphi: D7,TDE06,RAD09
Репутация: 1443
По умолчанию

изменяете состояние пункта меню (enable/disable) тоже через SetMenuItemInfo?
также посмотрите в сторону DrawMenuBar
Ответить с цитированием
  #4  
Старый 25.03.2012, 18:01
binary binary вне форума
Прохожий
 
Регистрация: 24.03.2012
Сообщения: 16
Репутация: 10
По умолчанию

спасибо большое, но уже решил и именно через DrawMenuBar. Правда, стоит признаться, в некоторые моменты видно, как необходимый пункт меню перемещается в правую сторону (дергается при "перерисовке"). Обидно...
ещё раз спасибо.
Ответить с цитированием
Ответ


Delphi Sources

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

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 07:35.


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2023

ВКонтакте   Facebook   Twitter