// Hiermit kann
man dem Systemmenü des Formulars einen Menüpunkt
// hinzufügen. Außerdem kann man nach Wahl darüber und/oder darunter
// einen Separator einfügen.
// Getestet mit CE unter
Win10
type
TForm1 = class(TForm)
procedure FormCreate(Sender: TObject);
private
{ Private-Deklarationen }
public
{ Public-Deklarationen }
procedure MsgHandler(var Msg: TMsg; var Handled: Boolean);
procedure Action;
procedure MakeMenuCaption(Caption: String; Place: UInt;
SeparatorUp, SeparatorDown: Boolean);
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
var
hnd: THandle;
ItemX: Word = 1000;
procedure TForm1.Action;
begin
// mach was, z.B.
ShowMessage('Der Test-Menüpunkt wurde ausgewählt!');
end;
procedure TForm1.MsgHandler(var Msg: TMsg; var Handled: Boolean);
begin
if Msg.Message = WM_SYSCOMMAND then
if Msg.wParam = ItemX then
Action;
end;
procedure TForm1.MakeMenuCaption(Caption: String; Place: UInt;
SeparatorUp, SeparatorDown: Boolean);
begin
if SeparatorDown then
InsertMenu(GetSystemMenu(hnd, False), Place, MF_SEPARATOR or MF_BYPOSITION,
ItemX, '');
InsertMenu(GetSystemMenu(hnd, False), Place, MF_BYPOSITION, ItemX,
PChar(Caption));
if SeparatorUp then
InsertMenu(GetSystemMenu(hnd, False), Place, MF_SEPARATOR or MF_BYPOSITION,
ItemX, '');
end;
// Beispielaufruf: Oberste Stelle und Separator darunter
procedure TForm1.FormCreate(Sender: TObject);
begin
hnd := Self.Handle;
Application.OnMessage := MsgHandler;
MakeMenuCaption('&Das ist ein Test', 0, False, True);
end;
|