Application full screen mode/fr
│
English (en) │
français (fr) │
Introduction
Quelques applications telles des fouineurs Web permettent de montrer en mode plein écran en utilisant la touche F11. En mode plein écran, la fenêtre n'a pas de bordure ni de barre de titre et occupe l'espace entier. La barre de tâche est aussi cachée.
Pour être capable de passer en mode plein écran, vous aurez besoin:
- de mémoriser l'état antérieur de la fiche tel que la position, la taille et l'état de la fenêtre
- d'être capable de déterminer la taille de l'écran
- de capturer quelque touche et d'effectuer l'opération
La meilleure façon de capturer la touche voulue consiste à utiliser les Actions. Définissez simplement une nouvelle action dans le gestionnaire d'actions et affectez-lui un raccourci-clavier. Ainsi le raccourci fonctionnera même si la fiche perd le focus.
Programme d'exemple
unit Unit1;
{$mode objfpc}{$H+}
interface
uses
Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs, StdCtrls,
Menus;
type
{ TForm1 }
TForm1 = class(TForm)
procedure FormKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState);
private
public
OriginalBounds: TRect;
OriginalWindowState: TWindowState;
ScreenBounds: TRect;
procedure SwitchFullScreen;
end;
var
Form1: TForm1;
implementation
{$R *.lfm}
{ TForm1 }
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.
Obtenir la taille de la barre de tâche
Si vous voulez garder la barre de tâches visible, vous devez ajuster la taille en fonction de la position et de la taille de la barre de tâche.
Pour Windows:
function GetTaskBarSize: TRect;
begin
SystemParametersInfo(SPI_GETWORKAREA, 0, @Result, 0);
end;
Façon GTK de passer en mode plein écran
Pour passr la fiche dans les dimensions plein écran:
gdk_window_fullscreen(PGtkWidget(Handle)^.window);
Pour revenir au mode normal:
gdk_window_unfullscreen(PGtkWidget(Handle)^.window);
C'est uniquement pour GTK2. Vous devez ajouter à la section uses des unités tels que gtk2, gdk2, glib2.Vous pouvez le faire avec la directive {$IFDEF LCLGTK2}, gtk2, gdk2, glib2{$ENDIF}.
Changer la résolution de l'écran
Actuellement, il n'y a pas de manière indépendante de l'OS pour basculer la résolution de l'écran.
Pour Windows, vous pouvez trouver des informations dans l'article pour Delphi Get and Set Screen Resolution (Display Device Modes)