Проблема с разрешением программы
Модераторы: Duncon, Naeel Maqsudov, Игорь Акопян, Хыиуду
Помогите пожалуйста.
Я создал приложение на весь экран. Разрешение моего экрана 1280 на 1024. Когда эту программу запустил мой друг на своем компьютере с разрешением 640 на 480 то была видна только часть программы а остальная была скрыта так как она была очень большая. Как можно сделать так чтобы моя программа изменяла свой размер в зависимости от включенного разрешения экрана.
Я создал приложение на весь экран. Разрешение моего экрана 1280 на 1024. Когда эту программу запустил мой друг на своем компьютере с разрешением 640 на 480 то была видна только часть программы а остальная была скрыта так как она была очень большая. Как можно сделать так чтобы моя программа изменяла свой размер в зависимости от включенного разрешения экрана.
Если проблема в элементах управления, достаточно в начале работы программы написать:
Если же программа графическая, тут уже надо лезть в сам алгоритм
Код: Выделить всё
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;
Искусство программирования - заставить компьютер делать все то, что вам делать лень.
Для "спасибо" есть кнопка "Спасибо" в виде звездочки внизу под ником автора поста.
Для "спасибо" есть кнопка "Спасибо" в виде звездочки внизу под ником автора поста.
Зачем так напрягаться - проще поставить у формы выраннивание AllClient
[syntax=Delphi] [/syntax]
Duncon, а мы не ищем легких путей! 

Искусство программирования - заставить компьютер делать все то, что вам делать лень.
Для "спасибо" есть кнопка "Спасибо" в виде звездочки внизу под ником автора поста.
Для "спасибо" есть кнопка "Спасибо" в виде звездочки внизу под ником автора поста.
Ну-ну
[syntax=Delphi] [/syntax]
-
- Сообщения: 273
- Зарегистрирован: 30 июн 2005, 14:53
извращенцы
- Чем юзер похож на обезьяну?
- Он жмет на все, что жмется, дергает все, что дергается и крутит все, что крутится.
- Чем юзер отличается от обезьяны?
- У обезьяны хватает ума не воспроизводить ту последовательность, которая приводит к краху системы.
- Он жмет на все, что жмется, дергает все, что дергается и крутит все, что крутится.
- Чем юзер отличается от обезьяны?
- У обезьяны хватает ума не воспроизводить ту последовательность, которая приводит к краху системы.
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 покажет урезанную снизу строку. Каждый компонент лучше сделать на несколько точек больше.
вот из 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 покажет урезанную снизу строку. Каждый компонент лучше сделать на несколько точек больше.
- Игорь Акопян
- Сообщения: 1440
- Зарегистрирован: 13 окт 2004, 17:11
- Откуда: СПБ
- Контактная информация:
Имхо... Я обычно програмлю ограничив размер формы до 800*600...
Как вариант для извращений, можно первым контролом на форму положить ScrollBox
Как вариант для извращений, можно первым контролом на форму положить ScrollBox

