Systemmenü erweitern |
|
| System | Win9x, WinNT, Win2000, WinXP, Vista, Win7 |
|---|---|
| Ab Delphi-Version | Delphi 1 |
| Letzte Änderung | 06.03.2011 |
Das Systemmenü der Form kann mit folgender Prozedur problemlos um einen eigenen Menüpunkte erweitert werden:
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.