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.