Thema: Delphi Systemmenu abschalten

Einzelnen Beitrag anzeigen

Benutzerbild von Codewalker
Codewalker

Registriert seit: 18. Nov 2005
Ort: Ratingen
945 Beiträge
 
Delphi XE2 Professional
 
#1

Systemmenu abschalten

  Alt 17. Aug 2010, 17:14
Mit diesem Code wird das Systemmenu geleert. Wenn man mit SC_CLOSE den "Schließen"-Eintrag entfernt, wird gleichzeitig das "X" zum Schließen des Fensters inaktiviert (bleibt aber sichtbar). Damit kann man ein nicht schließbares Fenster erzeugen (was mit BorderIcons = [] auch geht), aber gleichzeitig das Icon für das Fenster behalten (Was mit BorderIcons nicht geht).
Natürlich kann man mit diesem Code auch nur einzelne Elemente entfernen.

Delphi-Quellcode:
procedure TWorkerMainframe.FormCreate(Sender: TObject);
var
  hWnd: THandle;
begin
  hWnd := GetSystemMenu(Self.Handle, False);
  RemoveMenu(hWnd, SC_SIZE, MF_BYCOMMAND);
  RemoveMenu(hWnd, SC_MOVE, MF_BYCOMMAND);
  RemoveMenu(hWnd, SC_MINIMIZE, MF_BYCOMMAND);
  RemoveMenu(hWnd, SC_MAXIMIZE, MF_BYCOMMAND);
  RemoveMenu(hWnd, SC_RESTORE, MF_BYCOMMAND);
  RemoveMenu(hWnd, SC_CLOSE, MF_BYCOMMAND);
  DeleteMenu(hWnd, 0, MF_BYCOMMAND); // Der letzte Separator im Menu kommt auch noch weg
end;
  Mit Zitat antworten Zitat