Как добавить свой пункт в системное меню формы в Delphi?

Есть несколько способов добавления своего пункта в системное меню формы.

Способ 1

var
  SMenu : THandle; 
begin
  SMenu := GetSystemMenu(Handle, False); 
  InsertMenu(SMenu, 1, MF_Byposition, ID_NEW, 'NEW'); 
end;

Способ 2

type
TForm1 = class(TForm) 
  procedure FormCreate(Sender: TObject); 
private
{ Private declarations }
  procedure WMSysCommand(var Msg: TWMSysCommand); 
  message WM_SYSCOMMAND; 
public
{ Public declarations }
end; 
 
var
  Form1: TForm1; 
implementation
{$R *.DFM}
const
  SC_MyMenuItem = WM_USER + 1; 
procedure TForm1.FormCreate(Sender: TObject); 
begin
  AppendMenu(GetSystemMenu(Handle, false), MF_SEPARATOR, 0, ''); 
  AppendMenu(GetSystemMenu(Handle, false), MF_STRING,SC_MyMenuItem,'My Item'); 
end; 
  
procedure TForm1.WMSysCommand(var Msg: TWMSysCommand); 
begin
  if Msg.CmdType = SC_MyMenuItem then
    ShowMessage('Got the message') 
  else
    inherited; 
end; 

Способ 3

type
  TMyForm=class(TForm)
    procedure wmSysCommand(var Message:TMessage); message WM_SYSCOMMAND;
  end;
const
  ID_ABOUT  = WM_USER+1;
  ID_CALENDAR=WM_USER+2;
  ID_EDIT  =  WM_USER+3;
  ID_ANALIS = WM_USER+4;
 
implementation
 
procedure TMyForm.wmSysCommand;
begin
  case Message.wParam of
    ID_CALENDAR: DatBitBtnClick(Self) ;
    ID_EDIT    : EditBitBtnClick(Self);
    ID_ANALIS  : AnalisButtonClick(Self);
  end;
  inherited;
end;
 
procedure TMyForm.FormCreate(Sender: TObject);
var SysMenu:THandle;
begin
  SysMenu:=GetSystemMenu(Handle,False);
  InsertMenu(SysMenu,Word(-1),MF_SEPARATOR,ID_ABOUT,'');
  InsertMenu(SysMenu,Word(-1),MF_BYPOSITION,ID_Calendar, 'Calendar');
  InsertMenu(SysMenu,Word(-1),MF_BYPOSITION,ID_Analis, 'Analis');
  InsertMenu(SysMenu,Word(-1),MF_BYPOSITION,ID_Edit, 'Edit');
end;
1 Звезда2 Звезды3 Звезды4 Звезды5 Звезд (1 оценок, среднее: 5,00 из 5)
Загрузка...
Комментариев: 1
  1. Danieloffet

    Спасибо за такой материал

Добавить комментарий