powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Отрисовка пункта меню своим цветом
1 сообщений из 1, страница 1 из 1
Отрисовка пункта меню своим цветом
    #39918379
Stalker4
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Hi All,

Delphi 10.3.3

Есть контекстное меню. Мне нужно некоторые пункты этого меню отрисовать своим цветом.
Для этого на соответствующие MenuItem вешаю обработчик OnDrawItem:
Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
procedure TForm1.MenuitemDrawItem(Sender: TObject; ACanvas: TCanvas; ARect: TRect; Selected: Boolean);
var
  oAction :TAction;
  nOffSet :Integer;

begin

 oAction := ((Sender as TMenuItem).Action as TAction);

 if TOSVersion.Major < 6 then // WinXP и ниже
   nOffSet := 22
 else                         // Windows 7 и выше
   nOffSet := 32;

 if oAction.Tag = 1 then
   ACanvas.Font.Color := clRed
 else
 if oAction.Tag = 2 then
   ACanvas.Font.Color := clPurple;

 ACanvas.FillRect(ARect);
 ACanvas.TextOut(ARect.Left+nOffSet, ARect.Top, oAction.Caption)

end; 


В принципе вывод текста (Caption) пункта меню работает, но как то не очень красиво рисуется цвет фона пункта меню, особенно если этот пункт меню текущий (т.е. к нему сейчас подведена мышь).
Этот цвет отличается от пунктом меню, которые я не отрисовываю.

А если для программы включить какую нибудь тему, отличную от Windows, например Luna, то все еще хуже - у текущего элемента фон выделения вообще не прорисовывается, а у остальных пунктов меню (которые я отрисовываю, но которые не текущие) цвет фона отличается от других пунктов меню, которые рисуются сами.

В общем очень нужна помощь, в написании правильного кода отрисовки текстов пунктов меню своим цветом, что бы не было проблем с цветом фона, в том числе и при использовании тем (если последнее конечно возможно).
...
Рейтинг: 0 / 0
1 сообщений из 1, страница 1 из 1
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Отрисовка пункта меню своим цветом
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]