// 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; 





 

 

Zugriffe seit 6.9.2001 auf Delphi-Ecke