Страница 1 из 1

Проблема с разрешением программы

Добавлено: 11 ноя 2005, 22:42
scorpi.on
Помогите пожалуйста.
Я создал приложение на весь экран. Разрешение моего экрана 1280 на 1024. Когда эту программу запустил мой друг на своем компьютере с разрешением 640 на 480 то была видна только часть программы а остальная была скрыта так как она была очень большая. Как можно сделать так чтобы моя программа изменяла свой размер в зависимости от включенного разрешения экрана.

Добавлено: 12 ноя 2005, 00:03
Хыиуду
Если проблема в элементах управления, достаточно в начале работы программы написать:

Код: Выделить всё

if Form1.Width>Screen.Width then
  for i:=0 to componentcount-1 do
    begin
      if components[i] is TEdit then with components[i] as TEdit do
           begin
           width:=round(Screen.Width*width/Form1.width);
           Height:=round(Screen.Height*Height/Form1.Height);
           top:=round(Screen.Width*top/Form1.width);
           left:=round(Screen.Width*left/Form1.width);
           end;
       {Этот кусок - if... then... begin end - повторить для всех элементов управления, имеющихся на форме, меняя TEDit на TLabel, TMemo, TButton и т.д.}
    end;
Если же программа графическая, тут уже надо лезть в сам алгоритм

Добавлено: 12 ноя 2005, 12:21
Duncon
Зачем так напрягаться - проще поставить у формы выраннивание AllClient

Добавлено: 12 ноя 2005, 14:26
Хыиуду
Duncon, а мы не ищем легких путей! ;)

Добавлено: 13 ноя 2005, 11:03
Duncon
Ну-ну

Добавлено: 13 ноя 2005, 14:21
Blood_Magic
извращенцы

Добавлено: 14 ноя 2005, 02:56
YurikGL
http://forums.realcoding.net/index.php?showtopic=11055

вот из BlackManFAQ:

Что нужно предусмотреть при разработке приложения, которое будет работать при различном разрешении дисплея?

04 апр 2002 (четверг), 10:33:44

* а ранней стадии создания приложения решите для себя хотите ли вы позволить форме масштабироваться.
Преимущество немасштабируемой формы в том, что ничего не меняется во время выполнения.
В этом же заключается и недостаток (ваша форма может быть
слишком маленькой или слишком большой в некоторых случаях).
* Если вы Е собираетесь делать форму масштабируемой, установите св-во Scaled=False и дальше не читайте.
* В противном случае Scaled=True.
* Установите AutoScroll=False. AutoScroll = True означает не менять размер окна формы
при выполнении что не очень хорошо выглядит, когда содержимое формы размер меняет.
* Установите фонты в форме на TrueType фонты, например Arial.
!!!!: Если такого фонта не окажется на пользовательском компьютере, то Windows выберет
альтернативный фонт из того же семейства. Этот фонт может не совпадать по размеру, что вызовет проблемы.
* Установите св-во Position в любое значение, отличное от poDesigned.
poDesigned оставляет форму там, где она была во время дизайна, и, например,
при разрешении 1280x1024 форма окажется в левом верхнем углу и совершенно за экраном при 640x480.
* Оставляйте по-крайней мере 4 точки между компонентами, чтобы при смене
положения границы на одну позицию компоненты не " наезжали" друг на друга.
* Для однострочных меток (TLabel) с выравниванием alLeft или alRight
установите AutoSize=True. Иначе AutoSize=False.
* Убедитесь, что достаточно пустого места у TLabel для изменения
ширины фонта - 25% пустого места многовато, зато безопасно.
При AutoSize=False Убедитесь, что ширина метки правильная,
при AutoSize=True убедитесь, что есть ссвободное место для роста метки.
* Для многострочных меток (word-wrapped labels), оставьте хотя бы одну пустую строку снизу.
* Будьте осторожны при открытии проекта в среде Delphi
при разных разрешениях. Свойство PixelsPerInch меняется
при открытии формы. Лучше тестировать приложения при разных разрешениях,
запуская готовый скомпилированный проект, а редактировать его при одном разрешении.
Иначе это вызовет проблемы с размерами.
* Не изменяйте свойство PixelsPerInch !
* В общем, нет необходимости тестировать приложение для каждого разрешения в отдельности,
но стоит проверить его на 640x480 с маленькими и большими фонтами и на более высоком разрешении перед продажей.
* Уделите пристальное внимание принципиально однострочным компонентам типа TDBLookupCombo.
Многострочные компоненты всегда показывают только целые строки,
а TEdit покажет урезанную снизу строку. Каждый компонент лучше сделать на несколько точек больше.

Добавлено: 14 ноя 2005, 10:29
Игорь Акопян
Имхо... Я обычно програмлю ограничив размер формы до 800*600...
Как вариант для извращений, можно первым контролом на форму положить ScrollBox ;)