Inhaltsverzeichnis

CpScreen.Top

Ab Version 3.1.1 build 390 ist in Cockpit-XP die Option integriert, gezielt Informationen über die angeschlossenen Anzeigen an einem Multi-Monitor System abzufragen. Diese lassen sich anschließend nutzen, um Elemente vom Typ TForm nicht nur auf dem Hauptmonitor anzuzeigen.

Angenommen, am Rennbahnrechner sind 3 Monitore angeschlossen. Einer liefert eine FullHD-Auflösung (1920 x 1080 px), ein weiterer hat eine Auflösung von 1024 x 768 px und Monitor Nummer 3 löst mit 1280 x 1024 px auf.

In Windows sind die 3 Geräte als erweiterter Desktop konfiguriert. Die Monitore sind nebeneinander angeordnet. Sie zeigen also nicht alle das gleiche Bild sondern der Desktop dehnt sich über die gesamte Breite alle Monitore aus.

Die Gesamtbreite dieser Konfiguration beträgt 1.920 + 1.024 + 1.280 = 4.224 Pixel.

Die Gesamthöhe beträgt 1.080 Pixel. Hier gibt die größte Anzeige das Maß vor.


Syntax

Befehl CpScreen.Top
Funktion Liefert die obere Position des gewählten Monitors im gesamten Bereich eines erweiterten Desktops in Pixel
Typ Integer
ab 3.1.1 build 390


Codebeispiel


Dieses Beispiel schließt alle Befehle des CpScreen-Objektes ein und ist daher bei allen Befehlen gleich.

const
  CrLf = Chr(13) + Chr(10)
  
var
  monitor : Integer;
  msg : String;
  
begin

  // Variable initialisieren
  msg := '';
  
  // Systeminformationen abfragen
  msg := 'Anzahl Monitore: ' + IntToStr(CpScreen.ScreenCount) + CrLf +
         'Desktop Breite: ' + IntToStr(CpScreen.DesktopWidth) + ' px' + CrLf + 
         'Desktop Höhe: ' + IntToStr(CpScreen.DesktopHeight) + ' px' + CrLf;
 
  // Systeminformationen als Meldung
  cpShowMessage(msg);
  
  // Variable neu initialisieren
  msg := '' + '--------------' + CrLf;
  
  // Details für alle am System vorhandenen Monitore abfragen  
  for monitor := 0 to CpScreen.ScreenCount - 1 do
  begin
  
    // Monitor einstellen
    CpScreen.SelectScreen := monitor;
    
    // Meldung generieren
    msg := 'Monitor Nr: ' + IntToStr(monitor) + CrLf +
           '--------------' + CrLf + 
           'Name: ' + CpScreen.Name + CrLf +
           'Tag: ' + IntToStr(CpScreen.Tag) + CrLf +
           'Links: ' + IntToStr(CpScreen.Left) + CrLf + 
           'Oben: ' + IntToStr(CpScreen.Top) + CrLf + 
           'Breite: ' + IntToStr(CpScreen.Width) + CrLf + 
           'Höhe: ' + IntToStr(CpScreen.Height) + CrLf + 
           '--------------' + CrLf ;
  
  end;
  
  // Meldung anzeigen
  cpShowMessage(msg);
         
end.


Im ersten Teil fragt der Code erst einmal die Anzahl angeschlossener Monitore ab und liefert dann Gesamtbreite und -höhe des Windows Desktops. Das Resultat erscheint als Meldung.

Vergleicht man die Anzahl der Monitore, die der Befehl CpScreen.ScreenCount liefert mit dem Ergebnis, welches cpCountOfMonitor ausgibt, wundert man sich im ersten Moment, denn man erhält eine Differenz von einem Monitor!

cpCountOfMonitor liefert als Ergebnis die Anzahl der angeschlossenen Zusatzmonitore, die im ConfigCenter → Basis Einstellungen → Allgemein konfiguriert sind. Der Hauptmonitor wird unterschlagen.

Im nächsten Schritt fragt der Code die Detailinformationen für jeden einzelnen der angeschlossenen Monitore ab. Wichtig: der Index der Auflistung beginn mit dem Wert 0. Aus diesem Grund muss für die Schleife die Anzahl der ermittelten Monitore um den Wert -1 verringert werden.

An dem hier getesteten System befindet sich aktuell nur ein Monitor mit FullHD-Auflösung. Die linke obere Ecke befindet sich an Position 0, 0 px. Breite und Höhe sind 1920 x 1080 px.


So sieht es zu Hause an meiner Rennbahn aus. 1 Hauptmonitor mit FullHD und 6 kleine USB-Monitore mit je 800 x 480 px. Sie Log-Datei sieht dann so aus.



Start - FAQ - Glossar - Sitemap - Impressum

 
cockpit-xp/addon/befehlsreferenz/cpscreentop.txt · Zuletzt geändert: 2020/11/28 12:15 (Externe Bearbeitung)