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 Vollbildanwendung über mehrere Monitore (https://www.delphipraxis.net/113261-vollbildanwendung-ueber-mehrere-monitore.html)

MaxMara 5. Mai 2008 12:53


Vollbildanwendung über mehrere Monitore
 
Hallo Gemeinde!
In meiner Anwendung sollen 2 Forms abwechselnd auf einem ext. Monitor (Beamer) im Vollbildmodus angezeigt werden.
Bei dem einem Form funktioniert das einwandfrei. Das zweite wird mir aber am Notebookmonitor angezeigt.
Die beiden FormShow(s) schauen so aus:
Delphi-Quellcode:
  if Screen.MonitorCount > 1 then             // Mehr als 1 Monitor angehängt
  begin
    left := 1280;
    width := screen.Monitors[1].Width;
    height := screen.Monitors[1].Height;
  end
  else
  begin                                      // nur Notebookmonitor
    left := 0;
    width := screen.Monitors[0].Width;
    height := screen.Monitors[0].height;
  end;
  top := 0;
  Formstyle:=FSStayOnTop;
  borderstyle:=bsNone;
Weiss jemand von euch, was hier falsch ist?

Danke und Grüße
Christian

SirThornberry 5. Mai 2008 12:58

Re: Vollbildanwendung über mehrere Monitore
 
falsch sind diese beiden Dinge auf jeden fall:
Delphi-Quellcode:
left := 1280;
top := 0;
Denn es ist nicht festgelegt das der zweite Monitor bei 1280 los geht und auch nicht das er bei 0 los geht. Entweder überall feste zahlen rein knoten (also auch die Bildschirmbreite) oder es gleich ordentlich machen :)

taaktaak 5. Mai 2008 13:00

Re: Vollbildanwendung über mehrere Monitore
 
Moin, Moin,
so ganz verstehe ich dein Vorgehen und den Codeschnipsel nicht, aber was mir auffällt, ist die absolute Zuweisung "Left:=1280" - das kann, muss aber nicht korrekt sein. Ich würde das durch "Left:=Screen.Monitors[1].Left" und (zusätzlich) "Top:=Screen.Monitors[1].Top" ersetzen.

MaxMara 5. Mai 2008 13:02

Re: Vollbildanwendung über mehrere Monitore
 
Zitat:

Zitat von SirThornberry
falsch sind diese beiden Dinge auf jeden fall:
Delphi-Quellcode:
left := 1280;
top := 0;
Denn es ist nicht festgelegt das der zweite Monitor bei 1280 los geht und auch nicht das er bei 0 los geht. Entweder überall feste zahlen rein knoten (also auch die Bildschirmbreite) oder es gleich ordentlich machen :)

Naja. Ich kenne zumindest die Auflösung meines Notebooks und dachte mir, dass der "rechte" Monitor bei Left = 1280 startet. Bei dem einen Form funktioniert das ja auch. Das Top kann man wohl weglassen :)

MaxMara 5. Mai 2008 13:04

Re: Vollbildanwendung über mehrere Monitore
 
Zitat:

Zitat von taaktaak
Moin, Moin,
so ganz verstehe ich dein Vorgehen und den Codeschnipsel nicht, aber was mir auffällt, ist die absolute Zuweisung "Left:=1280" - das kann, muss aber nicht korrekt sein. Ich würde das durch "Left:=Screen.Monitors[1].Left" und (zusätzlich) "Top:=Screen.Monitors[1].Top" ersetzen.

Wie wäre denn dein Vorgehen bei dieser Sache? ;)
Left und Top habe ich jetzt mal geändert: Bringt auch das gleiche Ergebnis.

taaktaak 5. Mai 2008 13:08

Re: Vollbildanwendung über mehrere Monitore
 
Kann ich nicht sagen, da ich's noch nicht verstehe.

Du schreibst
Zitat:

sollen 2 Forms abwechselnd
in dem Codeschnipsel sehe ich aber keinen Ansatz, dass etwas abwechselnd geschehen soll. Nur die Bedingung, dass bei mehr als einem vorhandenen Monitor das Form auf dem zweiten Monitor erscheinen soll.

Wie/Wo wird denn die Positionierung des zweiten Forms gesteuert? Genau so?

MaxMara 5. Mai 2008 13:15

Re: Vollbildanwendung über mehrere Monitore
 
Zitat:

Zitat von taaktaak
Wie/Wo wird denn die Positionierung des zweiten Forms gesteuert? Genau so?

Ja, die Art der Positionierung ist die gleiche. Genau das ist glaub ich das Problem bei der Sache: Die beiden "sollten" übereinander liegen. Geht das überhaupt? Und wenn: geht das so?

EDIT: Das es "normalerweise" geht weiss ich, weil es ohne Beamer am Notebookmonitor funktioniert hat - nur ob es am externen Monitor auch geht... ;)

mquadrat 5. Mai 2008 15:07

Re: Vollbildanwendung über mehrere Monitore
 
Was mir spontan einfallen würde wäre, dass eins der Forms den WindowState wsMaximized hat. Dann kannste die Koordinaten setzen wie du willst. Da wird sich nichts bewegen.

MaxMara 6. Mai 2008 07:36

Re: Vollbildanwendung über mehrere Monitore
 
Zitat:

Zitat von mquadrat
Was mir spontan einfallen würde wäre, dass eins der Forms den WindowState wsMaximized hat. Dann kannste die Koordinaten setzen wie du willst. Da wird sich nichts bewegen.

Nein, sind alle wsNormal.


Alle Zeitangaben in WEZ +1. Es ist jetzt 20:26 Uhr.

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