AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Multimedia Delphi Multi Monitor Unterstützung - Was tun bei mehreren Monitoren
Thema durchsuchen
Ansicht
Themen-Optionen

Multi Monitor Unterstützung - Was tun bei mehreren Monitoren

Ein Thema von MaBuSE · begonnen am 23. Sep 2005 · letzter Beitrag vom 23. Sep 2005
Antwort Antwort
Benutzerbild von MaBuSE
MaBuSE

Registriert seit: 23. Sep 2002
Ort: Frankfurt am Main (in der Nähe)
1.837 Beiträge
 
Delphi 10 Seattle Enterprise
 
#1

Multi Monitor Unterstützung - Was tun bei mehreren Monitoren

  Alt 23. Sep 2005, 06:57
derpepe schrieb in http://www.delphipraxis.net/internal_redirect.php?p=431916#431916
an den Autor:
Das Proggi füllt nicht den gesamten Desktop, sondern immer nur den aktuellen Screen
Bitte änder das doch noch.


Ich würde das ja gerne in bounce einbauen, aber ...

Dazu habe ich mal eine Frage:

Es gibt das Screen: TScreen Objekt. Hier kann ich erfahren welche Width und Height der Bildschirm hat.
(Für mich als Einbildschirm-Besitzer war das bisher ausreichend.)

Ich kann wohl mit Screen.DesktopWidth und Screen.DesktopHeight die Größe des gesammten Desktops erfahren.
Mit Screen.DesktopLeft und Screen.DesktopTop kann ich die linke obere Ecke relativ zum Primary Monitor des Desktop ermitteln.
  • Habe ich folgendes richtig verstanden?
    Beisp.
    2 Bildschirme á 800x600 -> Screen.DesktopWidth = 1600 und Screen.DesktopHeight = 600

    1. Bildschirm = primary -> Screen.DesktopLeft = 0 und Screen.DesktopTop = 0
    mit Form1.Left := 500; bin ich auf dem 1. Bildschirm (primary)
    mit Form1.Left := 1000; bin ich auf dem 2. Bildschirm

    2. Bildschirm = primary -> Screen.DesktopLeft = -800 und Screen.DesktopTop = 0
    mit Form1.Left := -500; bin ich auf dem 1. Bildschirm
    mit Form1.Left := 500; bin ich auf dem 2. Bildschirm (primary)
  • Müssen alle Bildschirme die gleiche Auflösung haben?
  • Wie verhält sich das mit 1. Monitor = 800x600, 2. Monitor (primary) = 1280x1024 ?
    Ist Screen.DesktopWidth dann 2080 und Screen.DesktopHeight = 1624 ?
  • Wie erkenne ich wie die Monitore angeordnet sind?
    Screen.MonitorCount = 4
    Screen.Monitor[i].Width bzw. Height

    Die 4 Monitore können 2 oben 2 unten oder alle 4 in einer Reihe angeordnet sein.
  • Wird ein TV Ausgang auch angezeigt? (als Teil vom Desktop oder "nur" als weiterer Monitor)
  • Wie teste ich "Multi-Monitor" Funktionalität, wenn ich nur einen Monitor habe
    Gibt es sowas wie virtuelle Monitore, die frei konfigurierbar sind? (Anordnung und Auflösung)
  • Gibts zu dem Thema ein Tutorial oder so?
Es gibt so viele Fragen aber
mit nur einem Monitor ist das gar nicht so einfach herauszufinden

Danke für die Antworten.
MaBuSE
(°¿°) MaBuSE - proud to be a DP member
(°¿°) MaBuSE - proud to be a "Rüsselmops" ;-)
  Mit Zitat antworten Zitat
Benutzerbild von Leuselator
Leuselator

Registriert seit: 18. Mär 2003
Ort: Berlin
589 Beiträge
 
Delphi 8 Architect
 
#2

Re: Multi Monitor Unterstützung - Was tun bei mehreren Monit

  Alt 23. Sep 2005, 07:59
