Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi Anwendung im Vollbildmodus (https://www.delphipraxis.net/99855-anwendung-im-vollbildmodus.html)

Tommy1988 18. Sep 2007 18:33


Anwendung im Vollbildmodus
 
Folgender Code lässt eine Anwendung im Vollbild anzeigen

Delphi-Quellcode:
var
 HTaskbar: HWND;
 OldVal: LongInt;
 i : Integer;
begin
Playing := True;
  try
    // Find handle of TASKBAR
    HTaskBar := FindWindow('Shell_TrayWnd', nil);
    // Disable the taskbar
    EnableWindow(HTaskBar, False);
    // Hide the taskbar
    ShowWindow(HTaskbar, SW_HIDE);
  finally
    with Form1 do
    begin
      BorderStyle := bsNone;
      FormStyle  := fsStayOnTop;
      Left       := 0;
      Top        := 0;
      Height     := Screen.Height;
      Width      := Screen.Width;
    end;
  end;
Meine Frage nun:
Wie kann man das rückgängig machen?

Flips 18. Sep 2007 19:01

Re: Anwendung im Vollbildmodus
 
Hi.

Also bei mir braucht man dieses ganze Zeugs zum Verschwinden lassen der Taskbar gar nicht.
Wenn du das Fenster wieder genau so haben willst wie es war, dann müsstest du die Werte zwischenspeichern.

Delphi-Quellcode:
//Groß
procedure TForm3.Button1Click(Sender: TObject);
var
  HTaskbar: HWND;
  OldVal: LongInt;
  i : Integer;
begin
Playing := true;
oldW := Width;
oldH := Height;
oldX := Left;
oldY := Top;
{
// Find handle of TASKBAR
HTaskBar := FindWindow('Shell_TrayWnd', nil);
// Disable the taskbar
EnableWindow(HTaskBar, False);
// Hide the taskbar
ShowWindow(HTaskbar, SW_HIDE);
}
BorderStyle := bsNone;
FormStyle  := fsStayOnTop;
Left       := 0;
Top        := 0;
Height     := Screen.Height;
Width      := Screen.Width;
end;

//Normal
procedure TForm3.Button2Click(Sender: TObject);
var
  HTaskbar: HWND;
  OldVal: LongInt;
  i : Integer;
begin
Playing := False;
{
// Find handle of TASKBAR
HTaskBar := FindWindow('Shell_TrayWnd', nil);
// Disable the taskbar
EnableWindow(HTaskBar, True);
// Hide the taskbar
ShowWindow(HTaskbar, SW_SHOW);
}
BorderStyle := bsSizeable;
FormStyle  := fsNormal;
Left       := oldX;
Top        := oldY;
Height     := oldH;
Width      := oldW;
end;
Hab das try-finally und das with jetzt der Einfachheit halber weggelassen.

Dezipaitor 18. Sep 2007 20:16

Re: Anwendung im Vollbildmodus
 
Das Programm welches mir die Taskleiste deaktiviert werde ich sofort vom Rechner verbannen!
Zudem funktioniert der Code bei mehreren Bildschirmen wirklich nicht wie gewünscht, da das Programm auf einem Bildschirm sein kann, wo die Taskleiste garnicht ist. Der Benutzer wird sich wundern, warum er plötzlich die Taskleiste oder Teile nicht mehr verwenden kann. Es ist einfach ein schlechter Programmierstil, wenn Programme ohne Einverständnis des Benutzers, plötzlich andere Programme in ihrem Verhalten ändern.

Nimm doch Maximize bzw Restore und dann noch StayOnTop Flag für eine Form. Man kann auch die Größe vom Bildschirm selbst bestimmen und dann die Fenstergröße setzen. Man sollte jedoch die Möglichkeit den gesamten Bildschirm zu überdecken nur als EINE Möglichkeit von vielen dem Benutzer darstellen. Letztendlich muss der Benutzer, zm zu anderen Programmen springen zu können, die Tastatur bedienen, da die Maus hier nicht funktionier. Die Leiste ist ja überdeckt (ich denke da an rahmenlose Fenster).

Als Programmierer muss man immer für den Benutzer arbeiten und nicht gegen ihn.

Flips 18. Sep 2007 20:39

Re: Anwendung im Vollbildmodus
 
Joa, da muss ich meinem Vorredner nachträglich zustimmen.
Der einzige Grund warum ich mein Programm zum Fullscreen vergrößern würde ist ne Grafik (OpenGL etc...) Anwendung, aber selbst da würde ich eine Abfrage machen, ob der User denn nicht lieber im Window-Mode arbeiten möchte...
Nehmen wir mal an das Programm hat die Taskleiste ausgeblendet und stürzt dann ab...ein normaler User ist dann ge0wned (Neustart vorprogrammiert).
Deshalb ist einfaches Maximieren wohl besser.

Ps: Sry, erst die Antwort, dann die Kritik...sollte es nächste mal vll andersrum sein :oops:

Mokuba01 4. Nov 2007 14:32

Re: Anwendung im Vollbildmodus
 
bei mir kommt:
Zitat:

Zitat von Delphi4
[Fehler] Unit1.pas(55): Undefinierter Bezeichner: 'Playing'
[Fehler] Unit1.pas(74): ';' erwartet, aber '.' gefunden
[Fehler] Unit1.pas(76): Deklaration erwartet, aber Dateiende gefunden
[Fataler Fehler] Project1.dpr(5): Verwendete Unit 'Unit1.pas' kann nicht compiliert werden


dominikkv 4. Nov 2007 14:42

Re: Anwendung im Vollbildmodus
 
könnte vllt daran liegen das du Playing nicht deklariert hast weil das garnix mit dem Vollbild zu tun hat?
einfach löschen und gut is


Alle Zeitangaben in WEZ +1. Es ist jetzt 18:06 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz