Bueno, como veo que seguimos insistiendo en varios hilos con la colocación de imágenes en el menú trataré de explicarles como lo hago:
1) Si lo que quieren es insertar una imagen a la izquierda (o si quieren en el medio del menú), la cosa es simple: solo tienen que crear con el editor de menú un
MenuItem con
Caption='' (sin caption) y con Name='MiMenuItem' por ejemplo, en el lugar que quieran poner la imagen, y luego le asignan a su propiedad
Bitmap el bitmap que deseen, o en su propiedad
ImageIndex el índice de la imagen que quieran mostrar (que debe estar en el
ImageList asociado, claro). Esto les mostrará su imagen en el espacio del
MenuItem alineada a la izquierda.
Si quieren hacerlo un poquito más "vistoso" pueden hacer que la imagen ocupe todo el
MenuItem. Para ello ponen la propiedad
OwnerDraw de
MainMenu a
True y luego en el evento
DrawItem del
MenuItem dibujan la imagen utilizando el
canvas que les proporciona la función, algo así:
Código Delphi
[-]procedure TForm1.MiMenuItemDrawItem(Sender: TObject; ACanvas: TCanvas; ARect: TRect;
Selected: Boolean);
var b:TBitmap;
begin
b:=TBitmap.Create;
b.LoadFromFile('d:\Seguridad\Imágenes\Chaplin.bmp');
ACanvas.StretchDraw(ARect,b);
b.free;
end;
claro que el bitmap pueden declararlo como público y cargarlo una sola vez cuando se cree el formulario
.
2) Si quieren que la imágen se alinee a la derecha del menú, pues hacen lo mismo poniendo el
MenuItem como el último item a la derecha y luego en el procedimiento
Create del
Form ponen este código:
Código Delphi
[-]procedure TForm1.FormCreate(Sender: TObject);
var
mii: TMenuItemInfo;
MainMenu: hMenu;
Buffer: array[0..79] of Char;
begin
MainMenu := Self.Menu.Handle;
mii.cbSize := SizeOf(mii) ;
mii.fMask := MIIM_TYPE;
mii.dwTypeData := Buffer;
mii.cch := SizeOf(Buffer) ;
GetMenuItemInfo(MainMenu, MiMenuItem.Command, false, mii) ;
mii.fType := mii.fType or MFT_RIGHTJUSTIFY;
SetMenuItemInfo(MainMenu, MiMenuItem.Command, false, mii) ;
end;
y listo! queda alineado a la derecha del menú.
Si quieren cambiar el ancho del
MenuItem pueden utilizar el evento
OnMeasureItem:
Código Delphi
[-]
procedure TForm1.MiMenuItemMeasureItem(Sender: TObject; ACanvas: TCanvas; var Width,
Height: Integer);
begin
Width:=40;
end;
Prueban y me cuentan que resultado les dió. Saludos a todos.