Delphi-PRAXiS
Seite 1 von 3  1 23      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   Monitore und dessen Positionen anzeigen (Bildschirmanordnung) (https://www.delphipraxis.net/184002-monitore-und-dessen-positionen-anzeigen-bildschirmanordnung.html)

dGeek 18. Feb 2015 17:51


Monitore und dessen Positionen anzeigen (Bildschirmanordnung)
 
Ich interessiere mich momentan dafür wie man sich seine Monitore, dessen Namen und Positionen anzeigen lassen kann.
Also die Bildschirmanordnung.

Was ich meine ist dieses Fenster welches man sieht wenn man seine Auflösung verändert. Oben werden ja alle Monitore mit einer Nummer markiert und dessen Positionen angezeigt.

Auch hier sieht man das mit einem Monitor schön:
http://www.chip.de/ii/6/4/9/6/8/6/5/...887c2b8862.png

Wie lässt sich so etwas realisieren?

himitsu 18. Feb 2015 18:46

AW: Monitore und dessen Positionen anzeigen (Bildschirmanordnung)
 
Delphi-Referenz durchsuchenScreen

BadenPower 18. Feb 2015 18:50

AW: Monitore und dessen Positionen anzeigen (Bildschirmanordnung)
 
Schau Dir einmel die Klassen TScreen und TMonitor an.

Wenn Du mehr Informationen zu den einzelnen Moitoren und Grafikeinstellungen benötigst musst Du auf die Windows-Api zurückgreifen.

Siehe dort zum Beispiel unter:
EnumDisplayDevices
EnumDisplaySettings
EnumDisplaySettingsEx
GetDeviceCaps

dGeek 18. Feb 2015 19:01

AW: Monitore und dessen Positionen anzeigen (Bildschirmanordnung)
 
Und genau da liegt ja der Hund begraben ;)

Screen und Monitor sagen mir etwas.
Aber wie bekomme ich die Bildschirmanordnung heraus?
Bildschirm 2 ist ja nicht zwangsweise rechts, der kann auch oben, unten oder links sein.

BadenPower 18. Feb 2015 19:10

AW: Monitore und dessen Positionen anzeigen (Bildschirmanordnung)
 
Zitat:

Zitat von dGeek (Beitrag 1290460)
Und genau da liegt ja der Hund begraben ;)

Screen und Monitor sagen mir etwas.
Aber wie bekomme ich die Bildschirmanordnung heraus?
Bildschirm 2 ist ja nicht zwangsweise rechts, der kann auch oben, unten oder links sein.

Hast Du Dir einmal die Hilfe zu TMonitor angeschaut???

Da steht bei der Property "Top" zum Beispiel so ein netter Hinweis.

Zitat:

In Anwendungen mit mehreren Bildschirmen kann sich der verfügbare vertikale Anzeigebereich über mehrere Bildschirme erstrecken. Mit Top können Sie feststellen, wo sich der obere Rand des Bildschirms innerhalb des Gesamtbereichs befindet. Der Wert von Top wird relativ zum oberen Rand des Primärbildschirms in Pixel angegeben.
Es lohnt sich auch die anderen Propertys anzuschauen.

dGeek 18. Feb 2015 19:12

AW: Monitore und dessen Positionen anzeigen (Bildschirmanordnung)
 
Wenn es eine online-Hilfe gibt, gucke ich mir das gerne an.
Aber nach dem Update 3 für mein XE2 funktioniert meine Hilfe nicht mehr und alles neu zu installieren dauert zu lange :(

Ich sehe gerade dass das alles viel zu komplex für mich ich da blicke ich nicht durch.
Außerdem komme ich mit Monitor gar nicht klar, mit Screen schon.

dGeek 18. Feb 2015 19:31

AW: Monitore und dessen Positionen anzeigen (Bildschirmanordnung)
 
Also wie ich die Positionen herausbekomme habe ich jetzt sehr laienhaft herausbekommen.

Aber wie kann ich das umrechnen und auf einem Form anzeigen lassen? Genau damit habe ich eben Probleme.

himitsu 18. Feb 2015 20:07

AW: Monitore und dessen Positionen anzeigen (Bildschirmanordnung)
 
Wieso laienhaft?

In Screen findet man die Monitore und in jedem Monitor die pixelgenaue Position und Größe.
Das kann man nun direkt bbenutzen, oder man rechnet es sich entsprechend um, auf die benötigte Größe. (Zoomen -> Prozentrechnung oder der geliebte Dreisatz)

dGeek 18. Feb 2015 21:02

AW: Monitore und dessen Positionen anzeigen (Bildschirmanordnung)
 
Ich glaube das wird mit mir heute nichts mehr :P

Das folgende ist nur zum Testen. Aber die Shapes bzw das Shape wird immer oben links in den negativen Bereich gesetzt.
Solche Rechnungen sind zu kompliziert für mich :D

Delphi-Quellcode:
var
  p: TPoint;
  i: Integer;
  aShape: TShape;
begin
  for i := 0 to Screen.MonitorCount - 1 do
  begin
    p := Point(Screen.Monitors[i].Top, Screen.Monitors[i].Left);

    aShape := (FindComponent('Shape' + IntToStr(i + 1)) as TShape);
    aShape.Left := ScreenToClient(p).Y;
    aShape.Top := ScreenToClient(p).X;

    aShape.Width := Screen.Monitors[i].Width;
    aShape.Height := Screen.Monitors[i].Height;

    showmessage(IntToStr(aShape.Left) + ' - ' + IntToStr(aShape.Top));
  end;

Sir Rufo 18. Feb 2015 21:14

AW: Monitore und dessen Positionen anzeigen (Bildschirmanordnung)
 
Zitat:

Zitat von dGeek (Beitrag 1290467)
Wenn es eine online-Hilfe gibt, gucke ich mir das gerne an.
Aber nach dem Update 3 für mein XE2 funktioniert meine Hilfe nicht mehr und alles neu zu installieren dauert zu lange :(

Ich sehe gerade dass das alles viel zu komplex für mich ich da blicke ich nicht durch.
Außerdem komme ich mit Monitor gar nicht klar, mit Screen schon.

Hach, so ein Mist aber auch ... wenn es nur sowas wie ein vernetztes Informationsdingen geben würde - man würde es glatt Internet nennen können - wo diese Informationen abrufbar wären ... das wär schön ..

Delphi-Referenz durchsuchenTScreen oder direkt für XE3 auf deutsch
http://docwiki.embarcadero.com/Libra....Forms.TScreen


Alle Zeitangaben in WEZ +1. Es ist jetzt 08:01 Uhr.
Seite 1 von 3  1 23      

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