zur 2.+3. Frage: Nein, die Monis können individuelle Auflösungen haben, allerdings hat der Desktop dann eine Größe, die dem mehrfachen der größten Moniauflösung entspricht. Zu erkennen ist das, wenn man einen Screenshot macht - die von den Monis mit geringerer Auflösung nicht abgedeckten Bereiche erscheinen schwarz.
Beispiel:
Delphi-Quellcode:
wenn Moni1 der Primäre ist und Moni2 rechts davon, beide an oberer Kante ausgerichtet:
Moni 1 : 1280x1024 Left: 0 Top: 0 Right: 1279 Bottom: 1023
Moni 2 : 1600x1200 Left: 1280 Top: 0 Right: 2879 Bottom: 1199
Desktop: 2880x1200 Left: 0 Top: 0 Right: 2879 Bottom: 1199

wenn Moni2 der Primäre ist und Moni1 links davon, beide an unterer Kante ausgerichtet:
Moni 1 : 1280x1024 Left:-1280 Top:176 Right: -1 Bottom: 1199
Moni 2 : 1600x1200 Left: 0 Top: 0 Right: 1279 Bottom: 1199
Desktop: 3200x1200 Left:-1280 Top: 0 Right: 1279 Bottom: 1199
zur 4. Frage
Es gibt auch eine diagonale oder L-förmige Anordnung (macht aber wenig Sinn).
Die Desktopgröße definiert sich immer aus der Differenz aus den extremen (linkester Monirand zu rechtestem, oberster Monirand zu unterstem), der Primärbildschirm (der wo die Taskleiste sitzt) definiert dabei immer mit seiner linken oberen Ecke den Ursprung des Koordinatensystems (Left:0 Top: 0).
Delphi-Quellcode:
+--------------------------+
|+-------+ Desktop |
|| | |
|| | +--------------+|
|| | | ||
|| Moni2 | | Moni 1 ||
|+-------+ | ||
| | ||
| +--------------+|
+--------------------------+
das ganze gilt für W2K und Matrox-Treiber.
Tim Leuschner
Programmierer = moderner Sysiphos: stets wenn er meint, den Stein seiner Dummheit auf den Berg des Wissens gewuchtet zu haben, erblickt er einen völlig neuen Aspekt und der Dummfels poltert mit Getöse zurück ins Tal der Unwissenheit...
  Mit Zitat antworten Zitat
Benutzerbild von alcaeus
alcaeus

Registriert seit: 11. Aug 2003
Ort: München
6.537 Beiträge
 
#3

Re: Multi Monitor Unterstützung - Was tun bei mehreren Monit

  Alt 23. Sep 2005, 08:26
Moin Leuselator,

nur teilweise richtig. Wenn ich auf einem Monitor Pivot-Mode einschalte, hab ich folgenden Desktop:
Code:
+----------+ +-----------+
|          | |           |
|   M1     | |    M2     |
|          | |           |
+----------+ |           |
             |           |
             +-----------+
Mach einfach mal einen Screenshot von so einer Konfiguration, und du wirst wissen was ich meine

Zum Theme: ich hatte das gleiche "Problem" bei einem Screensaver, der alle Monitore fuellen sollte. Ich habs dann so geloest:
Delphi-Quellcode:
procedure TfrmMain.FormCreate(Sender: TObject);
var
   MinLeft, MinTop: Integer;
   TotalWidth, TotalHeight: Integer;
   i, j: Integer;
   PaintBoxStartPoint: TPoint;
begin
   Self.PaintBoxList := TPaintBoxList.Create(True);
   Self.BorderStyle := bsNone;
   Self.FormStyle := fsStayOnTop;
   Self.MonitorCount := Screen.MonitorCount;

   MinLeft := 0;
   MinTop := 0;
   TotalWidth := 0;
   TotalHeight := 0;
   for i := 0 to Self.MonitorCount-1 do
   begin
      MinLeft := Min(MinLeft, Screen.Monitors[i].Left);
      MinTop := Min(MinTop, Screen.Monitors[i].Top);
      TotalWidth := Max(TotalWidth, Screen.Monitors[i].Left + Screen.Monitors[i].Width);
      TotalHeight := Max(TotalHeight, Screen.Monitors[i].Top + Screen.Monitors[i].Height);
   end; //   for i := 0 to Self.MonitorCount-1 do
   Self.Top := MinTop;
   Self.Left := MinLeft;
   Self.Height := TotalHeight;
   Self.Width := TotalWidth;
   for i := 0 to Self.MonitorCount-1 do
   begin
      PaintBoxStartPoint := ScreenToClient(Point(Screen.Monitors[i].Left, Screen.Monitors[i].Top));
      with PaintBoxList[PaintBoxList.Add(TPaintBox.Create(Self))] do
      begin
         Left := PaintBoxStartPoint.X;
         Top := PaintBoxStartPoint.Y;
         Width := Screen.Monitors[i].Width;
         Height := Screen.Monitors[i].Height;
         Parent := Self;
         Tag := i;
         Visible := True;
         OnPaint := PaintBoxPaint;
         OnClick := FormClick;
      with PaintBoxList[PaintBoxList.Add(TPaintBox.Create(Self))] do
   end; //   for i := 0 to Self.MonitorCount-1 do
