Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: Общие вопросы > Картинка в PopupMenu


Автор: МММ 7.9.2005, 07:46
Есть код
Код

...
var
  Form1: TForm1;
  PopupMenuNew:TPopupMenu;
  bbb,bbb2: Tbitmap;

... 

procedure TForm1.Button1Click(Sender: TObject);
var
 I,J: Integer;
 Items: array of TMenuItem;
begin
PopupMenuNew := TPopupMenu.Create(Self);
SetLength(Items,2);
Items[0]:= NewItem('ОДИН', 0, false, true, Button2Click, 0, 'MenuItem1');
Items[1]:= NewItem('ДВА', 0, false, true, Button2Click, 0, 'MenuItem1');
PopupMenuNew.Items.add(NewSubMenu('3344535',0,'MenuSubItem',Items,True));
PopupMenuNew.Items.add(NewLine);
PopupMenuNew.Items.add(NewItem('Настройка', 0, false, true,Button2Click , 0, 'SetMenu'));
PopupMenuNew.Items.add(NewLine);
PopupMenuNew.Items.add(NewItem('Выход', 0, false, true, Button2Click, 0, 'ExitMenu'));
PopupMenuNew.AutoPopup:=true;
Form1.PopupMenu:=PopupMenuNew;
end;

...

procedure TForm1.Button2Click(Sender: TObject);

begin
bbb:=Tbitmap.Create;
bbb.LoadFromFile('C:\111.bmp');
bbb.Width:=8;
bbb.Height:=8;
bbb2:=Tbitmap.Create;
bbb2.LoadFromFile('C:\112.bmp');
bbb2.Width:=8;
bbb2.Height:=8;
SetMenuItemBitmaps(PopupMenuNew. Handle,
                     0,
                     MF_BYPOSITION,
                     bbb.Handle,
                     0);
SetMenuItemBitmaps(PopupMenuNew.Handle,
                     2,
                     MF_BYPOSITION,
                     bbb2.Handle,
                     0);

end;

procedure TForm1.FormDestroy(Sender: TObject);
begin
bbb.free;
bbb2.free;
end;

...




во первых не работает , не добавляет картинки к пунктам ?
во ввторых , если заработает , как добавить картинку в SUBMENU ?

еще делал так, но данный код:
Код

procedure TForm1.Button3Click(Sender: TObject);
var
 hHandle: THandle;
 x: integer;
begin
 hHandle := GetMenuItemID(PopupMenuNew.handle, 2);
 ModifyMenu(PopupMenuNew.handle, hHandle, MF_BYPOSITION or MF_BITMAP,
 hHandle, PChar(bbb.handle));
 hHandle := GetMenuItemID(PopupMenuNew.handle, 1);
 ModifyMenu(PopupMenuNew.handle, hHandle, MF_BYCOMMAND or MF_BITMAP,
 hHandle, PChar(bbb2.handle));
end;




добавляет почему то новый пункт меню, который являеться картинкой

что можно сказать по данному поводу , помогите плиз ?

Автор: Budy 7.9.2005, 09:29
А к чему сложности. Сделай с помощью TImageList:
-Ставишь на форму ImageList1:TImageList, грузишь в него картинки какие надо
-При создании своей PopupMenu укажи PopupMenuNew.Images:=ImageList1;
-А потом у каждого пункта меню выбирай ImageIndex:=*** (номер картинки в ImageList)

Автор: МММ 7.9.2005, 11:09
Спасибо !!!
уже разобрался smile

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)