Форум программистов, компьютерный форум, киберфорум
C++ Builder
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.86/37: Рейтинг темы: голосов - 37, средняя оценка - 4.86
 Аватар для SecretSilent
81 / 81 / 9
Регистрация: 16.02.2010
Сообщений: 637

Одинаковый размер форм на разных экранах

17.02.2012, 13:54. Показов 7432. Ответов 4
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Как сделать так, чтобы форма имела фиксированные высоту и ширину на разного размера диагоналей экранах?
1
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
17.02.2012, 13:54
Ответы с готовыми решениями:

Как обеспечить одинаковый размер картинки на разных экранах Android?
Как?

Размер картинки на разных экранах
Добрый день. Не понимаю как сделать. Есть ImageView, например, максимальная ее высота 300dp и ширина на весь экран. Каким размером должна...

Одинаковый код для разных форм и контролов. MVVM
Есть у меня одна модель и 2 формы. В формах содержится 4 usercontrol в которых понакидано несколько обычных контролов (комбобоксы там...

4
Диссидент
Эксперт C
 Аватар для Байт
27714 / 17332 / 3810
Регистрация: 24.12.2010
Сообщений: 38,978
17.02.2012, 14:12
Свойство Scaled поставь в false. Или наоборот. В общем с этим свойством надо поиграться
1
Модератор
 Аватар для vxg
3407 / 2178 / 354
Регистрация: 13.01.2012
Сообщений: 8,448
17.02.2012, 14:21
она и так имеет фиксированный размер. имеется ввиду что бы визуально / физически она была одинакового размера? брать свойства экрана (точек на дюйм) и пересчитывать размер формы. шрифты правда так не удастся смасштабировать
1
 Аватар для BRcr
4043 / 2333 / 292
Регистрация: 03.02.2011
Сообщений: 5,066
Записей в блоге: 10
18.02.2012, 14:03
Визуально одинаковый размер формы относительно размеров экрана на различных экранах? Элементарно:
C++
1
2
3
4
void __fastcall Form::FormShow(TObject *Sender) {
   Width = Screen->Width / 3;
   Height = Screen->Height / 2;
}
Правда, таким образом на экранах с разным соотношением сторон мы получим визуально растянутую/сжатую форму. Чтобы этого избежать, можно сохранять пропорции формы и смотреть только на, скажем, высоту экрана:
C++
1
2
3
4
void __fastcall Form::FormShow(TObject *Sender) {
   Height = Screen->Height / 2;
   Width = Height * 1.5;
}
2
 Аватар для cpp_developer
20124 / 5691 / 417
Регистрация: 09.04.2010
Сообщений: 22,546
Записей в блоге: 1
18.02.2012, 15:09
Приложение, которое будет работать при различном разрешении дисплея
На ранней стадии создания приложения решите для себя хотите ли вы позволить форме масштабироваться. Преимущество немасштабируемой формы в том, что ничего не меняется во время выполнения. В этом же заключается и недостаток (ваша форма может бать слишком маленькой или слишком большой в некоторых случаях).
Если вы не собираетесь делать форму масштабируемой, установите свойство Scaled=False и дальше не читайте.
В противном случае Scaled=True .
Установите AutoScroll=False . AutoScroll = True означает 'не менять размер окна формы при выполнении' что не очень хорошо выглядит, когда содержимое формы размер меняет.
Установите шрифты в форме на самые распространенные TrueType шрифты, например Arial, Times New Roman, Courier. Если вдруг выбранного шрифта не окажется на пользовательском компьютере, то 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 покажет урезанную снизу строку. Каждый компонент лучше сделать на несколько точек больше.
Даже при выполнении перечисленных инструкций, у вас могут возникнуть проблемы при переходе, например от Large fonts к Small fonts в Windows при одном и том же разрешении. Бороться с этим помогают специально для этого разработанные компоненты. Если же вы решите самостоятельно изменять размеры компонентов, лежащих на форме, то вам могут помочь методы TCanvas.TextWidth и TCanvas.TextHeight .
Как написать приложение, адекватно отображающееся на экранах с различным разрешением монитора
да... делфий... такова жизнь
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
unit Main;
interface
uses
  Windows, Messages, SysUtils, Classes, Graphics,
  Controls, Forms, Dialogs, StdCtrls;
 
type
  TForm1 = class(TForm)
    Button1: TButton;
    Edit1: TEdit;
    procedure Button1Click(Sender: TObject);
    procedure FormCreate(Sender: TObject);
  private
    { Private declarations }
    {Отлавливаем, сообщение о изменении разрешения экрана}
    procedure WMDisplayChange(var message: TMessage); message WM_DISPLAYCHANGE;
  public
    { Public declarations }
    W, H: integer;
  end;
 
var
  Form1: TForm1;
 
implementation
 
{$R *.DFM}
 
procedure TForm1.Button1Click(Sender: TObject);
begin
  Width := Round(Width * 1.5);
  Height := Round(Height * 1.5);
  ScaleBy(150, 100)
end;
 
procedure TForm1.WMDisplayChange(var message: TMessage);
begin
  inherited;
  Width := Round(Width * LOWORD(message.LParam) / W);
  Height := Round(Height * HIWORD(message.LParam) / H);
  ScaleBy(LOWORD(message.LParam), W);
  W := Screen.Width;
  H := Screen.Height;
end;
 
procedure TForm1.FormCreate(Sender: TObject);
begin
  W := Screen.Width;
  H := Screen.Height;
end;
 
end.
2
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
18.02.2012, 15:09
Помогаю со студенческими работами здесь

Одинаковый ли размер стека у разных версиях/девайсах Android?
Столкнулся с проблеммой stack overflow... пришлось резать файлы на куски. Но все ровно в каждой части подхожу до предела стека. Тестирую на...

Отображение в браузерах и на разных экранах
Есть сайт сверстан мной - https://piratelifepf.000webhostapp.com/, только вот на разных экранах он отображается по-разном, особенно футер и...

Координаты курсора на разных экранах
Фон развернут на весь экран, соответственно на разных экранах будут разные координаты. Мне нужно сделать кликабельным только...

Лейбл с радиокнопками на разных экранах
Добрый вечер. Есть маленькая проблема с версткой. Для описания проблемы взял простой пример. Есть лейбл и три радиокнопки: <html> ...

Проблема с отображением скрипта на разных экранах
Столкнулся с проблемой на своем сайте. При просмотре с экрана 1280х960 скрипт отображается как надо - РИСУНОК №1 При просмотре с...


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

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Новые блоги и статьи
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
SDL3 для Web (WebAssembly): Установка Emscripten SDK (emsdk) и CMake для сборки C и C++ приложений в Wasm
8Observer8 30.01.2026
Содержание блога Для того чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. . . .
SDL3 для Android: Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
SDL3 для Android: Загрузка PNG с альфа-каналом с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
SDL3 для Android: Загрузка PNG с альфа-каналом с помощью SDL3_image
8Observer8 27.01.2026
Содержание блога SDL3_image - это библиотека для загрузки и работы с изображениями. Эта пошаговая инструкция покажет, как загрузить и вывести на экран смартфона картинку с альфа-каналом, то есть с. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru