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
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; 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(hMenuHandle, 9, MF_BYPOSITION + MF_SEPARATOR,
hMenuItemHandle, nil); InsertMenu(hMenuHandle, 10, MF_BYPOSITION + MF_STRING,
hMenuItemHandle, PChar(oMenuItem.Caption)); DrawMenuBar(handle);
end;