Delphi - Tetszőleges Form átkapcsolása teljes képernyősre és vissza

forráskód letöltése
Ha egy olyan Form-ot készítenénk, melyen lehetőséget szeretnénk biztosítani arra, hogy a felhasználó teljes képernyős módra is válthasson, akkor ennek legegyszerűbb módja a mellékelt komponens használata, mely egyszerűen biztosítja azt, hogy teljes képernyős üzemmód esetén a Form-ról eltűnjön a fejléc, a keret és a méret a képernyő méretével legyen azonos. A komponens természetesen arról is gondoskodik, hogy az eredeti állapotot helyre lehessen állítani.
A mellékelt példaprogram megnyitása előtt a FullScreen.pas-ban lévő komponenst telepítenie kell a Delphi alá. Ehhez válassza a Component - Install Component menüpontot.
A komponens használatához a FullScreen logikai típusú property-t kell igazra vagy hamisra állítani. Ekkor fut a SetFullScreen eljárás. A property új értékétől függően végezzük a teljes képernyős beállítást, vagy az eredeti állapot visszaállítását.
procedure TFullScreen.SetFullScreen(const Value: boolean);
var
  f: TForm;
begin
  FFullScreen := Value;
  if Value<>FMode then begin
  FMode:=value;
  f:=Owner as TForm;
    if FMode then begin
Teljes képernyős mód beállításhoz eltávolítjuk a Form fejlécét a SetWindowLong hívásával.
      FOldWindowsLong:=GetWindowLong(f.Handle, GWL_STYLE);
      SetWindowLong(f.Handle, GWL_STYLE, GetWindowLong(f.Handle, GWL_STYLE) AND NOT WS_CAPTION);
Tároljuk a Form aktuális méretét és pozícióját, hogy ezt vissza is állíthassuk majd.
      FOldHeight:=f.Height;
      FOldWidth:=f.Width;
      FOldLeft:=f.Left;
      FOldTop:=f.Top;
Tároljuk továbbá a Form aktuális állapotát is, majd beállítjuk, hogy mérete egyezzen a képernyő méretével.
      FOldWindowsState:=f.WindowState;
      f.WindowState:=wsMaximized;
      f.ClientHeight:=Screen.Height;
      f.Clientwidth:=Screen.Width;
      f.Left:=0;
      f.Top:=0;
      f.Refresh;
    end else begin
Az eredeti állapot helyreállításához visszaállítjuk a Form fejlécét, méretét és pozícióját.
      SetWindowLong(f.Handle, GWL_STYLE, FOldWindowsLong);
      f.height:=FOldHeight;
      f.width:=FOldWidth;
      f.Left:=FOldLeft;
      f.Top:=FOldTop;
      f.WindowState:=FOldWindowsState;
      f.Refresh;
    end;
  end;
end;