Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: Общие вопросы > Максимальный размер формы


Автор: Garabar 29.11.2010, 14:07
Здравствуйте, неожиданная проблема настигла меня:
Необходимо, что бы размер формы был 1040х1900, однако максимальную ширину позволяется выставить лишь 1692. (Delphi 7)
Разъясните пожалуйсто и посоветуйте как преодолеть сей досадный момент.
Спасибо 

Автор: Snowy 29.11.2010, 14:51
Ну так 1692 > 1040

А ответ прост - никак.
Точнее никак для текущих аппаратных условий.
SetWindowPos не может установить данный размер окна.
Поэтому устанавливает предельный, какой может.
Ковыряться отладчиком в коде винды лениво.
Предположу, что маловато видеопамяти...

Автор: Poseidon 29.11.2010, 14:57
Garabar, а что у тебя в Constraints.MaxWidth формы?

Автор: Garabar 29.11.2010, 15:40
Если я его не устанавливаю то выдаёт ноль, если устанавливаю то показывает то что поставил, например 1920.
Надо сделать ширину 1920 а позволяет лишь 1692  ((

Не очень понял про видеопамять, карточка вобщемто довольно современная... 
например размер фрейма в фаерфоксе можно делать любого размера, или в текстовой редакторе.... (если эти вещи конечно можно сравнивать smile )

Автор: Snowy 29.11.2010, 15:43
Да Constraints тут не причём.
Это ограничение системы.
Например, на моём стареньком ноутбучике, максимальная ширина формы 2732.
Независимо от версии дельфи.
От чего зависит - ХЗ.

Автор: Garabar 29.11.2010, 15:49
Хм...  а случаем никто не знает как сие ограничение преодолеть?
Буду чрезвычайно признателен)

Автор: RinOSpro 29.11.2010, 15:49
Если устроит заголовок bsDialog, то вот:

Код

  BorderStyle := bsDialog;

  Width := 5000;
  Height := 5000;

Автор: Poseidon 29.11.2010, 15:56
Snowy, а какое разрешение экрана ноут держит? Мне кажется в любом случае размер формы никак не может быть меньше разрешения экрана.

Автор: Garabar 29.11.2010, 15:57
Спасибо большое - работает 
но только в режиме разработки всё равно не выставить желаемую ширину, а так хочется добавить элементов всяких...

Автор: RinOSpro 29.11.2010, 16:01
А в режиме разработки скролбары должны появиться. 
Надо только выставить BorderStyle bsSizeable в инспекторе объектов. 
А BorderStyle := bsDialog; выставляй в коде, в Create к примеру.

Автор: Snowy 29.11.2010, 16:06
А в чём магия диалогов?
Почему другие стили ограничены, а диалоги нет?

Автор: Garabar 29.11.2010, 16:12
BorderStyle bsSizeable стоит, но скролы не появляются, да и вабще в инспекторе объектов нельзя поставить свойству Width значение 1900: набираю 1900 нажимаю ентер и он перескакивает на 1692...

Автор: Snowy 29.11.2010, 16:17
В дельфи 7 и меньше, форма всегда имеет стиль Sizeable при проектировании.
Тут ничего не поправишь...
Только студию ставить.

Автор: Garabar 29.11.2010, 16:31
Однако радикальное решение...

Автор: RinOSpro 29.11.2010, 16:38
Цитата(Garabar @  29.11.2010,  16:12 Найти цитируемый пост)
BorderStyle bsSizeable стоит, но скролы не появляются, да и вабще в инспекторе объектов нельзя поставить свойству Width значение 1900: набираю 1900 нажимаю ентер и он перескакивает на 1692...


Ты компонент какой ни будь перетащи к краю формы, и появится скроллбар, или в инспекторе посмотри разрешены ли у тебя скроллбары.

Автор: Garabar 29.11.2010, 16:59
Если компонент перетащить скролбары конечно же появляются,так и приходиться мутить)
Всем большое спасибо.. наверно офф топ...

Автор: RinOSpro 29.11.2010, 18:45
Цитата(Snowy @  29.11.2010,  16:06 Найти цитируемый пост)
А в чём магия диалогов?Почему другие стили ограничены, а диалоги нет?


хм... сложный вопрос... В общем на WinApi создавал окна, с различными параметрами, и вот до чего дошел. 
Если окно создано с использованием WS_POPUP и при этом отсутствует WS_THICKFRAME. То высота/ширина может может быть большая, до 32767.

В чем магия пока не понятно... 

Автор: БелАмор 30.11.2010, 01:52
Цитата(Garabar @  29.11.2010,  16:59 Найти цитируемый пост)
Если компонент перетащить скролбары конечно же появляются,так и приходиться мутить)

Зачем что-то перетаскивать? Положите на форму метку, выставите ей в инспекторе объектов ручками нужные координаты. У вас появятся полосы прокрутки, позволяющие спокойно прокручивать всю рабочую область до этой метки в дизайнтайме. Для того, чтобы область не была слишком большой в рантайме, можно:

1. Очистить Caption метки и сразу выставить нужные координаты, чтобы она и в рантайме работала как ограничитель скроллируемой области.
2. В OnCreate формы что-либо делать с этой меткой:
  а) Очистить Caption и переместить либо в начало, чтобы не мешала, либо в нужное место, чтобы работала как ограничитель.
  б) Уничтожить.
3. Использовать эту метку временно, а по завершении разработки формы просто убрать её.

Автор: RinOSpro 30.11.2010, 10:14
Цитата(Garabar @  29.11.2010,  16:59 Найти цитируемый пост)

Зачем что-то перетаскивать? Положите на форму метку, выставите ей в инспекторе объектов ручками нужные координаты. У вас появятся полосы прокрутки, позволяющие спокойно прокручивать всю рабочую область до этой метки в дизайнтайме. Для того, чтобы область не была слишком большой в рантайме, можно:

1. Очистить Caption метки и сразу выставить нужные координаты, чтобы она и в рантайме работала как ограничитель скроллируемой области.
2. В OnCreate формы что-либо делать с этой меткой:
  а) Очистить Caption и переместить либо в начало, чтобы не мешала, либо в нужное место, чтобы работала как ограничитель.
  б) Уничтожить.
3. Использовать эту метку временно, а по завершении разработки формы просто убрать её.


А теперь возьми и снова перечитай вопрос. Перечитал? Еще раз для закрепления.

Зачем ему ляпать на форму лейбл если у него и так там компоненты будут? Он же ясно сказал что форма маленькая и не все помещается.

Автор: Poseidon 30.11.2010, 11:29
Я так и не понял, зачем иметь форму шире разрешения экрана?

Автор: Snowy 30.11.2010, 11:43
Цитата(Poseidon @  30.11.2010,  11:29 Найти цитируемый пост)
Я так и не понял, зачем иметь форму шире разрешения экрана?
В том то и проблема - у него форма во весь экран, а в дизайнере на весь экран не растягивается.
Вот и приходится скролить.

Автор: БелАмор 30.11.2010, 14:10
Цитата(RinOSpro @  30.11.2010,  10:14 Найти цитируемый пост)
А теперь возьми и снова перечитай вопрос. Перечитал? Еще раз для закрепления.

Зима наконец наступила, радоваться надо, а вы нервничаете...

Цитата(RinOSpro @  30.11.2010,  10:14 Найти цитируемый пост)
Зачем ему ляпать на форму лейбл если у него и так там компоненты будут? Он же ясно сказал что форма маленькая и не все помещается.

Ему не форму большую надо, а удобно скроллить во время разработки. Если вы не поняли что я имел в виду, возьмите и попробуйте.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)