Форум программистов, компьютерный форум, киберфорум
C++ Builder
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.55/58: Рейтинг темы: голосов - 58, средняя оценка - 4.55
2 / 2 / 0
Регистрация: 09.01.2013
Сообщений: 134

Масштабирования формы

08.02.2013, 12:43. Показов 11855. Ответов 12
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте!
Как сделать чтоб программа на любом компьютере запускалась с нормальными размерами кнопок лейблов...Тоисть чтоб все объект масштабировались под любое расширения экрана. Как это сделать?
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
08.02.2013, 12:43
Ответы с готовыми решениями:

Масштабирования изображения при наведении на него курсора
Народ помогите!!! Создать компонент - потомок TImage, который проводит масштабирования относительно размеров компонента при наведении...

Прозрачность формы, при наведении мыши на кнопку реализовать изменение её положения относительно формы с невозможностью выхода за границы формы
доброй ночи, уважаемые программисты, студенты,а также любители программировать. помогите, пожалуйста, написать программу на языке С++ ...

Масштабирования формы
Сломалось масштабирование формы (как я полагаю), даже при растягивании формы, отображаются лишь несколько её элементов, которые изменяют...

12
 Аватар для Mr.Sandman
42 / 59 / 15
Регистрация: 19.12.2011
Сообщений: 552
08.02.2013, 12:48
Ну масштабирование формы решается так:

C++
1
2
    Form2->Width = Screen->Width;
    Form2->Height = Screen->Height;
Добавлено через 1 минуту
Best777, а кнопки и т.п. можно с помощью Align. (Знаю, не масштаб, может поможет чем то)
0
2 / 2 / 0
Регистрация: 09.01.2013
Сообщений: 134
08.02.2013, 15:17  [ТС]
Еще варианты?
0
 Аватар для BRcr
4043 / 2333 / 292
Регистрация: 03.02.2011
Сообщений: 5,066
Записей в блоге: 10
08.02.2013, 17:34
Еще вариант - ручками.
Размеры каждого контрола, шрифта, а также их взаимное расположение задаются ручками через определенный коэффициент по отношению к размерам экрана. Не совсем визуальное программирование...
0
2 / 2 / 0
Регистрация: 09.01.2013
Сообщений: 134
09.02.2013, 00:22  [ТС]
Скажите пожалуйста, как такие программы Microsoft Word, Excel...красиво выглядят в плане вида форм на любом расширении экрана!!! как это достигнуто??
0
 Аватар для cpp_developer
20124 / 5691 / 417
Регистрация: 09.04.2010
Сообщений: 22,546
Записей в блоге: 1
09.02.2013, 00:48
поищите для начала по форуму, я точно выкладывал вариант возможного решения, ссылку на тему не помню, к сожалению
0
2 / 2 / 0
Регистрация: 09.01.2013
Сообщений: 134
09.02.2013, 01:20  [ТС]
блин...
А по какому ключевому слову можно найти шото толковое...??? Подскажите.

Добавлено через 27 минут
LK, ето имели ввиду?
Одинаковый размер форм на разных экранах
0
 Аватар для cpp_developer
20124 / 5691 / 417
Регистрация: 09.04.2010
Сообщений: 22,546
Записей в блоге: 1
09.02.2013, 01:30
по слову "масштабирование формы в зависимости от разрешения"
В ранней стадии создания приложения решите для себя хотите ли вы позволить форме масштабироваться. Преимущество немасштабируемой формы в том, что ничего не меняется во время выполнения. В этом же заключается и недостаток (ваша форма может бать слишком маленькой или слишком большой в некоторых случаях).
Если вы не собираетесь делать форму масштабируемой, установите свойство Scaled=False и дальше не читайте. В противном случае Scaled=True.
Установите AutoScroll=False. AutoScroll = True означает не менять размер окна формы при выполнении что не очень хорошо выглядит, когда содержимое формы меняет размер.
Установите шрифты формы на TrueType, например Arial. Если такого шрифта не окажется на пользовательском компьютере, то Windows выберет альтернативный шрифт из того же семейства. Этот шрифт может не совпадать по размеру, что вызовет проблемы.
Установите свойство Position в любое значение, отличное от poDesigned. poDesigned оставляет форму там, где она была во время дизайна, и, например, при разрешении 1280x1024 форма окажется в левом верхнем углу и совершенно за экраном при 800x600.
Оставляйте по-крайней мере 4 точки между компонентами, чтобы при смене положения границы на одну позицию компоненты не "наезжали" друг на друга. Для однострочных меток (TLabel) с выравниванием alLeft или alRight установите AutoSize=True. Иначе AutoSize=False.
Убедитесь, что достаточно пустого места у TLabel для изменения ширины шрифта - 25% пустого места многовато, зато безопасно. При AutoSize=False убедитесь, что ширина метки правильная, при AutoSize=True убедитесь, что есть ссвободное место для роста метки.
Для многострочных меток (word-wrapped labels), оставьте хотя бы одну пустую строку снизу.
Будьте осторожны при открытии проекта в среде Delphi при разных разрешениях. Свойство PixelsPerInch меняется при открытии формы. Лучше тестировать приложения при разных разрешениях, запуская готовый скомпилированный проект, а редактировать его при одном разрешении. Иначе это вызовет проблемы с размерами.
Не изменяйте свойство PixelsPerInch!
В общем, нет необходимости тестировать приложение для каждого разрешения в отдельности, но стоит проверить его на 800x600 с маленькими и большими шрифтами и на более высоком разрешении перед продажей.
Уделите пристальное внимание принципиально однострочным компонентам типа TDBLookupCombo. Многострочные компоненты всегда показывают только целые строки, а TEdit покажет урезанную снизу строку. Каждый компонент лучше сделать на несколько точек больше.
1. У многих компонентов (TMemo, TRichEdit, TPanel) есть свойство Align. Используя Align = alClient можно добится этого.

