Как разместить маленькие картинки в компоненте 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;
 
« Предыдущая статья   Следующая статья »