2017-01-17 1 views
1

Я хочу, чтобы мое приложение всегда начиналось с левого монитора (в случае, если есть более 1 подключенного).Delphi - открытая форма на левом мониторе

Как это можно сделать? Как определить номер левого монитора?

Спасибо за помощь!

+3

Вы должны искать в Интернете перед тем, как задать вопрос - http://docwiki.embarcadero.com/RADStudio/Seattle/en/Handling_the_Screen – RBA

+1

Любая конкретная причина, по которой вы не хотите позволять пользователю самостоятельно выбирать монитор и положение предпочтительнее? –

+1

Я надеюсь, что ваша программа удаления хорошо протестирована –

ответ

1

Мы используем этот фрагмент кода:

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; 

Тогда _MonitorNum держит число левого большинства монитора.

+4

Не нужно создавать экземпляры классов списка, методы anon, сортировать и т. Д. Просто запускайте мониторы и идентифицировать самый левый самый. 'var MinValue, MinIndex: Integer; ... MinValue: = Screen.Monitors [0] .Left; MinIndex: = 0; для i: = 1 для Screen.MonitorCount - 1, если Screen.Monitors [i] .Left

+0

@ Давид Это правда. – penarthur66

+0

Звучит неплохо, я попробую это завтра. – Chris

Смежные вопросы