Two functions (FixOwnerDrawnMenu, FixOwnerDrawnMenu1) needs to be copied to the Delphi project. Any form that has owner drawn menu item can call the function FixOwnerDrawnMenu( ). An optimal place would be the MenuChange Event. For eg, ------------------------ procedure TForm1.MainMenu1Change(Sender: TObject; Source: TMenuItem; Rebuild: Boolean); var m : TMenu; begin m := Sender as TMenu; FixOwnerDrawnMenu( m ); end; ------------------------ The script runs through all the menu items looking for owner drawn menu item. when it finds one, it just copies the caption from delphi object to the menu item. This allows Menu VP to list it. Script follows: ------------------------ procedure FixOwnerDrawnMenu1( m: TMenuItem ); var childmenucount : Integer; hm : HMENU; i : Integer; mii : MENUITEMINFO; begin if ( m <> nil ) then begin hm := m.Handle; childmenucount := GetMenuItemCount( hm ); for i := 0 to childmenucount - 1 do begin mii.cbSize := 48; mii.fMask := MIIM_SUBMENU + MIIM_FTYPE; mii.hSubMenu := 0; GetMenuItemInfo( hm, i, True, mii ); if ( mii.hSubMenu <> 0 ) then begin FixOwnerDrawnMenu1( m.Items[ i ] ); end else if ( ( mii.fType and MFT_OWNERDRAW ) <> 0 ) then begin; mii.fMask := MIIM_STRING; mii.dwTypeData := PChar( (m.Items[ i ].Caption) ); SetMenuItemInfo( hm, i, True, mii ); OutputDebugString( PChar( m.Items[ i ].Caption ) ); end; end; end; end; procedure FixOwnerDrawnMenu( m: TMenu ); var childmenucount : Integer; hm : HMENU; i : Integer; mii : MENUITEMINFO; begin if ( m <> nil ) then begin hm := m.Handle; childmenucount := GetMenuItemCount( hm ); for i := 0 to childmenucount - 1 do begin mii.cbSize := 48; mii.fMask := MIIM_SUBMENU + MIIM_FTYPE; mii.hSubMenu := 0; GetMenuItemInfo( hm, i, True, mii ); if ( mii.hSubMenu <> 0 ) then begin FixOwnerDrawnMenu1( m.Items[ i ] ); end else if ( ( mii.fType and MFT_OWNERDRAW ) <> 0 ) then begin; mii.fMask := MIIM_STRING; mii.dwTypeData := PChar( (m.Items[ i ].Caption) ); SetMenuItemInfo( hm, i, True, mii ); OutputDebugString( PChar( m.Items[ i ].Caption ) ); end; end; end; end;