Модераторы: Poseidon, Snowy, bems, MetalFan
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> TMainMenu шрифт 
:(
    Опции темы
Fomaa
Дата 19.10.2007, 14:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 122
Регистрация: 27.6.2007

Репутация: нет
Всего: нет



Как поменять размер шрифта для компоненты TMainMenu?
PM MAIL   Вверх
VICTAR
Дата 19.10.2007, 15:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник
Сообщений: 1108
Регистрация: 6.10.2006

Репутация: 37
Всего: 80



OwnerDraw+OnMeasureItem+OnDrawItem
PM MAIL   Вверх
Fomaa
Дата 23.10.2007, 10:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 122
Регистрация: 27.6.2007

Репутация: нет
Всего: нет



а можно объяснить это?
PM MAIL   Вверх
Anakin
Дата 23.10.2007, 11:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 192
Регистрация: 25.9.2006

Репутация: нет
Всего: нет



Вот у меня тоже сегодня возник такой вопрос.. можно по подробней ??

PM MAIL   Вверх
Alix
Дата 23.10.2007, 13:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


L45
**


Профиль
Группа: Участник
Сообщений: 581
Регистрация: 4.5.2005
Где: Pskov/Spb

Репутация: 7
Всего: 23



чего-то меня глючит, но вроде так:
Код
type
  TForm1 = class(TForm)
    MainMenu1: TMainMenu;
    N1: TMenuItem;
    ...
    N9: TMenuItem;
    procedure FormCreate(Sender: TObject);
  private
    procedure DrawItem(Sender: TObject; ACanvas: TCanvas;
      ARect: TRect; State: TOwnerDrawState);
  end;

...

procedure TForm1.DrawItem(Sender: TObject; ACanvas: TCanvas;
  ARect: TRect; State: TOwnerDrawState);
var
  s : string;

begin
  with acanvas do begin
    if odSelected in state then
      brush.color := clLime
    else
      brush.Color := clBlack;

    FillRect(arect);

    if odSelected in State then
      font.Color := clBlack
    else
      font.Color := clLime;

    s := (sender as TMenuItem).Caption;
    if s = '-' then begin
      pen.Color := clLime;
      moveto(ARect.Left, arect.Top);
      lineto(arect.Right, arect.Top);
    end else begin
      offsetrect(arect, 5, 2);
      DrawText(Handle, pchar(s), length(s), arect, 0);
    end;
  end;
end;

procedure setItemDrawPropertyTo(mi : TMenuItem);
var
  i : integer;

begin
  mi.OnAdvancedDrawItem := Form1.DrawItem;
  for i := 0 to mi.Count-1 do
    setItemDrawPropertyTo(mi.Items[i]);
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
  setItemDrawPropertyTo(MainMenu1.Items);
end;

То что рисуется - просто демо, не воспринимайте так уж всерьез, setItemDrawProperty нужна чтобы выставить всем item'ам наш обработчик рисования, а не делать это вручную в редакторе mainmenu. В самом MainMenu все что надо - выставить OwnerDraw := True


--------------------
Знание только тогда знание, когда оно приобретено усилиями своей мысли, а не памятью (с) Л. Толстой
High tech. Low live. (с) Gardner Dozois
PM MAIL ICQ Skype   Вверх
Fomaa
Дата 23.10.2007, 14:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 122
Регистрация: 27.6.2007

Репутация: нет
Всего: нет



Нашел такой вариант решения задачи:
Код

var ncm: TNonClientMetrics;
begin
  ncm.cbSize := SizeOf(TNonClientMetrics);
  SystemParametersInfo(SPI_GETNONCLIENTMETRICS, SizeOf(TNonClientMetrics), @ncm, 0);
  ncm.lfMenuFont.lfFaceName := 'Arial';
  ncm.lfMenuFont.lfHeight:=20;
  SystemParametersInfo(SPI_SETNONCLIENTMETRICS, SizeOf(TNonClientMetrics), @ncm, 0);

PM MAIL   Вверх
Alix
Дата 23.10.2007, 14:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


L45
**


Профиль
Группа: Участник
Сообщений: 581
Регистрация: 4.5.2005
Где: Pskov/Spb

Репутация: 7
Всего: 23



это затронет ВСЕ окна в системе, если только они не самоотрисовывающиеся


--------------------
Знание только тогда знание, когда оно приобретено усилиями своей мысли, а не памятью (с) Л. Толстой
High tech. Low live. (с) Gardner Dozois
PM MAIL ICQ Skype   Вверх
Anakin
Дата 24.10.2007, 11:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 192
Регистрация: 25.9.2006

Репутация: нет
Всего: нет



Если чесно то вареант Alix я не понял (

PM MAIL   Вверх
Alix
Дата 24.10.2007, 11:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


L45
**


Профиль
Группа: Участник
Сообщений: 581
Регистрация: 4.5.2005
Где: Pskov/Spb

Репутация: 7
Всего: 23



Anakin, какой конкретно момент не понятен? Про setItemDrawProperty? Или вообще все? Быть может весь проект облегчит понимание.

Присоединённый файл ( Кол-во скачиваний: 9 )
Присоединённый файл  DrawMenuExample.rar 1,18 Kb


--------------------
Знание только тогда знание, когда оно приобретено усилиями своей мысли, а не памятью (с) Л. Толстой
High tech. Low live. (с) Gardner Dozois
PM MAIL ICQ Skype   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Общие вопросы"
SnowyMetalFan
bemsPoseidon
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.1242 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.