| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Delphi: Общие вопросы > Масштабирование компонентов в полноэкранном режиме |
| Автор: Freeman94 17.6.2013, 14:07 |
| Доброго времени суток уважаемые форумчане! В программировании недавно, но при всём при этом я разработал программку в Delphi 2009 на своем компьютере под разрешением экрана 1366х768. В программе использовал следующие компоненты: Panel, Image, Label, ScrollBox, DBGrid и т.д. При запуске, программа автоматически раскрывается на полный экран(WindowState=wsMaximized, BorderStyle=None). У меня на компе все работает(отображается) нормально, а на нетбуке с разрешением экрана 1024x600 некоторые компоненты не влазают на экран. Хотелось бы иметь в своем арсенале универсальную программу, которая бы нормально отображалась в любом разрешении экрана. Прогуглив инет, я пришел к такому выводу, что лучше всего использовать свойства компонентов Align + AlignWithMargins + Margins. Теперь собственно и вопрос: Каким образом мне расчитать новые координаты расположений компонентов Left, Right, Top, Bottom свойства Margins, если разрешение экрана будет отличное от 1366х768. Если есть какая нибудь формула расчета, то пожалуйста поделитесь ею! или же помогите её составить. Заранее спасибо! |
| Автор: Akella 17.6.2013, 15:55 |
| Используй align + anchors. У всех визуальных компонент есть эти свойства. |
| Автор: Akella 17.6.2013, 16:37 | ||
Не всегда. Посмотри VCL dxLayoutControl. |
| Автор: Freeman94 17.6.2013, 21:13 | ||
Во вложенных файлах есть рисунок. Там, где белое - это распаложение панелей. Ширина рисунока = 1366 пикселей, высота = 768 пикселей. Как я буду использовать свойства align=alclient,allfet,alright,altop,albotom для панелей, если у меня панели располагаются по следующим координатам: Left=224 пикселей, Top = 110 пикселей, Width = 916 пикселей, Height = 369 пикселей. На самих панелях присутствуют компоненты. Для основного Имейджа(в прикрепленных файлах) поставил свойство Align=alClient, Stretch=true. С основным имейджом проблем нет, хоть какое бы разрешение не ставил, он автоматически подгоняется под разрешение экрана, а вот с панелями и другими компонентами куча проблем. |
| Автор: northener 18.6.2013, 00:27 |
Так это ж надо DevExpress качать и ставить. А если понравится, так ещё и покупать. Да и не уверен я, что мороки с универсальным дизайном под все разрешения плюс под все DPI не будет. |
| Автор: ZBugz 18.6.2013, 06:58 |
| А я всегда в основнойм align тока юзаю. Теже label ставлю в панели, скрываю бордеры, ну и выравниваю как надо. Геморно конечно на этапе проектирования, зато на 800 на 600 даже работает |
| Автор: Akella 18.6.2013, 13:31 | ||
Ну ты уж определись с тем, что тебе нужно. Фиксированный размер или резиновый дизайн? |
| Автор: Freeman94 18.6.2013, 15:16 | ||||
Резиновый дизайн мне нужен, чтобы при любых разрешениях программа нормально отображалась, чтобы компоненты вмещались на форму при любых разрешениях экрана |
| Автор: Illusion Dolphin 18.6.2013, 15:31 | ||
240x320 тоже? Задача общего решения не имеет, как сказал northener. Есть несколько путей, один включает в себя определение минимального размера формы, а дальше align + anchors. НО, когда разрешение становится низким, то прибегают к такому понятию как адаптивность (в вэб по крайне мере), в таком случае при уменьшении размера меняется ДИЗАЙН приложения, т.к. если там очень много контролов видно, это становится неудобно. Тут уже на помощь выпадающие меню (не popupmenu) и подобные вещи могут помочь. Добавлено через 56 секунд Да, и зачастую этот процесс упрощается при использовании сторонних контролов. |
| Автор: northener 18.6.2013, 15:46 | ||
Готового стандартного инструмента для таких действий в Дельфи нет. Есть только его отдельные составляющие (Anchors, Alignes, Margins etc.) Так что придётся изрядно потрудиться чтобы сей универсальный инструмент сделать. Советую всё же упростить задачу, т.е. сделать дизайн формы при стандартном для нетбуков разрешении (1024x600), а при этом подумать какие контролы и как должно будут увеличиться при увеличении разрешения экрана. Так чтобы форма не казалась пустой, а многострочные контролы (если таковые есть) занимали максимально больше места. P.S. Сам так делал ибо наши спецы из техотдела предпочитают ездить на объекты с нетбуками. P.P.S. При разработке дизайна программы надо помнить не только о разрешении экрана, но и о установленном в системе DPI. |
| Автор: Akella 18.6.2013, 16:38 | ||||||||
При любых? И при 128*128? Добавлено через 42 секунды И что такое нормально? Я считаю, что ненормально когда строка ввода на всю ширину экрана слева на право растянута %) Добавлено через 4 минуты и 39 секунд
Нужно подумать над тем, какие элементы того списка компонент должны растягиваться, а какие нет. ScrollBox может вообще выкинуть? Например, панель. Для чего она? Что на ней будет. Ты бы хоть накидал на форму компонент и сделала бы снимок. А то непонятно, чего тебе надобно. Добавлено через 8 минут и 46 секунд Вот тебе несколько снимков резиновой формы ![]() ![]() ![]() вот сама форма: http://rghost.ru/private/46844642/e54ec8824ed32b0a5629a197aadb062e (для D2007) |