Hallo Robert,
nene. Jeden Eintrag per Hand zuzuweisen, wäre mir auch zu aufwändig gewesen.
Im Prinzip verfolgen wir ja beide die gleiche Idee - ich hatte es nun noch vom Form gelöst. Die erste Methode ist öffentlich und arbeitet sich ein beliebiges Menü. Die zweite Methode ist im 'private'-Abschnitt meiner Klasse deklariert und verrichtet die eigentliche 'Drecksarbeit'.
Delphi-Quellcode:
Procedure t_MenuPainter.AttachToMenu( aMenu : TMenu );
var mIndex : Integer;
Begin
aMenu.OwnerDraw:= TRUE;
For mIndex:= 0 To aMenu.Items.Count-1 Do
AttachToMenuItem( aMenu.Items.Items[mIndex] );
End;
Procedure t_MenuPainter.AttachToMenuItem( aMenuItem : TMenuItem );
var mIndex : Integer;
Begin
aMenuItem.OnMeasureItem:= doMeasureItem;
aMenuItem.OnAdvancedDrawItem:= doAdvancedPaint;
For mIndex:= 0 To aMenuItem.Count-1 Do
AttachToMenuItem( aMenuItem.Items[mIndex] );
End;
Lolli -->