Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Wie kann mit D7 die Bildschirmauflösung ermittelt werden ? (https://www.delphipraxis.net/133403-wie-kann-mit-d7-die-bildschirmaufloesung-ermittelt-werden.html)

Skatspieler 1. Mai 2009 09:55


Wie kann mit D7 die Bildschirmauflösung ermittelt werden ?
 
Moin,

1.) wie kann ich mit Delphi 7.0 Prof. die Bildschirmauflösung eines oder mehrere Monitore ermitteln ?

2.) Wie kann ich mit Delphi 7.0 Prof. die Anzahl der angeschlossenen Monitore ermitteln ?

Danke vorab für wertvolle Infos.

Gruss, der Skatspieler

hadschi92 1. Mai 2009 10:04

Re: Wie kann mit D7 die Bildschirmauflösung ermittelt werden
 
Bei einem Monitor auf jeden Fall so: http://www.delphi-treff.de/tipps/sys...e%20ermitteln/

mr_emre_d 1. Mai 2009 10:34

Re: Wie kann mit D7 die Bildschirmauflösung ermittelt werden
 
Schau dir Folgendes an
Delphi-Quellcode:
GetSystemMetrics()
Code:
Interessante Parameter:
  SM_CXScreen
  SM_CYScreen
  SM_CMONITORS

taaktaak 1. Mai 2009 11:01

Re: Wie kann mit D7 die Bildschirmauflösung ermittelt werden
 
Moin, Moin.
Schau dir auch TScreen an, da gibt es mit Screen.WorkArea..., Screen.Monitor... etc. auch eine ganze Reihe von Informationen :wink:

Skatspieler 1. Mai 2009 11:34

Re: Wie kann mit D7 die Bildschirmauflösung ermittelt werden
 
Erstmal danke für die Tipps.

Den ersten Tipp habe ich schon verwertet. Allerdings ist mein Compilat auf dem 2. Monitor plaziert, dieses gibt aber die Auflösungsdaten vom ersten Monitor zurück.

Ich muss mir heute abend dazu einige Gedanken machen, wie ich den Monitorstatus (1. + 2. Monitor) abfrage bzw. feststelle.

Gruss, der blaue Planet

Muetze1 1. Mai 2009 13:16

Re: Wie kann mit D7 die Bildschirmauflösung ermittelt werden
 
Siehe dazu EnumDisplaySettings(). Die Monitorstrings sind \\.\MONITOR1 bis \\.\MONITORx.

Es gibt genug Mirror-Driver, somit nicht davon ausgehen, dass es nur Monitor 1 und 2 gibt in einem Dual Screen System. Diese können mit EnumDisplayDevices() ermittelt werden.

Skatspieler 1. Mai 2009 17:47

Re: Wie kann mit D7 die Bildschirmauflösung ermittelt werden
 
Die Beiträge von #2 - #4 haben mich schonmal ein gutes Stück weitergebracht.

Ich kann die Anzahl der Monitore ermitteln mit Screen.MonitorCount

Ich kann einen Index auf die Monitor-Nr erzeugen wobei man dabei aufpassen muss dass man Monitor Nr -1
nimmt, da Zählung der Monitor Nr. ab 0 beginnt.

Über den Index bekomme ich auch die verschiedenen Auflösungen und Farbtiefe der Monitore korrekt
angezeigt.

Soweit so gut, letztes ungelöstes Problem ist aber folgendes:

Wie finde ich heraus auf welchen Monitor sich das Compilat aktuell befindet ?

Das Compilat soll den aktuellen Monitor bzw. die aktuelle Monitor Nr. ermitteln.

Ich könnte zwar den Umweg über Form1.Left gehen. Auf den Monitor 0 (erster Monitor) steht Left auf 1
wenn ich das Compilat dort korrekt ausrichte oder es steht, wenn ich es auf den 2. Monitor korrekt ausrichte bei -1023.

Allerdings finde ich die Umrechnung mit den Left-Werten recht müssig. Ich möchte einfach, dass das Programm mir ermittelt, dass es sich auf den ersten (0+1) oder auf den zweiten Monitor (1+1) oder einem weiteren Monitor (x+1) befindet. Normalerweise müsste es doch möglich sein, den aktuellen Monitor korrekt zu indizieren und zu ermitteln.

Vorschläge ?

Danke vorab für eure Unterstützung.

Gruss, der Skatspieler

mkinzler 1. Mai 2009 17:51

Re: Wie kann mit D7 die Bildschirmauflösung ermittelt werden
 
Eine Anwendung hiedenen fenster haben, welche sich auf verschiedenen Monitoren befinden können.
Mit Screen.MonitorFromWindow() kannst du für jedes Fenster den Monitor ermitteln

Skatspieler 1. Mai 2009 18:29

Re: Wie kann mit D7 die Bildschirmauflösung ermittelt werden
 
Hallo mkinzler,

was muss ich bei deinem Beispiel in die Klammer eintragen, wenn das Fenster z. B. Form1 ist ?

Ich habe aber eine andere Lösung für mein Problem gefunden. ;-)

Meine Lösung sieht wie folgt aus:

Wert := Screen.ActiveForm.Monitor.MonitorNum + 1; // +1 da Zählung der Monitore ab 0 beginnt !

Gruss, der Skatspieler


Alle Zeitangaben in WEZ +1. Es ist jetzt 09:41 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