Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 12.10.2021, 19:46   #1
Stannis
 
Регистрация: 21.11.2017
Сообщений: 4
По умолчанию Вылезает форма за пределы экрана на 3 пикселя

При использовании стандартных Delphi'йских скинов развернутая на весь экран форма вылезает на 3 пикселя вверх и 3 пикселя влево (Win10, XE6). Проверено на отдельном демо. Не то, чтобы я совесем перфекционист, но сделал форме маленькие бордюры (Border) в скинах и LeftBorder исчез (вылез за пределы экрана). Как результат - дочернее окно (fsMDIChild) тоже вылезает и рамка с левой стороны не видна. Может кто уже решал такую проблему?
Stannis вне форума Ответить с цитированием
Старый 13.10.2021, 07:45   #2
NetSpace
Участник клуба
 
Аватар для NetSpace
 
Регистрация: 03.06.2009
Сообщений: 1,792
По умолчанию

не люблю я эти украшения и рюшечки на зановесочках. просто стандартная форма серого цвета...
--------
но, если бы такая задача встала, то просто сделал бы в обработчике нажатия кнопки
Form1.Width:=Screen.Width-3;
Form1.Height:=Screen.Height-3;
раз уж этот скин так сильно расширяет форму....
Программирование - это единственный способ заставить компьютер делать то, что тебе хочется, а не то, что приходится.
NetSpace вне форума Ответить с цитированием
Старый 13.10.2021, 19:05   #3
Stannis
 
Регистрация: 21.11.2017
Сообщений: 4
По умолчанию

Код:
Form1.Height:=Screen.Height-3;
Было бы так все просто. Панель задач нужно сохранить видимой. Screen.Height не учитывает панель. К тому же она может быть как снизу, так и где-угодно.

Нужно через Screen.WorkAreaHeight или типа того, но вычисляется неверно.
MainForm.MakeFullyVisible; выравнивает по левому и верхнему краям. Остается поморочиться в шириной и высотой
Stannis вне форума Ответить с цитированием
Старый 14.10.2021, 07:08   #4
NetSpace
Участник клуба
 
Аватар для NetSpace
 
Регистрация: 03.06.2009
Сообщений: 1,792
По умолчанию

ну, если уж совсем припрёт, то работа с графикой....
1. делать скриншот - снимок с экрана
2. выискивать на нём полоску цвета панели задач. и отсекать, всё, что снизу - запоминать координату - узнаем высоту свободной области для ширины формы.
3. то же самое делать для ширины, если вдруг панель задач окажется справа.
4. ну, по желанию, можно сделать то же самое для верхней и левой области.
5. в итоге у тебя на руках окажется 4 координаты - угловые 4 точки, с которых можно потом размещать форму и придавать ей нужную ширину и высоту...
--------
понятно, что алгоритм поиска будет основан на вложенных циклах, но с применением операторов break он будет довольно-таки шустрым.
Программирование - это единственный способ заставить компьютер делать то, что тебе хочется, а не то, что приходится.
NetSpace вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
PaintBox и Bitmap. При перемещении формы за пределы экрана картинка стирается Женя32 Мультимедиа в Delphi 2 28.07.2019 04:48
Автоматически вылезает и не двигается форма SlashMan Общие вопросы Delphi 9 14.01.2010 18:11
Узнать цвет пикселя на экране, без снимка экрана. Alex Cones Общие вопросы Delphi 3 03.08.2009 12:02
Получение произвольного пикселя с экрана andreyasu Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 3 07.06.2009 21:35
Пределы экрана Манжосов Денис :) Общие вопросы Delphi 6 01.05.2008 10:58