Delphi-Help

Главная Статьи Всплывающее меню (PopupMenu) Как разместить маленькие картинки в компоненте TPopUpMenu?

Как разместить маленькие картинки в компоненте TPopUpMenu?

Оцените материал
(0 голосов)


Как разместить маленькие картинки в компоненте TPopUpMenu?

Вопрос:

Как разместить маленькие картинки в компоненте TPopUpMenu?

Ответ:

В приведенном примере показано как это сделать с использованием функции Windows API SetMenuItemBitmaps(). Эта функция получает handle popup menu, позицию строчки меню куда будет помещена картинка, и два дескриптора(handles) на две картинки (одна из них – картинка которая будет показана когда строка меню доступна, вторая – когда строка меню недоступна).

type
      TForm1 = class(TForm)
            PopupMenu1: TPopupMenu;
            Pop11: TMenuItem;
            Pop21: TMenuItem;
            Pop31: TMenuItem;
            procedure FormCreate(Sender: TObject);
            procedure FormDestroy(Sender: TObject);
            procedure FormMouseUp(Sender: TObject; Button: TMouseButton;
                                         Shift: TShiftState; X, Y: Integer);
      private
            {Private declarations}
            bmUnChecked : TBitmap;
            bmChecked : TBitmap;
      public
            {Public declarations}
end;
var
      Form1: TForm1;
 
implementation
 
{$R *.DFM}
 
procedure TForm1.FormCreate(Sender: TObject);
begin
      bmUnChecked := TBitmap.Create;
      bmUnChecked.LoadFromFile('C:\Program Files\Borland\BitBtns\ALARMRNG.BMP');
      bmChecked := TBitmap.Create;
      bmChecked.LoadFromFile('C:\Program Files\Borland\BitBtns\CHECK.BMP');
      {Add the bitmaps to the item at index 1 in PopUpMenu}
      SetMenuItemBitmaps(PopUpMenu1.Handle,1,MF_BYPOSITION,BmUnChecked.Handle,
                                                     BmChecked.Handle);
end;
 
procedure TForm1.FormDestroy(Sender: TObject);
begin
      bmUnChecked.Free;
      bmChecked.Free;
end;
 
procedure TForm1.FormMouseUp(Sender: TObject; Button: TMouseButton;
                                   Shift: TShiftState; X, Y: Integer);
var
      pt : TPoint;
begin
      pt := ClientToScreen(Point(x, y));
      PopUpMenu1.Popup(pt.x, pt.y);
end;
Другие материалы в этой категории: « Контекстное всплывающее меню — компонент PopupMenu

Авторизация



Счетчики