Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: Общие вопросы > Как окрасить меню в синий цвет?


Автор: Lenin 26.6.2002, 19:44
Здорова!

Ну, кто тут самый вумный, кто мне поможет окрасить PopupMenu1 в синий цвет, а шрифт сделать белым?
Я пытался сделать так:

Код
procedure TForm1.FormCreate(Sender: TObject);
begin
With PopupMenu1 Do
Begin
 Color:= clBlue;
 With Font Do
  Begin
   Color := clWhite;
  End;
End;
end;


Но таким способом окрашивается форма. Вообщем, жду Ваших советов.

P.S. Громоздкие компоненты не предлагать, не хочу загружать программу, она у меня и так "весит" не слабо.

Автор: Vit 26.6.2002, 21:16
Похоже что никак стандартными средствами, так как компонент только вызывает стандартные виндовые контролы. Надо полностью самому писать.

Автор: Mikel 26.6.2002, 22:56
Можно юзать skin компоненты.

Автор: Song 27.6.2002, 07:41
Вообще это не сложно конечно.... но никакой красоты не вижу:
Код
procedure TForm1.N11DrawItem(Sender: TObject; ACanvas: TCanvas;
 ARect: TRect; Selected: Boolean);
begin
With ACanvas Do
 Begin
  IF Selected then Brush.Color:=ClHighLight else Brush.Color:=ClBlue;
  FillRect(ARect);
  Font.Color:=ClWhite;
  With TMenuItem(Sender) Do TextOut(ARect.Left+2,ARect.Top+2,Copy(Caption,2,Length(Caption)));
 End;
end;

Поставьте этот обработчик на все пункты меню что хотите окрасить. Перед этим не забудьте выставить в ИО свойство TPopupMenu.OwnerDraw:=True
Рамку всплывающего окна тоже можно окрасить, но это уже на порядок сложнее.

Автор: Lenin 27.6.2002, 10:41
Ничего не понимаю. У TPopupMenu нет свойства OwnerDraw. Или я что-то неправильно делаю? И DrawItem - откуда, где?

P.S. Пишу в старом добром Delphi 3. Новые версии долго грузяться. Не люблю ждать!

Автор: RA 27.6.2002, 11:45
Есть замечательный компонент FlatMenu

http://www.torry.net/vcl/menus/menuenhancments/wikizflatmenu.zip

Автор: Lenin 27.6.2002, 12:04
2RAdmin

Компонент предназначен для Delphi 5-6!
Для Delphi 3 - большой привет!

Автор: Song 27.6.2002, 17:55
Цитата(Guest @ 27.6.2002, 11:41)
Ничего не понимаю. У TPopupMenu нет свойства OwnerDraw. Или я что-то неправильно делаю? И DrawItem - откуда, где?

P.S. Пишу в старом добром Delphi 3. Новые версии долго грузяться. Не люблю ждать!

У меня Д6. У меня есть это свойство.
В Д3 вряд ли получится... а насчёт долго грузиться - это вопрос риторический:
Win XP+A7V333E+Raid0+винт7200+Athlon XP 1500+
Всё будет грузить мгновенно  :D  :hehe

Автор: Lenin 27.6.2002, 18:50
Цитата
Win XP+A7V333E+Raid0+винт7200+Athlon XP 1500+


Долгая загрузка не за счет конфигурации машины, так сама программа организована. Я даже на этой почве не устанавливаю продукты фирмы Adobe, да и не люблю их.

Так что? Других предложений не будет по поводу окраски меню?

Автор: RA 27.6.2002, 22:18
Цитата(Guest @ 27.6.2002, 13:04)
2RAdmin

Компонент предназначен для Delphi 5-6!
Для Delphi 3 - большой привет!

Он с исходником. Попробуй.

Автор: Lenin 28.6.2002, 11:21
Цитата
Он с исходником. Попробуй.

Я попробовал, ничего хорошого с эти не вышло. Ладно. Нет ничего, без чего нельзя обойтись!

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)