Hola.
Utilizando
TSpeedButton y
TPopupMenu algo que se me ocurre es:
Código Delphi
[-]
...
type
TSpeedButton = class(Buttons.TSpeedButton)
procedure CMMouseEnter(var Msg: TMessage); message CM_MOUSEENTER;
end;
TForm1 = class(TForm)
SpeedButton1: TSpeedButton;
SpeedButton2: TSpeedButton;
SpeedButton3: TSpeedButton;
PopupMenu1: TPopupMenu;
MenuItem11: TMenuItem;
...
PopupMenu2: TPopupMenu;
MenuItem21: TMenuItem;
...
PopupMenu3: TPopupMenu;
MenuItem31: TMenuItem;
...
ImageList1: TImageList;
ImageList2: TImageList;
ImageList3: TImageList;
...
procedure MenuItemClick(Sender: TObject);
...
private
public
end;
...
implementation
procedure TSpeedButton.CMMouseEnter(var Msg: TMessage);
var
PopUpM: TPopupMenu;
begin
case Tag of 1: PopUpM:= Form1.PopupMenu1;
2: PopUpM:= Form1.PopupMenu2;
3: PopUpM:= Form1.PopupMenu3;
end;
PopUpM.Popup(ClientOrigin.X + 10, ClientOrigin.Y+Top);
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
SpeedButton1.Tag:= 1;
SpeedButton2.Tag:= 2;
SpeedButton3.Tag:= 3;
...
end;
procedure TForm1.MenuItemClick(Sender: TObject);
begin
ShowMessage(TMenuItem(Sender).Name); end;
...
Las imágenes se visualizan asociando los
TImageList a los
TPopupMenu.
Un saludo.