|
Вопрос # 6 591/ вопрос решён / |
|
Здравствуйте, эксперты!
Работаю с компонентом PopupMenu. Мне удалось изменить цвет шрифта, цвет фона пунктов меню и цвет фона выбранного пункта меню. Но в этом случае не получается присвоить иконки "BMP" этим пунктам меню. Попытка добавления компонента ImageList и установка ссылки типа PopupMenu.Images:= ImageList1 не увенчалась успехом. Присваивание иконки напрямую посредством N5.Bitmap так же, увы не помогло. Пожалуйста помогите разобраться!
Приложение: Переключить в обычный режим- private MyFont: TFont;
-
- procedure TForm1.FormCreate(Sender: TObject);
- begin
- MyFont:= TFont.Create;
- with MyFont do
- begin
- Assign(Font);
- Name:= 'Times New Roman';
- Size:= 11;
- end;
- end;
-
- procedure TForm1.N7DrawItem(Sender: TObject; ACanvas: TCanvas;
- ARect: TRect; Selected: Boolean);
- var
- M: TMenuItem;
- begin
- M:= Sender as TMenuItem;
- ACanvas.Color.Assign(MyFont);
- ACanvas.Font.Color:= clBlue;
- ACanvas.Brush.Color:= IfThen(Selected, clRed, clYellow);
- ACanvas.FillRect(ARect);
- DrawText(ACanvas.Handle, PChar(M.Caption), Length(M.Caption), ARect, 0);
- end;
-
- procedure TForm1.N7MeasureItem(Sender: TObject; ACanvas: TCanvas;
- var Width, Height: Integer);
- begin
- Canvas.Font.Assign(MyFont);
- Width:= Canvas.TextWidth(TMenuItem(Sender).Caption);
- Height:= Canvas.TextHeight(TMenuItem(Sender).Caption);
- end;
-
- procedure TForm1.FormDestroy(Sender: TObject);
- begin
- FreeAndNil(MyFont);
- end;
|
Вопрос задал: FANTOMAS (статус: Посетитель)
Вопрос отправлен: 19 июля 2015, 14:25
Состояние вопроса: решён, ответов: 1.
|
Ответ #1. Отвечает эксперт: DNK
Здравствуйте, FANTOMAS!
Что вы там пытаетесь присваивать, если запретили стандартную отрисовку. Назвались груздем?
Приложение: Переключить в обычный режим- procedure TForm1.N7DrawItem(Sender: TObject; ACanvas: TCanvas;
- ARect: TRect; Selected: Boolean);
- var
- M: TMenuItem;
- begin
- M:= Sender as TMenuItem;
- ACanvas.Font.Assign(MyFont);
- ACanvas.Font.Color:= clBlue;
- ACanvas.Brush.Color:= IfThen(Selected, clRed, clYellow);
- ACanvas.FillRect(ARect);
- ACanvas.TextRect(Rect, Rect.Left + ImageList1.Width, Rect.Top, M.Caption);
- ImageList1.Draw(ACanvas, ARect.Left, ARect.Top, M.ImageIndex);
- end;
-
- procedure TForm1.N7MeasureItem(Sender: TObject; ACanvas: TCanvas;
- var Width, Height: Integer);
- begin
- Canvas.Font.Assign(MyFont);
- Width:= Canvas.TextWidth(TMenuItem(Sender).Caption) + ImageList1.Width;
- Height:= Canvas.TextHeight(TMenuItem(Sender).Caption);
- end;
|
Ответ отправил: DNK (статус: Студент)
Время отправки: 20 июля 2015, 17:08
|
Мини-форум вопроса
Всего сообщений: 2; последнее сообщение — 20 июля 2015, 17:10; участников в обсуждении: 2.
|
min@y™ (статус: Доктор наук), 19 июля 2015, 15:30 [#1]:
тут нету никого.
туда иди ----> http://programmersforum.ru/index.php
Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп!
|
|
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): Я так думаю...
Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте.
|