Application full screen mode/fr

From Free Pascal wiki
Jump to: navigation, search

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)

Voir aussi

Liens externes