Home » Tipps & Tricks » Komponenten » TForm » Systemmenü erweitern

Systemmenü erweitern

Das Systemmenü der Form kann mit folgender Prozedur problemlos um einen eigenen Menüpunkte erweitert werden:

procedure TForm1.Button1Click(Sender: TObject);
begin
  if not AppendMenu(GetSystemMenu(Handle, False),
          MF_STRING,
          $F200, //über $F200 wird der Menüpunkt später identifiziert
          'Copyrights...') then
  RaiseLastOSError;
end;

RaiseLastOSError ist erst ab Delphi 6 verfügbar. Programmierer, die mit älteren Versionen arbeiten müssen an dieser Stelle RaiseLastWin32Error verwenden.In der Windows-SDK findest du unter AppendMenu noch weitere Konstanten, die das Aussehen des Menüs bestimmen. Die Konstante MF_STRING gibt an, dass es sich bei dem Menüpunkt, um einen Eintrag mit Text handelt. Eine Trennlinie fügt man hinzu, indem man die Konstante MF_SEPARATOR wählt.Über die ID-Nummer, die dem dritten Parameter übergeben wird, wird der Menüpunkt später identifiziert. Es lassen sich auch Einträge mit gleicher ID-Nummer hinzufügen, die dann allerdings gleich reagieren.Nun muss unserem Menüpunkt nur noch eine Prozedur zugewiesen werden.Diese wird im Private-Abschnit der Form deklariert:

 private 
   procedure WMSysCommand(var Message: TWMSysCommand); message WM_SYSCOMMAND;

Jetzt fehlt noch die eigentliche Prozedur:

implementation

procedure TForm1.WMSysCommand(var Message: TWMSysCommand);
begin
 inherited; //Nicht vergessen!!!
 if Message.CmdType = $F200 then
   ShowMessage('Copyrigths by ???');
end;

Wie sie das Systemmenü verkleinern, können Sie unter den Verweisen lesen.