Autor |
Beitrag |
Manfred
Beiträge: 90
|
Verfasst: 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
|
Verfasst: Mi 01.04.15 02:05
Rechtsklick auf Taskleiste, Eigenschaften, Taskleiste automatisch ausblenden.
|
|
baumina
Beiträge: 305
Erhaltene Danke: 61
Win 7
Delphi 10.2 Tokyo Enterprise
|
Verfasst: 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
|
Verfasst: Mi 01.04.15 09:06
Die Vollbildansicht im IE wird durch den Druck der F11 Taste aktiviert
|
|
baumina
Beiträge: 305
Erhaltene Danke: 61
Win 7
Delphi 10.2 Tokyo Enterprise
|
Verfasst: Mi 01.04.15 09:28
Aha, man lernt nie aus, dann würde ich folgendes vorschlagen:
Delphi-Quelltext 1: 2:
| Borderstyle := bsNone; WindowState := wsMaximized; |
|
|
jaenicke
Beiträge: 19284
Erhaltene Danke: 1742
W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
|
Verfasst: 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
Beiträge: 90
|
Verfasst: 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
Beiträge: 305
Erhaltene Danke: 61
Win 7
Delphi 10.2 Tokyo Enterprise
|
Verfasst: 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
|
Verfasst: 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:
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
Beiträge: 19284
Erhaltene Danke: 1742
W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
|
Verfasst: Mi 01.04.15 16:23
Das funktioniert nur, wenn man zuerst den BorderStyle setzt und danach maximiert. Andersherum geht es nicht.
|
|
Martok
Beiträge: 3661
Erhaltene Danke: 604
Win 8.1, Win 10 x64
Pascal: Lazarus Snapshot, Delphi 7,2007; PHP, JS: WebStorm
|
Verfasst: Do 02.04.15 19:05
jaenicke hat folgendes geschrieben : | 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
Beiträge: 90
|
Verfasst: 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:
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 WindowState := wsmaximized ; end else begin 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 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
|
Verfasst: 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
Beiträge: 19284
Erhaltene Danke: 1742
W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
|
Verfasst: Fr 10.04.15 06:37
Manfred hat folgendes geschrieben : | 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
Beiträge: 90
|
Verfasst: 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
Beiträge: 90
|
Verfasst: 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
|
Verfasst: 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
|
Verfasst: 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
Beiträge: 90
|
Verfasst: 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.
hathor hat folgendes geschrieben : | 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.
hathor hat folgendes geschrieben : | 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
Beiträge: 90
|
Verfasst: 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
|
|