添加TMenuItem位图

Non*_*ono 3 delphi bitmap menuitem

我想为动态创建的TMenuItem添加一个位图.使用此代码它不起作用,我的菜单上没有图像.怎么了?

procedure TForm3.FormCreate(Sender: TObject);
var
   item : TmenuItem;
   icon : TIcon;
begin
   item := TMenuItem.Create(PopupMenu1);
   item.Caption := 'coucou';
   icon := TIcon.Create;
   icon.LoadFromFile('d:\SmallIcon.ico');
   icon.Height := 16;
   icon.Width := 16;
   item.Bitmap.Canvas.Draw(0,0,icon);
   PopupMenu1.Items.Add(item);
end;
Run Code Online (Sandbox Code Playgroud)

Dav*_*nan 8

Bitmap物业TMenuItem不是去这里的方式.你真的应该使用图像列表.这将允许您以可管理的方式在UI元素之间共享图像.

  1. 将图标添加到a TImageList.
  2. Images在菜单上设置属性(即PopupMenu1)以引用图像列表.
  3. 将菜单项的图像索引设置为列表中图标的索引,即如果是第一个图像则为0.

当然,你真的应该使用的动作也一样,在这种情况下,你只需要设置ImageIndex的行动,这个框架将其分配给菜单项的照顾.

顺便说一句,我想指出的是,Delphi实现Vista的主题菜单有大量微妙的错误,涉及到图像的绘制了许多.但是,这些错误在视觉冲击方面相对较小.