// Bei einem Popupmenü wird der oberste Menüpunkt als Bild angezeigt.
// Auf die Art kann beispielsweise ein Banner in das Popupmenü
// eingebracht werden. Im Beispiel heißt der oberste Menüpunkt "N1".
// Das Bild sollte mindestens so breit sein, wie der breiteste
// Texteintrag des Menüs. Querverweis:
Popup Menüs selbst gestalten

// Getestet mit D4 unter WinME
type 
  TForm1 = class(TForm) 
    Panel1: TPanel; 
    PopupMenu1: TPopupMenu; 
    N1: TMenuItem; 
    test1: TMenuItem; 
    test2: TMenuItem; 
    procedure N1DrawItem(Sender: TObject; ACanvas: TCanvas; ARect: TRect; 
      Selected: Boolean); 
    procedure N1MeasureItem(Sender: TObject; ACanvas: TCanvas; var Width, 
      Height: Integer); 
    procedure FormShow(Sender: TObject); 
    procedure FormDestroy(Sender: TObject); 
  private 
{ Private-Deklarationen } 
  public 
{ Public-Deklarationen } 
  end; 
 
var 
  Form1: TForm1; 
 
implementation 
 
{$R *.DFM} 
 
const 
  abstand = 5; 
 
var 
  bm: TBitmap; 
 
procedure TForm1.FormShow(Sender: TObject); 
begin 
  if bm = nil then begin 
    N1.caption := ''; 
    bm := TBitmap.create; 
    bm.loadfromfile('d:\bilder\banner.bmp'); 
    PopupMenu1.OwnerDraw := true; 
    Panel1.popupmenu := popupmenu1; // z.B. 
  end; 
end; 
 
procedure TForm1.FormDestroy(Sender: TObject); 
begin 
  bm.free; 
end; 
 
procedure TForm1.N1MeasureItem(Sender: TObject; ACanvas: TCanvas; 
  var Width, Height: Integer); 
begin 
  width := bm.width - 12; 
  height := bm.height + 6 + abstand; 
end; 
 
procedure TForm1.N1DrawItem(Sender: TObject; ACanvas: TCanvas; 
  ARect: TRect; Selected: Boolean); 
begin 
  ACanvas.draw(0, 0, bm); 
end;



Zugriffe seit 6.9.2001 auf Delphi-Ecke