Форум программистов, компьютерный форум, киберфорум
Наши страницы
Delphi для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.57/7: Рейтинг темы: голосов - 7, средняя оценка - 4.57
Azam693
0 / 0 / 0
Регистрация: 17.03.2012
Сообщений: 13
1

Одинаковое отображение программы на разных дисплеях

19.03.2012, 20:47. Просмотров 1255. Ответов 6
Метки нет (Все метки)

Всем доброго времени суток. Столкнулся с такой проблемой, сделал программу на 13 дюймовом дисплее, решил по смотреть как будет выглядеть на 17 и 19 дисплеях, там меня все компоненты разлетелись, форма стала больше положенной, stringgrid наоборот стал меньше.
Как можно сделать, чтобы программа одинаково отображалась на всех экранах?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
19.03.2012, 20:47
Ответы с готовыми решениями:

Отображение формы при запуске программы
При запуске программы отображалась главная форма. теперь стала по верх неё...

Неправильное отображение программы в панели задач
Программа нормально запускает главную форму, но если навести курсор на значок в...

Отображение содержания файла после закрутия программы
Здравствуйте! Не удаётся найти дефект в своей программе: в форму вводятся...

Отображение списка текстовых файлов внутри программы
Всем привет. Нужна помощь. В делфи не силен (полный 0). Хочу сделать программу...

Отображение GridView на разных дисплеях
Как в Windows Store приложении сделать так, чтобы содержимое GridView нормально...

6
SkyDream
32 / 26 / 11
Регистрация: 01.03.2012
Сообщений: 98
19.03.2012, 20:53 2
Разлетелось все потому, что изменилось расширение экрана. Чтобы все отображалось одинаково на всех экранах надо настраивать компоненты при создании формы под текущее расширение экрана (т.е. отлавливаешь текущее положение экрана и выводишь компоненты по заранее известным координатам и размерам). Так же поиграйся со свойством визуальных компонент "Anchors".

ЗЫ чтобы узнать текущее расширение экрана:
Delphi
1
2
Screen.Width;
Screen.Height;
Поменять расширение:
Delphi
1
2
3
4
5
6
7
8
9
10
11
procedure ChangeDisplayResolution(x, y: word);
var
  dm: TDEVMODE;
begin
  ZeroMemory(@dm, sizeof(TDEVMODE));
  dm.dmSize := sizeof(TDEVMODE);
  dm.dmPelsWidth := x;
  dm.dmPelsHeight := y;
  dm.dmFields := DM_PELSWIDTH or DM_PELSHEIGHT;
  ChangeDisplaySettings(dm, 0);
end;
ЗЫЫ т.е. не обязательно подстраивать программу к каждому расширению, можно просто изменять при запуске программы расширение (но сразу скажу, это очень плохой тон и лучше так не делай).
0
Azam693
0 / 0 / 0
Регистрация: 17.03.2012
Сообщений: 13
19.03.2012, 20:59  [ТС] 3
Спасибо
0
Psilon
Master of Orion
Эксперт .NET
6000 / 4850 / 902
Регистрация: 10.07.2011
Сообщений: 14,460
Записей в блоге: 5
Завершенные тесты: 4
19.03.2012, 21:23 4
SkyDream,
во-первых не путайте расширение с разрешением
Azam693,
Во-вторых просто можно тупо запретить ресайз формы: или сделать autosize=true или в Constraints выставить значения maxHeight, maxWidth в пикселях, тогда на любом мониторе он не будет растягиваться.
1
SkyDream
32 / 26 / 11
Регистрация: 01.03.2012
Сообщений: 98
19.03.2012, 22:08 5
Цитата Сообщение от Psilon Посмотреть сообщение
SkyDream,
во-первых не путайте расширение с разрешением
Ну думаю все меня поняли
Спасибо за поправку
Цитата Сообщение от Psilon Посмотреть сообщение
Во-вторых просто можно тупо запретить ресайз формы: или сделать autosize=true или в Constraints выставить значения maxHeight, maxWidth в пикселях, тогда на любом мониторе он не будет растягиваться.
В этом случае (если ориентироваться на маленький экран (например, 10'), то при переходе на 19' все компоненты не растанутся, но они будут очень маленькими, поэтому это не лучший вариант.
0
Psilon
Master of Orion
Эксперт .NET
6000 / 4850 / 902
Регистрация: 10.07.2011
Сообщений: 14,460
Записей в блоге: 5
Завершенные тесты: 4
19.03.2012, 22:11 6
SkyDream, зато
Цитата Сообщение от Azam693 Посмотреть сообщение
сделать, чтобы программа одинаково отображалась на всех экранах?
В пикселях точнее не бывает К тому же не думаю, что разница будет более чем в 30%, а это не так уж заметно, и геморроя 0
0
SkyDream
32 / 26 / 11
Регистрация: 01.03.2012
Сообщений: 98
19.03.2012, 22:35 7
Psilon, ну как-бы, разница будет далеко не 30% (если рассматривать экраны в 10' и 19').
0
19.03.2012, 22:35
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
19.03.2012, 22:35

Одинаковое отображение
Есть сайт http://смоленскломбард.рф/, в разных браузерах шрифты почему то по...

Одинаковое отображение сайта
В основном занимаюсь разработкой программной части бэкенда, но иногда...

Не одинаковое поведение БД на разных локальных серверах
Приветствую. Собственно мои условия: проект разрабатываю на php, код хранится...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru