Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2017.01.15;
Скачать: CL | DM;

Вниз

Сохранение позиции и размера формы   Найти похожие ветки 

 
Kerk ©   (2015-11-19 15:30) [0]

Сабж. Сделать вроде легко, но есть подводные камни. Например, многомониторность. Перетащил окно на другой монитор, позиция сохранилась, отключил монитор, открыл окно еще раз и ой, оно на невидимом мониторе.

Есть какие-нибудь может стандартные решения здесь?


 
кгшзх ©   (2015-11-19 16:01) [1]

стандартный иф стандартен


 
картман ©   (2015-11-19 16:09) [2]


> отключил монитор

или, что то же самое, изменил разрешение...


 
Kerk ©   (2015-11-19 16:11) [3]


> картман ©   (19.11.15 16:09) [2]

Именно


 
кгшзх ©   (2015-11-19 16:15) [4]

стандартное решение - помнить не пиксели а проценты


 
Dimka Maslov ©   (2015-11-19 16:21) [5]

Лично я определяю монитор относительно сохранённого центра формы:

M: TMonitor;
R: TRect;

M := Screen.MonitorFromPoint(R.CenterPoint);

потом сравниванию R и M.WorkareaRect.

Если R выпадает за пределы - устанавливаю положение и размеры формы по-умолчанию.


 
Kerk ©   (2015-11-20 00:06) [6]

Про проценты интересная идея. Но будет давать видимую глазом погрешность.


 
Kerk ©   (2015-11-20 00:07) [7]

Хотя в принципе можно свести к погрешности в один пиксель.


 
Eraser ©   (2015-11-20 00:19) [8]

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


 
кгшзх ©   (2015-11-20 08:34) [9]

для случая исчезания второго монитора или смены разрешения


 
Eraser ©   (2015-11-21 18:00) [10]


> кгшзх ©   (20.11.15 08:34) [9]

выключил второй монитор - форма сама перескочила на первый.


 
кгшзх ©   (2015-11-21 18:42) [11]

форма сама перескочила на первый.

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

его зарыли когда форма была на правом и в настройках лежит лефт-координата которая больше ширины левого моника.


 
megavoid ©   (2015-11-22 03:33) [12]

[Shift+]Win+влево|вправо


 
Eraser ©   (2015-11-22 22:30) [13]


> кгшзх ©   (21.11.15 18:42) [11]

читаем внимательно [8].


 
кгшзх ©   (2015-11-23 10:21) [14]

втыкай внимательно с самого начала


 
Rouse_ ©   (2015-11-23 18:59) [15]


> Kerk ©   (19.11.15 15:30) 

я писал как ширина/высота + левый верхний угол относительно активного монитора + номер монитора в системе (ну если не учитывать максимально размернутое состояние - это просто флаг).
Если монитор отключен - выводим все в таком-же виде на главный.
Монитор может поменять разрешение, стать не слева, а справа, или сверху - работать будет.


 
DVM ©   (2015-11-23 21:52) [16]

Имхо, при любом изменении конфигурации мониторов, выводим окно туда, где панель задач - не ошибемся.


 
Rouse_ ©   (2015-11-23 23:18) [17]

Панельку можно на все растянуть ;)



Страницы: 1 вся ветка

Текущий архив: 2017.01.15;
Скачать: CL | DM;

Наверх




Память: 0.5 MB
Время: 0.018 c
15-1449351004
Юрий
2015-12-06 00:30
2017.01.15
С днем рождения ! 6 декабря 2015 воскресенье


15-1454794206
Юрий
2016-02-07 00:30
2017.01.15
С днем рождения ! 7 февраля 2016 воскресенье


15-1456494306
Rouse_
2016-02-26 16:45
2017.01.15
Нужна вычитка статьи


2-1427700274
aka
2015-03-30 10:24
2017.01.15
ускорение свободного падения


4-1266266901
Pavel
2010-02-15 23:48
2017.01.15
Перевод в "спящий" режим