2008. május 22., csütörtök

Display forms full screen


Problem/Question/Abstract:

How can I show a form so that it covers all available screen space including the taskbar?

Answer:

Covering the entire screen with a form is relatively easy to accomplish as shown below.

procedure TfrmMainForm.FormCreate(Sender: TObject);
begin
  { Position form }
  Top := 0;
  Left := 0;

  { Go full screen }
  WindowState := wsmaximized;
  ClientWidth := Screen.Width;
  ClientHeight := Screen.Height;
  Refresh;
end;

If this is a typical form it will have borders which you might consider removing by setting BorderStyle property to bsNone as shown below.

procedure TfrmMainForm.FormCreate(Sender: TObject);
begin
  { Position form }
  Top := 0;
  Left := 0;

  { Go full screen }
  BorderStyle := bsNone;
  WindowState := wsmaximized;
  ClientWidth := Screen.Width;
  ClientHeight := Screen.Height;
  Refresh;
end;

Sometimes the code shown above will go full screen but still display the Windows TaskBar, if this happens we can force the form on top using either SetForeGroundWindow or SetActiveWindow. From my testing it is best to use both if the problem persist.

procedure TfrmMainForm.FormCreate(Sender: TObject);
begin
  { Position form }
  Top := 0;
  Left := 0;

  { Go full screen }
  BorderStyle := bsNone;
  WindowState := wsmaximized;
  ClientWidth := Screen.Width;
  ClientHeight := Screen.Height;
  Refresh;
  SetForegroundWindow(Handle);
  SetActiveWindow(Application.Handle);
end;

Other  considerations (see attachment for code to address these items) If the form is already in maximized window state the above code will not work. Controlling the system menu commands as per above needs to be considered Ghost items in the TaskBar after terminating your application.  

Delphi makes it simple to cover the display screen but what if you need to duplicate the functionality in another programming language such as Microsoft Visual Basic? Well in this case you might want to learn the API methods (again see attachment).


Component Download: KG_FullScreen.zip

Nincsenek megjegyzések:

Megjegyzés küldése