2017-01-17 2 views
1

Ich möchte, dass meine Anwendung immer auf dem linken Monitor startet (falls mehr als 1 angeschlossen sind).Delphi - Formular auf dem linken Monitor öffnen

Wie kann das gemacht werden? Wie erkennt man die linke Monitornummer?

Vielen Dank für Ihre Hilfe!

+3

Sie sollten im Internet gesucht werden, bevor Sie fragen - http://docwiki.embarcadero.com/RADStudio/Seattle/de/Handling_the_Screen – RBA

+1

Jeder bestimmte Grund, warum Sie nicht möchten, dass ein Benutzer ihre eigene Wahl treffen kann, welche Monitor und Position ist bevorzugt? –

+1

Ich hoffe, Ihr Deinstallationsprogramm ist gut getestet –

Antwort

1

Wir verwenden dieses Codefragment:

if Screen.MonitorCount > 1 then 
begin 
    MonList := TList<TMonitor>.Create; 

    for I := 0 to Screen.MonitorCount - 1 do 
    MonList.Add(Screen.Monitors[I]); 

    // sort by screen.monitor.left coordinate 
    MonList.Sort(TComparer<TMonitor>.Construct(
    function(const L, R: TMonitor): Integer 
    begin 
     Result := L.Left - R.Left; 
    end)); 

    _MonitorNum := TMonitor(MonList[0]).MonitorNum; 

    // free the list 
    MonList.Destroy; 
end; 

Dann _MonitorNum hält die Anzahl des am weitesten links stehenden Monitor.

+4

Es ist nicht notwendig, Instanzen von List-Klassen, Anon-Methoden, Sortierungen usw. zu erstellen und identifiziere den am weitesten links liegenden. 'var MinValue, MinIndex: Ganzzahl; ... MinValue: = Bildschirm.Monitore [0] .Links; MinIndex: = 0; für i: = 1 bis Screen.MonitorCount - 1, wenn Screen.Monitors [i] .Left

+0

@David Das ist wahr. – penarthur66

+0

Das klingt gut, ich werde das morgen versuchen. – Chris

Verwandte Themen