#delphi
#delphi
Вопрос:
В моем приложении есть форма, которая используется для разработки других форм и содержит инспектор объектов (ниже приведена базовая схема ascii)
-----------------------
|obj | design forms |
|insp| here |
| | |
-----------------------
итак, основная форма приложения содержит форму объекта и другую форму, в которую можно размещать компоненты (вверху также есть панель инструментов для выбора компонентов, но я этого не показывал).
Теперь, если я увеличу основную форму, я бы хотел, чтобы содержимое расширилось, чтобы соответствовать ей…
-------------------------------
|obj | design forms |
|insp| here |
| | |
| | |
| | |
-------------------------------
итак, моя форма «конструктор форм» имеет Align := alClient;
но, если я размещу на нем компонент так, чтобы он перекрывал край…
-------------------------------
|obj | design forms |
|insp| here -----------
| | |component|
| | -----------
| | |
-------------------------------
экран, конечно, показывает
-------------------------------
|obj | design forms |
|insp| here -----|
| | |comp|
| | -----|
| | |
-------------------------------
и я хотел бы автоматическую полосу прокрутки.
Но, похоже, что Align := alClient;
переопределяет автоматическую прокрутку:= true;
Есть идеи, как разрешить этот конфликт? 1) область конструктора должна уменьшаться и увеличиваться, всегда заполняя правую часть основной формы по мере изменения размера основной формы 2) если размещен компонент, который будет нависать над краем формы конструктора, то у него должны увеличиться полосы прокрутки
ИЛИ я полностью упускаю суть? У меня есть код, который обрабатывает размещение компонента — должен ли я проверять там, нужно ли мне добавлять полосы прокрутки?
Комментарии:
1. Какого типа компонент контейнера, который содержит содержимое разрабатываемой формы? Я думаю, что стандарт
TScrollBox
ведет себя так, как вы хотите.2. 1 для 1 для ascii-кода 😉
3. 1 для «какого типа?». В конечном счете это происходит от TScrollingWinControl
Ответ №1:
Я думаю, что относительно простым решением было бы переключить форму Align
на alNone
и расположить и изменить ее размер в событии изменения размера родительской формы. Предположительно, у вас там есть разделитель, события размера которого вам также придется прослушивать.
Пока у вас есть только инспектор и форма проектирования, это довольно простое решение для реализации. Если у вас там будет больше окон инструментов, это будет сложнее, но основную идею можно расширить.
Комментарии:
1. 1 Да, есть разделитель, и это звучит как отличное решение. Я исправлю это и свяжусь с вами. Спасибо
2. @Mawg: Однажды я оставил хвалебный комментарий, подразумевающий, что я также поддержал ответ, который я комментировал. Позже выяснилось, что мне на самом деле не удалось повысить голос. Похоже, на этот раз с вами произошло то же самое. Это или ваш комментарий был предназначен для совершенно другого ответа, который, как оказалось, тоже касался какого-то разделителя (возможно, временного разделителя), и он попал сюда по какой-то ошибке. 🙂
3. 1 за ваш ответ и 1 за ваш комментарий. Извините за это. Это займет некоторое время, чтобы закодировать это, поэтому я пока не буду присуждать ответ, на случай, если кто-то каким-то образом опубликует лучший ответ — но я не задерживаю дыхание. Спасибо, что направили меня в правильном направлении
4. Проблема в том, что я хочу, чтобы вложенная форма могла быть больше основной формы или даже монитора, путем добавления к ней полос прокрутки, поэтому я не могу просто изменить ее размер. Мне действительно нужны полосы прокрутки.
5. @Mawg У меня, кажется, все работает нормально. Но я ищу полосы прокрутки в форме дизайна, а не в общем контейнере. Где вы хотите, чтобы полосы прокрутки были?