So, und was ist das? Tja...wenn ichs noch wuesste
Ne, im Ernst: Das Programm vergroessert sich auf den extremsten Desktop, und erstellt dann eine PaintBox fuer jeden Monitor, genau mit den entsprechenden Koordinaten. Ich weiss nicht inwiefern dir das nuetzlich ist, aber wer weiss

Greetz
alcaeus
Andreas B.
Die Mutter der Dummen ist immer schwanger.
Ein Portal für Informatik-Studenten: www.infler.de
  Mit Zitat antworten Zitat
Benutzerbild von Leuselator
Leuselator

Registriert seit: 18. Mär 2003
Ort: Berlin
589 Beiträge
 
Delphi 8 Architect
 
#4

Re: Multi Monitor Unterstützung - Was tun bei mehreren Monit

  Alt 23. Sep 2005, 08:33
versteh nicht ganz, was Du meinst - habe drei Monis-alle auf Pivot und es verhält sich genau so, wie von mir oben beschrieben.
Gruß
Miniaturansicht angehängter Grafiken
pivot2_150.jpg   pivot_176.jpg  
Tim Leuschner
Programmierer = moderner Sysiphos: stets wenn er meint, den Stein seiner Dummheit auf den Berg des Wissens gewuchtet zu haben, erblickt er einen völlig neuen Aspekt und der Dummfels poltert mit Getöse zurück ins Tal der Unwissenheit...
  Mit Zitat antworten Zitat
Benutzerbild von alcaeus
alcaeus

Registriert seit: 11. Aug 2003
Ort: München
6.537 Beiträge
 
#5

Re: Multi Monitor Unterstützung - Was tun bei mehreren Monit

  Alt 23. Sep 2005, 09:14
Joa, in den schwarzen bereich kannst du afair nicht reinzeichnen, das meinte ich. Es sieht auf Screenshots zwar so aus, aber die effektive Zeichenflaeche ist (jedenfalls bei mir) nicht so gross wie die maximalen Ausmessungen der Monitore.

Greetz
alcaeus
Andreas B.
Die Mutter der Dummen ist immer schwanger.
Ein Portal für Informatik-Studenten: www.infler.de
  Mit Zitat antworten Zitat
Benutzerbild von Leuselator
Leuselator

Registriert seit: 18. Mär 2003
Ort: Berlin
589 Beiträge
 
Delphi 8 Architect
 
#6

Re: Multi Monitor Unterstützung - Was tun bei mehreren Monit

  Alt 23. Sep 2005, 09:54
scheint wie ein Clipping-rect zu sein
Tim Leuschner
Programmierer = moderner Sysiphos: stets wenn er meint, den Stein seiner Dummheit auf den Berg des Wissens gewuchtet zu haben, erblickt er einen völlig neuen Aspekt und der Dummfels poltert mit Getöse zurück ins Tal der Unwissenheit...
  Mit Zitat antworten Zitat
Benutzerbild von MaBuSE
MaBuSE

Registriert seit: 23. Sep 2002
Ort: Frankfurt am Main (in der Nähe)
1.837 Beiträge
 
Delphi 10 Seattle Enterprise
 
#7

Re: Multi Monitor Unterstützung - Was tun bei mehreren Monit

  Alt 23. Sep 2005, 10:12
Zitat von Leuselator:
scheint wie ein Clipping-rect zu sein
Danke Jungs,
ich will auch 3 Monitore haben
(°¿°) MaBuSE - proud to be a DP member
(°¿°) MaBuSE - proud to be a "Rüsselmops" ;-)
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 13:12 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