Entwickler-Ecke

Grafische Benutzeroberflächen (VCL & FireMonkey) - Mehrere Monitore, Form verschieben auf Monitor (x)


Dreyhaupt - Mi 28.09.11 15:00
Titel: Mehrere Monitore, Form verschieben auf Monitor (x)
Hallo Leute

folgende Aufsgabe kann ich vermutlich ohne Eure Hilfe nicht lösen.

An einem PC sind mit einer speziellen Grafikkarte derzeit 4 Monitor angeschlossen.

Über "showmessage(inttostr(screen.MonitorCount))" erhalte ich die Anzahl der derzeit aktiven Monitore.

Ich möchte nun zb Form1 auf Monitor 1, Form2 auf Monitor 2 usw. plazieren.

Der erweiterte Desktop kann auch die Monitore untereinander, nebeneinander stellen. Über die Funktion Pixelbreite, Pixelhöhe will ich es nicht lösen. Ich möchte wie in Windows, die Monitore identifizieren 1,2,3,4 und dann die Form dorthin verschieben.

Ich habe auch nicht herausgefunden, wie Windows das Identifizeren macht? Eine Funktion muß es ja geben.

Danke für Eure Ideen....

Christian
+++++++++

Moderiert von user profile iconNarses: Überflüssige Zeilenumbrüche/Leerzeilen entfernt.
Moderiert von user profile iconNarses: Topic aus Multimedia / Grafik verschoben am Mi 28.09.2011 um 15:53


BenBE - Mi 28.09.11 15:37

Siehe TScreen.Monitors und TScreen.MonitorFromPoint.


Dreyhaupt - Do 29.09.11 10:36

Hat jemand schonmal mit diesen Funktionen gearbeitet?

--> TScreen.Monitors und TScreen.MonitorFromPoint

Evtl. ein paar Codeschnipsel


espen - Do 29.09.11 11:46

Hallo,

ich habe mal einen Bildschirmschoner erstellt, der auf versch. Monitoren läuft.
Um ein Form auf einen bel. Monitor zu platzieren habe ich folgende Prozedur verwendet:


Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
procedure PlaceFormOnMonitor(MonFrame: TForm; MonitorNum: Integer);
var
  r: TRect;
begin
  r := Screen.Monitors[MonitorNum].BoundsRect;
  MonFrame.SetBounds(r.Left, r.Top, r.Right - r.Left, r.Bottom - r.Top);
end;


Grüßle