Экспертная система Delphi.int.ru

Сообщество программистов
Общение, помощь, обмен опытом

Логин:
Пароль:
Регистрация | Забыли пароль?

Delphi.int.ru Expert

Другие разделы портала

Переход к вопросу:

#   

Статистика за сегодня:  


Лучшие эксперты

Подробнее »



Вопрос # 6 591

/ вопрос решён /

Здравствуйте, эксперты!
Работаю с компонентом PopupMenu. Мне удалось изменить цвет шрифта, цвет фона пунктов меню и цвет фона выбранного пункта меню. Но в этом случае не получается присвоить иконки "BMP" этим пунктам меню. Попытка добавления компонента ImageList и установка ссылки типа PopupMenu.Images:= ImageList1 не увенчалась успехом. Присваивание иконки напрямую посредством N5.Bitmap так же, увы не помогло. Пожалуйста помогите разобраться!

Приложение:
  1. private MyFont: TFont;
  2.  
  3. procedure TForm1.FormCreate(Sender: TObject);
  4. begin
  5. MyFont:= TFont.Create;
  6. with MyFont do
  7. begin
  8. Assign(Font);
  9. Name:= 'Times New Roman';
  10. Size:= 11;
  11. end;
  12. end;
  13.  
  14. procedure TForm1.N7DrawItem(Sender: TObject; ACanvas: TCanvas;
  15. ARect: TRect; Selected: Boolean);
  16. var
  17. M: TMenuItem;
  18. begin
  19. M:= Sender as TMenuItem;
  20. ACanvas.Color.Assign(MyFont);
  21. ACanvas.Font.Color:= clBlue;
  22. ACanvas.Brush.Color:= IfThen(Selected, clRed, clYellow);
  23. ACanvas.FillRect(ARect);
  24. DrawText(ACanvas.Handle, PChar(M.Caption), Length(M.Caption), ARect, 0);
  25. end;
  26.  
  27. procedure TForm1.N7MeasureItem(Sender: TObject; ACanvas: TCanvas;
  28. var Width, Height: Integer);
  29. begin
  30. Canvas.Font.Assign(MyFont);
  31. Width:= Canvas.TextWidth(TMenuItem(Sender).Caption);
  32. Height:= Canvas.TextHeight(TMenuItem(Sender).Caption);
  33. end;
  34.  
  35. procedure TForm1.FormDestroy(Sender: TObject);
  36. begin
  37. FreeAndNil(MyFont);
  38. end;


FANTOMAS Вопрос решён, но можно продолжить его обсуждение в мини-форуме

Вопрос задал: FANTOMAS (статус: Посетитель)
Вопрос отправлен: 19 июля 2015, 14:25
Состояние вопроса: решён, ответов: 1.

Ответ #1. Отвечает эксперт: DNK

Здравствуйте, FANTOMAS!
Что вы там пытаетесь присваивать, если запретили стандартную отрисовку. Назвались груздем?

Приложение:
  1. procedure TForm1.N7DrawItem(Sender: TObject; ACanvas: TCanvas;
  2. ARect: TRect; Selected: Boolean);
  3. var
  4. M: TMenuItem;
  5. begin
  6. M:= Sender as TMenuItem;
  7. ACanvas.Font.Assign(MyFont);
  8. ACanvas.Font.Color:= clBlue;
  9. ACanvas.Brush.Color:= IfThen(Selected, clRed, clYellow);
  10. ACanvas.FillRect(ARect);
  11. ACanvas.TextRect(Rect, Rect.Left + ImageList1.Width, Rect.Top, M.Caption);
  12. ImageList1.Draw(ACanvas, ARect.Left, ARect.Top, M.ImageIndex);
  13. end;
  14.  
  15. procedure TForm1.N7MeasureItem(Sender: TObject; ACanvas: TCanvas;
  16. var Width, Height: Integer);
  17. begin
  18. Canvas.Font.Assign(MyFont);
  19. Width:= Canvas.TextWidth(TMenuItem(Sender).Caption) + ImageList1.Width;
  20. Height:= Canvas.TextHeight(TMenuItem(Sender).Caption);
  21. end;


Ответ отправил: DNK (статус: Студент)
Время отправки: 20 июля 2015, 17:08


Мини-форум вопроса

Всего сообщений: 2; последнее сообщение — 20 июля 2015, 17:10; участников в обсуждении: 2.
min@y™

min@y™ (статус: Доктор наук), 19 июля 2015, 15:30 [#1]:

тут нету никого.
туда иди ----> http://programmersforum.ru/index.php
Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп!
DNK

DNK (статус: Студент), 20 июля 2015, 17:10 [#2]:

FANTOMAS: ничего не смущает?
ACanvas.Color.Assign(MyFont);
"Digital Networked Knight"

4 октября 2015, 14:52: Вопрос перемещён из тематического раздела Delphi » Общие вопросы по программированию в раздел Delphi » Работа с компонентами и библиотеками модератором Ерёмин А.А.

27 декабря 2015, 13:46: Статус вопроса изменён на решённый (изменил модератор DNK): Я так думаю...

Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте.

Версия движка: 2.6+ (26.01.2011)
Текущее время: 16 ноября 2024, 15:52
Выполнено за 0.02 сек.