Entwickler-Ecke

Delphi Language (Object-Pascal) / CLX - Wo ist die Bildschirmmitte?


Lost-Ha[n]f-PHP - Mo 16.10.06 13:14
Titel: Wo ist die Bildschirmmitte?
Hallo Leute,

ich habe ein Problem. Und zwar habe ich ein Programm geschrieben, das in der Mitte des Bildschirms positioniert wird. Das klappt auch, allerdings nicht, wenn der Benutzer 2 Bildschirme angeschlossen hat. Dann wird das Fenster zwischen 1. und 2. Bildschirm gesetzt.

Wie kann ich den Fenster in der Mitte des PrimaryScreen positionieren?

Danke im Voraus.

Gruß
Jens Krebs


chrisw - Mo 16.10.06 13:22

Vielleicht noch "/ Screen.MonitorCount" rechnen !
Nur so als Idee, nicht getestet !


F34r0fTh3D4rk - Mo 16.10.06 13:28

benutzt die screencenter oder desktop center ?


chrisw - Mo 16.10.06 13:29

Oder "Screen.DeskTopWidth"


Stefan.Buchholtz - Mo 16.10.06 13:34

TScreen hat ein Array-Property Monitors und ein Property MonitorCount, mit dem du die angeschlossenen Monitore ermitteln kannst. Der Hauptbildschirm hat primary auf true gesetzt. Du kannst dem Hauptbildschirm also so ermitteln:


Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
function GetPrimaryMonitor: TMonitor;
var
  i : Integer;
begin
  Result := nil;
  for i := 0 to Screen.MonitorCount - 1 do
  begin
    if Screen.Monitors[i].Primary then
    begin
      Result := Screen.Monitors[i];
      break;
    end;
  end;
end;


Das sollte funktionieren, egal wie viele Monitore angeschlossen sind. Es geht leider nicht immer - manche Dualhead-Grafikkarten (von Matrox z.B.) können die beiden Monitore für Windows wie einen einzigen Monitor aussehen lassen.

Stefan


uwewo - Mo 16.10.06 14:50


Delphi-Quelltext
1:
Form1.Position := poScreenCenter;                    


Kann auch im OI gesetzt werden