Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
Форум программистов > Delphi: Для новичков > оптимизация формы под разрешение экрана |
Автор: PaWeLL 24.4.2010, 21:49 |
Есть форма с нанесенными на неё компонентами(лейблы, дбгрид, кнопки, несколько вкладок). Проектирую на мониторе с разрешении 1280*1024 а презентовать буду на мониторе с меньшим разрешением. Вопрос в том, как сделать так, чтобы компоненты и сама форма автоматически подстраивались под разрешение экрана. Не хотелось бы чтоб полформы с компонентами пришлось вытаскивать полосой прокрутки. |
Автор: DarkProg 24.4.2010, 22:38 |
В DRKB есть готовое решение. P.S. Не ленитесь юзать поиск. |
Автор: Xenag 25.4.2010, 00:02 |
Ну вообще-то в дельфи есть уже готовое решение И довольно простое ScaleBy Вот хорошее видео, демонстрируещее, как это работает: http://codegearguru.com/video/020/ScaleBy.html |
Автор: PaWeLL 25.4.2010, 00:52 | ||||||
Я так понял, Вы имели в виду это решение
Попробовал вставить его в свою прогу. Получилось вот так (код, не относящийся к делу опущен):
В итоге получаю следующие сообщения: [Error] Unit3.pas(383): Undeclared identifier: 'oForm' [Error] Unit3.pas(383): Statement expected, but expression of type 'Class reference' found [Error] Unit3.pas(141): Unsatisfied forward or external declaration: 'TForm3.AdjustResolution' [Fatal Error] Project1.dpr(8): Could not compile used unit 'Unit3.pas' Прошу помочь разобраться. ![]() |
Автор: kuzyara 25.4.2010, 12:08 |
компилятор тебе подсказал сказал заявил , что не знает "oForm". объясни ему что ты имел ввиду, когда ты это писал копировал. может быть ОФорм - это текущая форма у автора кода? найди взаимопонимание с компилятором, почувствуй его... станьте единым целым... (с)Сенсей |
Автор: Alexeis 25.4.2010, 12:23 | ||||
|
Автор: PaWeLL 25.4.2010, 14:42 |
Alexeis, не получается. :( [Error] Unit3.pas(145): Unsatisfied forward or external declaration: 'TForm3.AdjustResolution' |
Автор: Alexeis 25.4.2010, 18:33 |
PaWeLL, функция AdjustResolution(oForm:TForm); определена ниже чем вызывается. Поменять местами реализацию AdjustResolution и FormCreate |
Автор: PaWeLL 11.5.2010, 22:07 |
Запустил все-таки. Правда ничего не происходит. При запуске проги в меньшем разрешении форма не масштабируется. :( |
Автор: Keeper89 12.5.2010, 02:10 |
Я обычно использую для этого TGridPanel ![]() |
Автор: bems 12.5.2010, 03:45 |
PaWeLL, у тебя еще и метод объявлен, но не реализован (реализация стоит отдельной процедурой, а не методом формы) |
Автор: PaWeLL 27.5.2010, 12:53 |
Вопрос все еще в силе. Нужно как-то отмасштабировать форму с компонентами, созданную в 1280*1024 по меньшее разрешение - 1024*768 Ничего не помогает. ![]() |
Автор: Piroksen 31.5.2010, 03:01 | ||
Попробуй этот код, мне помогло. авторство не мое нашел когда то в гугле |
Автор: БелАмор 10.6.2010, 08:19 |
Мой подход к решению этого вопроса: 1. Масштабируются только формы, имеющие элементы вроде гридов, мемо и т.д., которые, собственно, и меняют размер при растягивании формы. На форме обычно только один такой элемент, чаще всего - какой-нибудь грид. 2. Форма разрабатывается исходя из минимально возможных размеров, при которых элементы ещё не налезают друг на друга, а грид имеет размер, ещё позволяющий работать. 3. В конструкторе форме устанавливаются ограничения на минимальные размеры по текущим размерам (т.е. заданным в дизайнере), т.е. форму можно увеличивать по своему усмотрению, но уменьшать меньше, чем она была в дизайнере - нельзя. 4. Для того, чтобы элементы правильно разъезжались, используются Anchors и выравнивание. 5. Настройки формы сохраняются и восстанавливаются для каждого разрешения экрана индивидуально. Т.е. при первом запуске программы на конкретном разрешении форма показывается с минимальными размерами, пользователь её растягивает под себя, и при последующих запусках с этим разрешением уже используются сохранённые настройки. Посмотрите ещё ссылку: http://www.delphikingdom.com/asp/answer.asp?IDAnswer=56561 В частности, сообщение от 01-11-2007 14:29 |
Автор: JamesPab 18.11.2022, 05:34 |
Модератор: Сообщение скрыто. |