Модераторы: Poseidon, Snowy, bems, MetalFan
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Масштабирование компонентов в полноэкранном режиме 
:(
    Опции темы
Freeman94
Дата 17.6.2013, 14:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 3
Регистрация: 17.6.2013

Репутация: нет
Всего: нет



Доброго времени суток уважаемые форумчане! В программировании недавно, но при всём при этом я разработал программку в Delphi 2009 на своем компьютере под разрешением экрана 1366х768. В программе использовал следующие компоненты: Panel, Image, Label, ScrollBox, DBGrid и т.д. При запуске, программа автоматически раскрывается на полный экран(WindowState=wsMaximized, BorderStyle=None). У меня на компе все работает(отображается) нормально, а на нетбуке с разрешением экрана 1024x600 некоторые компоненты не влазают на экран. Хотелось бы иметь в своем арсенале универсальную программу, которая бы нормально отображалась в любом разрешении экрана. Прогуглив инет, я пришел к такому выводу, что лучше всего использовать свойства компонентов Align + AlignWithMargins + Margins. Теперь собственно и вопрос: Каким образом мне расчитать новые координаты расположений компонентов Left, Right, Top, Bottom свойства Margins, если разрешение экрана будет отличное от 1366х768. Если есть какая нибудь формула расчета, то пожалуйста поделитесь ею! или же помогите её составить. Заранее спасибо!
PM MAIL   Вверх
Akella
Дата 17.6.2013, 15:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Творец
****


Профиль
Группа: Модератор
Сообщений: 18485
Регистрация: 14.5.2003
Где: Корусант

Репутация: 36
Всего: 329



Используй align + anchors.
У всех визуальных компонент есть эти свойства.
PM MAIL   Вверх
northener
Дата 17.6.2013, 16:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1361
Регистрация: 2.9.2010

Репутация: 8
Всего: 20



Цитата(Freeman94 @  17.6.2013,  14:07 Найти цитируемый пост)
Хотелось бы иметь в своем арсенале универсальную программу, которая бы нормально отображалась в любом разрешении экрана.

Это фантастика, причем ненаучная.

Цитата(Freeman94 @  17.6.2013,  14:07 Найти цитируемый пост)
 на нетбуке с разрешением экрана 1024x600 некоторые компоненты не влазают на экран.

Нужно заранее решить какие минимальные высота и ширина допустимы для более-менее нормального вида окна программы. И уже от этого плясать.


--------------------
Но только лошади летают вдохновенно.
Иначе лошади разбились бы мгновенно!
PM MAIL   Вверх
Akella
Дата 17.6.2013, 16:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Творец
****


Профиль
Группа: Модератор
Сообщений: 18485
Регистрация: 14.5.2003
Где: Корусант

Репутация: 36
Всего: 329



Цитата(northener @  17.6.2013,  16:13 Найти цитируемый пост)
Цитата(Freeman94 @  17.6.2013,  14:07 Найти цитируемый пост)
Хотелось бы иметь в своем арсенале универсальную программу, которая бы нормально отображалась в любом разрешении экрана.

Это фантастика, причем ненаучная.


Не всегда. Посмотри VCL dxLayoutControl.
PM MAIL   Вверх
Freeman94
Дата 17.6.2013, 21:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 3
Регистрация: 17.6.2013

Репутация: нет
Всего: нет



Цитата(Akella @ 17.6.2013,  15:55)
Используй align + anchors.
У всех визуальных компонент есть эти свойства.

Во вложенных файлах есть рисунок. Там, где белое - это распаложение панелей. Ширина рисунока = 1366 пикселей, высота = 768 пикселей. Как я буду использовать свойства align=alclient,allfet,alright,altop,albotom для панелей, если у меня панели располагаются по следующим координатам: Left=224 пикселей, Top = 110 пикселей, Width = 916 пикселей, Height = 369 пикселей. На самих панелях присутствуют компоненты. Для основного Имейджа(в прикрепленных файлах) поставил свойство Align=alClient, Stretch=true. С основным имейджом проблем нет, хоть какое бы разрешение не ставил, он автоматически подгоняется под разрешение экрана, а вот с панелями и другими компонентами куча проблем.

Присоединённый файл ( Кол-во скачиваний: 14 )
Присоединённый файл  1.jpg 95,13 Kb
PM MAIL   Вверх
northener
Дата 18.6.2013, 00:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1361
Регистрация: 2.9.2010

Репутация: 8
Всего: 20



Цитата(Akella @  17.6.2013,  16:37 Найти цитируемый пост)
Не всегда. Посмотри VCL dxLayoutControl. 

Так это ж надо DevExpress качать и ставить. А если понравится, так ещё и покупать. smile 
Да и не уверен я, что мороки с универсальным дизайном под все разрешения плюс под все DPI не будет.



--------------------
Но только лошади летают вдохновенно.
Иначе лошади разбились бы мгновенно!
PM MAIL   Вверх
ZBugz
Дата 18.6.2013, 06:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 636
Регистрация: 15.2.2006
Где: Москва

Репутация: 6
Всего: 6



А я всегда в основнойм align тока юзаю. Теже label ставлю в панели, скрываю бордеры, ну и  выравниваю как надо. Геморно конечно на этапе проектирования, зато на 800 на 600 даже работает smile
PM MAIL   Вверх
Akella
Дата 18.6.2013, 13:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Творец
****


Профиль
Группа: Модератор
Сообщений: 18485
Регистрация: 14.5.2003
Где: Корусант

Репутация: 36
Всего: 329



Цитата(Freeman94 @  17.6.2013,  21:13 Найти цитируемый пост)
Как я буду использовать свойства align=alclient,allfet,alright,altop,albotom для панелей, если у меня панели располагаются по следующим координатам: Left=224 пикселей, Top = 110 пикселей, Width = 916 пикселей, Height = 369 пикселей.


Ну ты уж определись с тем, что тебе нужно. Фиксированный размер или резиновый дизайн?
PM MAIL   Вверх
Freeman94
Дата 18.6.2013, 15:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 3
Регистрация: 17.6.2013

Репутация: нет
Всего: нет



Цитата(Akella @ 18.6.2013,  13:31)
Цитата(Freeman94 @  17.6.2013,  21:13 Найти цитируемый пост)
Как я буду использовать свойства align=alclient,allfet,alright,altop,albotom для панелей, если у меня панели располагаются по следующим координатам: Left=224 пикселей, Top = 110 пикселей, Width = 916 пикселей, Height = 369 пикселей.


Ну ты уж определись с тем, что тебе нужно. Фиксированный размер или резиновый дизайн?

Резиновый дизайн мне нужен, чтобы при любых разрешениях программа нормально отображалась, чтобы компоненты вмещались на форму при любых разрешениях экрана
PM MAIL   Вверх
Illusion Dolphin
Дата 18.6.2013, 15:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1198
Регистрация: 3.5.2003

Репутация: 36
Всего: 63



Цитата

чтобы компоненты вмещались на форму при любых разрешениях экрана 

240x320 тоже? Задача общего решения не имеет, как сказал northener. Есть несколько путей, один включает в себя определение минимального размера формы, а дальше align + anchors. НО, когда разрешение становится низким, то прибегают к такому понятию как адаптивность (в вэб по крайне мере), в таком случае при уменьшении размера меняется ДИЗАЙН приложения, т.к. если там очень много контролов видно, это становится неудобно. Тут уже на помощь выпадающие меню (не popupmenu) и подобные вещи могут помочь.

Добавлено через 56 секунд
Да, и зачастую этот процесс упрощается при использовании сторонних контролов.


--------------------
В мире всего две бесконечности: вселенная и человеческая глупость... На счёт вселенной я не уверен.
Шифрование и организация фотографий - Photo Database 4.5
PM MAIL WWW ICQ   Вверх
northener
Дата 18.6.2013, 15:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1361
Регистрация: 2.9.2010

Репутация: 8
Всего: 20



Цитата(Freeman94 @  18.6.2013,  15:16 Найти цитируемый пост)
Резиновый дизайн мне нужен, чтобы при любых разрешениях программа нормально отображалась, чтобы компоненты вмещались на форму при любых разрешениях экрана 

Готового стандартного инструмента для таких действий в Дельфи нет. Есть только его отдельные составляющие (Anchors, Alignes, Margins etc.) Так что придётся изрядно потрудиться чтобы сей универсальный инструмент сделать. Советую всё же упростить задачу, т.е. сделать дизайн формы при стандартном для нетбуков разрешении (1024x600), а при этом подумать какие контролы и как должно будут увеличиться при увеличении разрешения экрана. Так чтобы форма не казалась пустой, а многострочные контролы (если таковые есть) занимали максимально больше места.

P.S. Сам так делал ибо наши спецы из техотдела предпочитают ездить на объекты с нетбуками.

P.P.S. При разработке дизайна программы надо помнить не только о разрешении экрана, но и о установленном в системе DPI. 


--------------------
Но только лошади летают вдохновенно.
Иначе лошади разбились бы мгновенно!
PM MAIL   Вверх
Akella
Дата 18.6.2013, 16:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Творец
****


Профиль
Группа: Модератор
Сообщений: 18485
Регистрация: 14.5.2003
Где: Корусант

Репутация: 36
Всего: 329



Цитата(Freeman94 @ 18.6.2013,  15:16)
Цитата(Akella @ 18.6.2013,  13:31)
Цитата(Freeman94 @  17.6.2013,  21:13 Найти цитируемый пост)
Как я буду использовать свойства align=alclient,allfet,alright,altop,albotom для панелей, если у меня панели располагаются по следующим координатам: Left=224 пикселей, Top = 110 пикселей, Width = 916 пикселей, Height = 369 пикселей.


Ну ты уж определись с тем, что тебе нужно. Фиксированный размер или резиновый дизайн?

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

При любых? И при 128*128?

Добавлено через 42 секунды
И что такое нормально?
Я считаю, что ненормально когда строка ввода на всю ширину экрана слева на право растянута %)

Добавлено через 4 минуты и 39 секунд
Цитата(Freeman94 @  17.6.2013,  14:07 Найти цитируемый пост)
 В программе использовал следующие компоненты: Panel, Image, Label, ScrollBox, DBGrid


Нужно подумать над тем, какие элементы того списка компонент должны растягиваться, а какие нет. ScrollBox может вообще выкинуть?
Например, панель. Для чего она? Что на ней будет.
Ты бы хоть накидал на форму компонент и сделала бы снимок. А то непонятно, чего тебе надобно.

Добавлено через 8 минут и 46 секунд
Вот тебе несколько снимков резиновой формы

user posted image


user posted image


user posted image

вот сама форма:
http://rghost.ru/private/46844642/e54ec882...629a197aadb062e (для D2007)
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Общие вопросы"
SnowyMetalFan
bemsPoseidon
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.1125 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.