unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs; type TForm1 = class(TForm) procedure FormKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState); private { Private declarations } public { Public declarations } OriginalBounds: TRect; OriginalWindowState: TWindowState; ScreenBounds: TRect; procedure SwitchFullScreen; end; var Form1: TForm1; implementation {$R *.dfm} procedure TForm1.FormKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState); const KeyF11 = 122; begin if Key = KeyF11 then SwitchFullScreen; end; procedure TForm1.SwitchFullScreen; begin if BorderStyle <> bsNone then begin // To full screen OriginalWindowState := WindowState; OriginalBounds := BoundsRect; BorderStyle := bsNone; ScreenBounds := Screen.MonitorFromWindow(Handle).BoundsRect; with ScreenBounds do SetBounds(Left, Top, Right - Left, Bottom - Top) ; end else begin // From full screen {$IFDEF MSWINDOWS} BorderStyle := bsSizeable; {$ENDIF} if OriginalWindowState = wsMaximized then WindowState := wsMaximized else with OriginalBounds do SetBounds(Left, Top, Right - Left, Bottom - Top) ; {$IFDEF LINUX} BorderStyle := bsSizeable; {$ENDIF} end; end; end.