Display menu-bitmaps with 16 or more colors

The question is simple: How do you display menu bitmaps with 16 or more colors. I want to have both a bitmap and a text, and I want to be able to display bitmaps with a size of 16x16. I know that the size can be different on different computers, but programs like ICQ, MS Word and more have done it, so why can't I?
Who is Participating?
ronit051397Connect With a Mentor Commented:
From Chami's Tips (http://www.chami.com/tips/delphi/010597D.html):

Have you been envious of the Windows 95 Start Menu, because of the way it's able to display bitmaps on its menu items? Well, it's not too hard to add small bitmaps to your menu items by using the following function:

              procedure AddBitmapToMenuItem(
                PopupMenu : TPopupMenu;
                nItemPos  : integer;
                Bitmap    : TBitmap );
                  Bitmap.Handle );

The Windows API function "SetMenuItemBitmaps()" is mostly used to set bitmaps for
"checkable" menu items -- menu items with two bitmaps for checked and unchecked
states. To keep the "AddBitmapToMenuItem()" function simple, we're not changing
menu item's size according to the size of the bitmap. This means, you can only pass
bitmaps that are small enough to fit in the default size of your menu items.

To keep the bitmaps for your menu items built into your application:

Drop a "TImage" component on your form.
Assign a bitmap of your choice to the "Picture" property of the newly created "TImage" component.
Call "AddBitmapToMenuItem()" function as follows from your "FormCreate()"
event (assuming that the pop-up menu that you're assigning the bitmap to is named "PopupMenu1," the image component you're using is named "Image1,"
and the position of the actual menu item you want to set the bitmap on is 0 --
                   1st item = 0, 2nd item = 1, 3rd item = 2, etc.):

                     Image1.Picture.Bitmap );

              To load the menu item bitmaps at the run-time:

                   procedure TForm1.
                     FormCreate(Sender: TObject);
                     BMP : TBitmap;
                     BMP := TBitmap.Create;
                       'MyBitmap.BMP' );
                       PopupMenu1, 0, BMP );
boivieAuthor Commented:
Thanks for the answer, but I'm still having two problems: 1: All colors of the bitmap (16 colors) don't work and 2: The size is different on different computers. The bimaps' size is 16x16 but a few computers only display the top-left 10x10. Do you know how to fix this too?
Download the RX Components, they have a component with source:

Question has a verified solution.

Are you are experiencing a similar issue? Get a personalized answer when you ask a related question.

Have a better answer? Share it in a comment.

All Courses

From novice to tech pro — start learning today.