Решение оказалось очень простым))
Экспериментировал с координатами (ибо при работе на втором мониторе они отрицательные)
и сначала сделал так
(это прописано в onmouseup, но по сути r это aRect в функции CaptureScreenRect до применения NormRect)
r.Left := downX-screen.Width;
r.Top := downY;
r.Right := X-screen.Width;
r.Bottom := Y;
в таком случае работает корректно, но только если у меня мониторы выставлены в настройках как [2][1] (доп монитор у меня слева)
если я в настройках винды меняю порядок на [1][2](как будто я переставил доп монитор справа), то данное "исправление" не работает.
Но переделав фрагмент выше вот так вроде всё работает)
if Screen.DesktopLeft < 0 then
begin
r.Left := downX-screen.Width;
r.Right := X-screen.Width;
end
else
begin
r.Left := downX;
r.Right := X;
end;
if Screen.DesktopTop < 0 then
begin
r.Top := downY-screen.Height;
r.Bottom := Y-screen.Height;
end
else
begin
r.Top := downY;
r.Bottom := Y;
end;
Подскажите пожалуйста - хорошее ли это решение и какие могут быть "подводные камни" при такой реализации?
P.S.:
правда проверял только меняя настройки мониторов в винде (по другому не знаю как проверить):
[1][2]
[2][1]
[1]
[2]
[2]
[1]