Показать сообщение отдельно
  #2  
Старый 15.04.2013, 11:05
Аватар для Alegun
Alegun Alegun вне форума
LMD-DML
 
Регистрация: 12.07.2009
Адрес: Богородское
Сообщения: 3,025
Версия Delphi: D7E
Репутация: 1834
По умолчанию

Цитата:
Сообщение от Kpyc
Пытался через Screen.Menu.Font...
Это работает когда OwnerDraw у меню установлен в true, но изменить высоту пункта меню так не выйдет - если установить большой размер то пункты будут отрисовываться неправильно.

Вот пример как в DrawItem сменить цвет у шрифта и выделения, но легко изменить и другие его свойства
Код:
procedure TForm1.N1DrawItem(Sender: TObject; ACanvas: TCanvas;
  ARect: TRect; Selected: Boolean);
begin 
  MainMenu1.OwnerDraw:= true; { Обязательно }
  with ACanvas do
  begin
    Font.Color:=clRed;
    if Selected then
    begin
      Font.Color:=clRed;
      Brush.Color:=clGreen;
    end
    else
    begin
      Font.Color:=clGreen;
      Brush.Color:=clRed;
    end;
    Rectangle(ARect);
    TextOut(ARect.Left,ARect.Top,(Sender as TMenuItem).Caption);
  end;
end;
Цитата:
...высота меню не подстраивается под новый шрифт.
Это делается "ручками" при прорисовке на вывод менюшки перехватом WM_NCPAINT, а чтоб много не кодить можно СoolMenus использовать, он умеет это делать.

З.Ы. Вот ещё http://www.delphisources.ru/forum/showthread.php?t=7412
Ответить с цитированием