Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Trucos (https://www.clubdelphi.com/foros/forumdisplay.php?f=52)
-   -   Agregar un item de menu al "System Menu" (https://www.clubdelphi.com/foros/showthread.php?t=80601)

Neftali [Germán.Estévez] 30-06-2006 17:59:41

Agregar un item de menu al "System Menu"
 
Es necesario interceptar el mensaje WMSYSCOMMAND para detectar cuando el usuario selecciona nuestro item de menu. Para ello, en la seccion interface, en la declaracion de la clase del formulario...

Código Delphi [-]
  private
    { Private declarations }
    procedure WMSYSCOMMAND(var Message: TMessage); message WM_SYSCOMMAND;

Y en la seccion implementation...

Código Delphi [-]
var
  oMenuItem: TMenuItem;
  hMenuItemHandle: THandle;

procedure TForm1.WMSYSCOMMAND(var Message: TMessage);
begin
  if (Message.WParam = LongInt(hMenuItemHandle))  then
    ShowMessage('Acerca de...');
  inherited;  // Importante no olvidarse de esta linea.
end;

Para crear el item de menu utilicé un Button. En el evento OnClick...

Código Delphi [-]
procedure TForm1.Button1Click(Sender: TObject);
var
  hMenuHandle: THandle;
begin
  oMenuItem := TMenuItem.Create(self);
  hMenuItemHandle := oMenuItem.Handle;
  oMenuItem.Caption  := 'Acerca de...';
  hMenuHandle := GetSystemMenu(handle, FALSE);
  { InsertMenu: El segundo parametro (9) es la posicion en el menu }
  { InsertMenu: El quinto parametro (nil) es el Caption del item de menu }
  InsertMenu(hMenuHandle, 9, MF_BYPOSITION + MF_SEPARATOR,
     hMenuItemHandle, nil);  // Linea de separacion
  InsertMenu(hMenuHandle, 10,  MF_BYPOSITION + MF_STRING,
     hMenuItemHandle, PChar(oMenuItem.Caption));  // Item de menu
  DrawMenuBar(handle);
end;


La franja horaria es GMT +2. Ahora son las 19:42:56.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi