Autor Beitrag
Lost-Ha[n]f-PHP
Hält's aus hier
Beiträge: 4



BeitragVerfasst: Mo 16.10.06 13:14 
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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 439
Erhaltene Danke: 3

W2K
D7
BeitragVerfasst: Mo 16.10.06 13:22 
Vielleicht noch "/ Screen.MonitorCount" rechnen !
Nur so als Idee, nicht getestet !

_________________
Man sollte keine Dummheit zweimal begehen, die Auswahl ist schließlich groß genug.
F34r0fTh3D4rk
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 5284
Erhaltene Danke: 27

Win Vista (32), Win 7 (64)
Eclipse, SciTE, Lazarus
BeitragVerfasst: Mo 16.10.06 13:28 
benutzt die screencenter oder desktop center ?
chrisw
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 439
Erhaltene Danke: 3

W2K
D7
BeitragVerfasst: Mo 16.10.06 13:29 
Oder "Screen.DeskTopWidth"

_________________
Man sollte keine Dummheit zweimal begehen, die Auswahl ist schließlich groß genug.
Stefan.Buchholtz
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 612

WIN 2000, WIN XP, Mac OS X
D7 Enterprise, XCode, Eclipse, Ruby On Rails
BeitragVerfasst: 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:

ausblenden 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

_________________
Ein Computer ohne Windows ist wie eine Schokoladentorte ohne Senf.
uwewo
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 154



BeitragVerfasst: Mo 16.10.06 14:50 
ausblenden Delphi-Quelltext
1:
Form1.Position := poScreenCenter;					


Kann auch im OI gesetzt werden