Карта сайта Kansoftware
НОВОСТИУСЛУГИРЕШЕНИЯКОНТАКТЫ
KANSoftWare

Как поместить маленькие битмапы в TPopupMenu

Delphi , Компоненты и Классы , Меню

Как поместить маленькие битмапы в TPopupMenu

Следующий пример демонстрирует добавление битмапа в пункт PopUpMenu при помощи API функции SetMenuItemBitmaps(). Эта функция имеет следующие параметры: дескриптор всплывающего меню, номер (начиная с нуля) пункта меню в который мы хотим добаить битмап, и два дескриптора битмапов (одна картинка для меню в активном состоянии, а вторая для неактивного состояния).


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');
  {Добавляем битмапы в пункт меню начиная с 1 в 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;

Программный код, который вы предоставили, это приложение Delphi, создаваемое для отображения меню с битмап-изображениями для пунктов меню. Процедура FormCreate - это место, где загружаются и устанавливаются битмапы для пунктов меню с помощью функции SetMenuItemBitmaps.

Вот что код делает:

  1. Он загружает два битмапа из файлов: ALARMRNG.BMP и CHECK.BMP. Эти битмапы будут использоваться как изображения для пунктов меню.
  2. В процедуре FormCreate он устанавливает битмапы для первого пункта меню с помощью функции SetMenuItemBitmaps.

Однако, есть маленькая проблема в коде: метод LoadFromFile возвращает тип TBitMapHandle, а не TBitmap. Поэтому нужно использовать bmUnChecked.Handle и bmChecked.Handle вместо bmUnChecked и bmChecked при вызове функции SetMenuItemBitmaps.

Вот обновленная версия кода:

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');

  SetMenuItemBitmaps(PopupMenu1.Handle, 0, MF_BYPOSITION, bmUnChecked.Handle, bmChecked.Handle);
end;

Обратите внимание, что теперь номер пункта меню в функции SetMenuItemBitmaps установлен на 0, а не на 1. Это потому, что Delphi использует нулевую индексацию для пунктов меню.

Также процедура FormDestroy используется для освобождения битмапов при уничтожении формы:

procedure TForm1.FormDestroy(Sender: TObject);
begin
  bmUnChecked.Free;
  bmChecked.Free;
end;

В целом, этот код создает меню с битмап-изображениями для пунктов меню. Процедура FormCreate загружает битмапы и устанавливает их для пунктов меню с помощью функции SetMenuItemBitmaps. Процедура FormDestroy освобождает битмапы при уничтожении формы.

Перевод на русский язык:

В статье описывается, как добавить маленькие битмапы в TPopupMenu при помощи API-функции SetMenuItemBitmaps().


Комментарии и вопросы

Получайте свежие новости и обновления по Object Pascal, Delphi и Lazarus прямо в свой смартфон. Подпишитесь на наш Telegram-канал delphi_kansoftware и будьте в курсе последних тенденций в разработке под Linux, Windows, Android и iOS




Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.


:: Главная :: Меню ::


реклама


©KANSoftWare (разработка программного обеспечения, создание программ, создание интерактивных сайтов), 2007
Top.Mail.Ru

Время компиляции файла: 2024-08-19 13:29:56
2024-11-21 11:52:53/0.0056581497192383/1