2. Anchors

Align - управляет параметрами той области, что будет заполнять компонент, а Anchors - управляет привязкой краев дочернего компонента к краям родительского.
Масштабирование окон
0
2 / 2 / 0
Регистрация: 09.01.2013
Сообщений: 134
09.02.2013, 01:31  [ТС]
а на билдере может уже есть такой пример?
0
 Аватар для cpp_developer
20124 / 5691 / 417
Регистрация: 09.04.2010
Сообщений: 22,546
Записей в блоге: 1
09.02.2013, 01:51
да, и это тоже

Добавлено через 15 минут
Работа программы при разном разрешении монитора

При переносе программ с системы на систему обычно возникает множество проблем. Одна из наиболее заметных - изменение разрешения экрана. Если программа создавалась при одном разрешении, а исполняется при другом, то размер ее окна, букв, кнопок и т.п. будет неправильный. Этого можно частично избежать, вставив следующий код в событие OnCreate необходимой формы:

C++
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
void __fastcall TForm1::FormCreate(TObject *Sender)
    {
    //эта структура будет содержать разрешение экрана на системе
    struct res{float x,y;}res;
    /*здесь будет хранится коэфицент, показывающий во сколько раз
    текущее разрешение больше исходного*/
    struct factor{float x,y;}factor;
    //считать текущее разрешение
    res.x=Screen->Width;
    res.y=Screen->Height;
    //вычислить коэфицент. Если программа пишется при другом разрешении,
    //то нужно только подставить его вместо 1024 и 768
    factor.x=1024/res.x;
    factor.y=768/res.y;
    int cc=ControlCount-1; //количество объектов на форме
    while(cc!=-1) //для каждого объекта выполняем следующие операции
    {
    Controls[cc]->Left/=factor.x; //правильно располагаем по горизонтали
    Controls[cc]->Top/=factor.y; //…по вертикали
    Controls[cc]->Width/=factor.x; //растягиваем до нужной ширины
    Controls[cc]->Height/=factor.y; //…высоты
    cc--;
    }
    //теперь растягиваем саму форму
    Form1->Width/=factor.x;
    Form1->Height/=factor.y;
    //изменяем размер шрифтов; не забудьте поставить свойство формы Scaled=true
    Form1->PixelsPerInch=Screen->PixelsPerInch;
    }
    //Все структуры здесь используются для понятности, в реальном коде их выгоднее заменить на вектора.
Добавлено через 5 минут
Цитата Сообщение от Best777 Посмотреть сообщение
а на билдере может уже есть такой пример?
поискать в разделе или почитать в другом месте про TMessage и MESSAGE MAP, потом только менять := на =, и . на ->.

Может пригодится:
Получаем и устанавливаем различные режимы видео адаптера
2
2 / 2 / 0
Регистрация: 09.01.2013
Сообщений: 134
11.02.2013, 16:08  [ТС]
LK, скопировал Ваш код в FormCreate. Вид поменялса, но елементы вылазят друг на друга! В чем може быть причина?
0
 Аватар для cpp_developer
20124 / 5691 / 417
Регистрация: 09.04.2010
Сообщений: 22,546
Записей в блоге: 1
11.02.2013, 16:59
2. Anchors
Цитата Сообщение от LK Посмотреть сообщение
- управляет привязкой краев дочернего компонента к краям родительского.
0
2 / 2 / 0
Регистрация: 09.01.2013
Сообщений: 134
11.02.2013, 17:19  [ТС]
я это пропиcывал!
у меня есть два большых GroupBox.
Тот что слева прописал в свойство Anchors:
C++
1
[akLeft,akTop]
тот что справа:
C++
1
[akTop,akRight]
правый налазит на левый!! почему?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
11.02.2013, 17:19
Помогаю со студенческими работами здесь

Отмена масштабирования
Всем привет Есть такая проблема: есть картинка и лежит она в drawable. Если запускать программу, то Android "подгоняет"...

Масштабирования фигуры.
Вообщем дали задание розработать прогу которая выводить на экран фигуру, через подпрограммы в которых должны максимально использоваться...

Формула масштабирования
Добрый вечер! Столкнулась с такой проблемой: нужно знать, как масштабировалась картинка, какие имеет размеры, но не получается их...

Запрет масштабирования
Как запретить масштабирования окна? Или как запретить изменять размеры окна? А то в итоге получается расширяешь окно и в поле зрение...

Отмена масштабирования
Здравствуйте, создаю мувиклип и делаю программно ширину 100 (рисунок 1)-получается что оно как бы сжимает картинку, КАК добиться...


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

Или воспользуйтесь поиском по форуму:
13
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
Философия технологии
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(), которая. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru