Autor Beitrag
Manfred
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 90



BeitragVerfasst: Mi 01.04.15 00:43 
Das Problem ist sicher alt, aber aus meiner Sicht nicht gelöst.

Kennt jemand einen Dreh, wie man eine Vollbild-Ansicht unter Windows 7 realisiert, wobei auch die Taskleiste überdeckt wird?
Dass es gehen muss, beweist der IE, aber eigene Anwendungen scheitern daran offenbar.

_________________
Computer können schneller rechnen als wir, deshalb machen sie auch mehr Fehler
Perlsau
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Mi 01.04.15 02:05 
Rechtsklick auf Taskleiste, Eigenschaften, Taskleiste automatisch ausblenden.
baumina
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 305
Erhaltene Danke: 61

Win 7
Delphi 10.2 Tokyo Enterprise
BeitragVerfasst: Mi 01.04.15 08:00 
Mein IE überdeckt bei maximiertem Fenster keine Taskleiste, oder wie schaltest du den IE auf Vollbild?
Hoermi93
Hält's aus hier
Beiträge: 6

Win 7
Delphi XE
BeitragVerfasst: Mi 01.04.15 09:06 
Die Vollbildansicht im IE wird durch den Druck der F11 Taste aktiviert
baumina
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 305
Erhaltene Danke: 61

Win 7
Delphi 10.2 Tokyo Enterprise
BeitragVerfasst: Mi 01.04.15 09:28 
Aha, man lernt nie aus, dann würde ich folgendes vorschlagen:

ausblenden Delphi-Quelltext
1:
2:
  Borderstyle := bsNone;
  WindowState := wsMaximized;
jaenicke
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19272
Erhaltene Danke: 1740

W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: Mi 01.04.15 09:52 
Richtig, wobei der Rand hier das Entscheidende ist. Ist der Rand im maximierten Zustand aktiviert, ist auch die Taskleiste da, ist er deaktiviert, wird diese auch verdeckt.
Auf diese Weise hat Microsoft Vollbildanwendungen auf eine einfache Weise möglich gemacht ohne das normale Maximieren zu stören.

Für diesen Beitrag haben gedankt: Sinspin
Manfred Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 90



BeitragVerfasst: Mi 01.04.15 14:09 
Leider funktioniert das nur, wenn die Werte bereits zur Entwurfszeit definiert werden. Ich will dem Anwender aber die Möglichkeit geben zur Laufzeit auf Vollbild umzustellen. Und in dem Fall bleibt die Taskleiste sichtbar.
Die Anwendung wird zwar maximiert, schiebt sich aber hinter die Taskleiste.

_________________
Computer können schneller rechnen als wir, deshalb machen sie auch mehr Fehler
baumina
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 305
Erhaltene Danke: 61

Win 7
Delphi 10.2 Tokyo Enterprise
BeitragVerfasst: Mi 01.04.15 14:27 
Also ich hatte in meinem DelphiXE-Testprogramm die beiden Zeilen in einem OnClick eines Buttons drin und es hat funktioniert. Kannst du ein kleines Testprogramm machen bei dem der Aufruf zur Laufzeit nicht funktioniert?
Perlsau
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Mi 01.04.15 15:34 
Kann ich bestätigen: ich hab mal eben schnell eine private Bool-Variable deklariert und einen neuen Button hinzugefügt:

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
procedure TFormScanner.ButtonMaxClick(Sender: TObject);
begin
  If Vollbild Then
  Begin
    Vollbild         := False;
    Self.WindowState := wsNormal;
    Self.BorderStyle := bsSizeable;
  End Else
  Begin
    Self.BorderStyle := bsNone;
    Self.WindowState := wsMaximized;
    Vollbild         := True;
  End;
end;

Das Ergebnis ist genau das erwartete: Das Formular schaltet in den Vollbild-Modus und überdeckt alles.
jaenicke
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19272
Erhaltene Danke: 1740

W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: Mi 01.04.15 16:23 
Das funktioniert nur, wenn man zuerst den BorderStyle setzt und danach maximiert. Andersherum geht es nicht.
Martok
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 3661
Erhaltene Danke: 604

Win 8.1, Win 10 x64
Pascal: Lazarus Snapshot, Delphi 7,2007; PHP, JS: WebStorm
BeitragVerfasst: Do 02.04.15 19:05 
user profile iconjaenicke hat folgendes geschrieben Zum zitierten Posting springen:
Andersherum geht es nicht.
Was übrigens ein VCL-Bug ist, da wird IIRC irgendwo beim RecreateWindow für den Borderstyle der WindowState falsch zurückgesetzt. Hat das eigentlich mal irgendwer reported? Ich hatte das vor ein paar Jahren mal erforscht, aber dann ignoriert weil man's ja auch einfach andersrum machen kann.

_________________
"The phoenix's price isn't inevitable. It's not part of some deep balance built into the universe. It's just the parts of the game where you haven't figured out yet how to cheat."
Manfred Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 90



BeitragVerfasst: Do 09.04.15 23:09 
Sorry, das ich mich jetzt erst melde.
Erst einmal recht herzlichen Dank für die Antworten.
Die Beeinflussung von borderStyle führt sofort dazu, dass die Anzeige im Fenster leer ist. Ursache ist vermutlich der TWebBrowser, der in dem Formular eingebettet ist.

Meine vorläufige Lösung sieht daher so aus:

ausblenden volle Höhe Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
var
  l : longint;
  i : interger;
Begin
    l := GetWindowLong(Handle,GWL_STYLE);
    if (WS_CAPTION and l)>0 then
    begin
        if WindowState <> wsmaximized then
        begin
          // Fenster maximieren
          WindowState := wsmaximized ;
        end else
        begin
          // Volbild einschalten
          l := l and not WS_CAPTION ;
          l := l and not WS_BORDER ;
          SetWindowLong(Handle,GWL_STYLE, l);
          ClientHeight := Height+GetSystemMetrics(SM_CYCAPTION);
          WindowState := wsMaximized;
        end;
    end else
    begin
        // Vollbild ausschalten
        SetWindowLong(Handle,GWL_STYLE, l or WS_CAPTION or WS_BORDER);

        i:=Width-ClientWidth;
        ClientWidth := Screen.Width-i;
        i:=Height-ClientHeight;
        ClientHeight := Screen.Height-i;
        WindowState := wsMaximized;
    end;


Soweit ich das nachvollziehen kann, kommt das Eurer Lösung etwa gleich. Allerdings bleibt bei Vollbild-Einstellung der Border trotz "and not WS_BORDER" bestehen.
Bei Einzelmonitoren kein Problem, da er außerhalb der Monitorbreite liegt. Bei zwei Monitoren ist er sichtbar.

Zum Problem der Taskleiste unter Win 7:
Wird Vollbild aktiviert, bleibt die Taskleiste zunächst sichtbar, bis das Fenster aktiviert wird (wobei es eigentlich aktiv war), z.B. durch Anklicken. Dann verschwindet meistens die Taskleiste, oftmals aber eben nicht.

Edit: Remarks hinzugefügt

_________________
Computer können schneller rechnen als wir, deshalb machen sie auch mehr Fehler
hathor
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Fr 10.04.15 00:54 
Im Anhang ist ein Testprogramm.

Wenn es nicht funktioniert, ist die Einstellung der Taskleiste falsch.
Einloggen, um Attachments anzusehen!
jaenicke
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19272
Erhaltene Danke: 1740

W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: Fr 10.04.15 06:37 
user profile iconManfred hat folgendes geschrieben Zum zitierten Posting springen:
Die Beeinflussung von borderStyle führt sofort dazu, dass die Anzeige im Fenster leer ist. Ursache ist vermutlich der TWebBrowser, der in dem Formular eingebettet ist.
Hast du vielleicht ein Testprojekt dafür, das du anhängen kannst? Ich kann das mit Delphi XE7 nicht reproduzieren. Welche Delphiversion nutzt du denn?
Manfred Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 90



BeitragVerfasst: Fr 10.04.15 09:44 
Ich verwende für dieses Projekt Delphi 6, das Problem existiert aber auch unter XE

Die Sache mit dem Testprogramm ist etwas schwierig, da das Ding mehrere tausend Zeilen enthält. Ich werd am WE mal was zusammenbauen.

_________________
Computer können schneller rechnen als wir, deshalb machen sie auch mehr Fehler
Manfred Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 90



BeitragVerfasst: Fr 10.04.15 09:51 
@hathor

Anbei ein Screenshot-Ausschnitt Deines Testprogramms: Die Taskleiste ist sichtbar, das Modul liegt aber auch nicht hinter der Taskleiste.
Einloggen, um Attachments anzusehen!
_________________
Computer können schneller rechnen als wir, deshalb machen sie auch mehr Fehler
hathor
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Fr 10.04.15 10:47 
Das Wort "Testbild" sollte in der Mitte stehen! Desktop erweitert?

Ich habe das Testprogramm etwas erweitert.
Bei mir ist die Taskleiste vorhanden, aber nicht sichtbar.
Einloggen, um Attachments anzusehen!
hathor
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Fr 10.04.15 11:32 
Nächste Erweiterung: Show Taskbar und Hide Taskbar hinzugefügt.
Man sollte das Programm aber nach Show Taskbar verlassen, sonst bleibt sie unsichtbar.
Einloggen, um Attachments anzusehen!
Manfred Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 90



BeitragVerfasst: Di 14.04.15 15:55 
@hathor

Das ist ja alles ganz nett aber kein Vollbild. Die Taskleiste blendet sich zwar aus, doch das ändert nichts an der Fenstergröße der Anwendung. Der Start-Button bleibt ebenfalls sichtbar.

user profile iconhathor hat folgendes geschrieben Zum zitierten Posting springen:
Das Wort "Testbild" sollte in der Mitte stehen! Desktop erweitert?

Das Wort "Testbild" steht auch in der Mitte, mein geposteter Screenshot von Freitag war nur ein Ausschnitt.

user profile iconhathor hat folgendes geschrieben Zum zitierten Posting springen:
Wenn es nicht funktioniert, ist die Einstellung der Taskleiste falsch.

Welche Einstellung? Ich glaube nicht, dass es sich um ein Einstellungsproblem handelt, dann würden andere Programme (IE) ja auch nicht laufen.

Leider bin ich am WE nicht dazu gekommen, etwas zum Testen zusammenzustellen, ich bitte um Geduld, da ich z.Z. bis über beide Ohren in Arbeit stecke.

_________________
Computer können schneller rechnen als wir, deshalb machen sie auch mehr Fehler
Manfred Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 90



BeitragVerfasst: Di 14.04.15 16:05 
Hier meine Screenshots von Deinem Programm FullScreen-3
Einloggen, um Attachments anzusehen!
_________________
Computer können schneller rechnen als wir, deshalb machen sie auch mehr Fehler