Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2003.07.21;
Скачать: CL | DM;

Вниз

Изменить порядок Align   Найти похожие ветки 

 
bestix ©   (2003-07-07 15:31) [0]

Создадим новый проект. Положим на форму компонент Panel1. Зададим свойство у нее Align=alBottom. Затем на форму положим Panel2 со свойством Align=alLeft. При этом Panel1 будет растянута по ширине на всю форму, а Panel2 будет распологаться как бы над Panel1.
Вопрос: Как можно сделать так чтобы Panel2 растягивалась по всей высоте форме, то есть чтобы Panel1 была слева от Panel2? Спасибо.


 
Семен Сорокин ©   (2003-07-07 15:37) [1]

кинуть Panel3 (можно с BorderStyle=bsNone) в добавок к твоей Panel2 делаем ее Align = alClient, а на нее уже Panel1 c Align = alBottom.


 
wl ©   (2003-07-07 15:41) [2]

Если не важно, сколько панелей валяется на форме, тогда так:
Положим на форму компонент Panel1 со свойством Align=alLeft
Положим на форму компонент Panel2 со свойством Align=alClient
Положим на Panel2 компонент Panel3 со свойством Align=alBottom


 
bestix ©   (2003-07-07 15:42) [3]

Извиняюсь, не сказал самого главного.
Эти панели должны лежать на форме у которой свойство FormStyle=fsMDIForm. Там к сожалению панель не подойдет.


 
wl ©   (2003-07-07 15:44) [4]

вот блин, до меня ответили, а я когда писал, ответа ещё не было....


 
AbrosimovA   (2003-07-07 15:47) [5]

Обрисуй подробнее, как ты хочешь видеть панели. Из того, что ты написал ничего не понять.



 
bestix ©   (2003-07-07 17:27) [6]

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


 
bestix ©   (2003-07-07 20:27) [7]

Еще раз :)
Есть мди-форма. Хочется справа и слева организовать док-приемник чтобы кидать туда разные панельки. А также нужен еще один приемник для тех же целей, но внизу. Так вот при установке алигнов у этих доков, получается следующая картина. Нижняя панель растягивается по всей форме в ширину, а боковые распалагаются по краям НО НАД НИЖНИМ. Хочется чтобы эти боковые панели занимали всю ВЫСОТУ формы, а нижняя панель была МЕЖДУ ними. Надеюсь доходчиво объяснил :)


 
AbrosimovA   (2003-07-08 08:07) [8]

Это возможно сделать при 4-х панелях, хотя визуально четвертую видно не будет.
Кладешь первую слева(Align=alLeft), вторую справа(Align=alRight),
третью посередине(Align=alClient), а также для этой панели устанавливаешь свойство BevelOuter=bvLowered. Четвертую кладешь непосредственно на третью панель со свойствами Align=alBottom,
BevelOuter=bvRaised и BevelWidth=2.
Хотя свойствами BevelInner, BevelOuter и BevelWidth ты можешь поварьировать самостоятельно, для получения нужной картинки.


 
wl ©   (2003-07-08 09:25) [9]

Да кстати, пришло в голову, что можно попробовать поиграть со свойством Anchors, тогда никакие элайны расставлять не придётся....


 
bestix ©   (2003-07-08 10:09) [10]

AbrosimovA это никак не подойдет для главной MDI-формы. Создаваемые дочернии окна окажутся невидимыми.

wl при максимайзе дочернего окна нижняя часть его окажется под "объякорной" панелью. не подходит



 
AbrosimovA   (2003-07-08 10:54) [11]

Есть ещё способ : Установить у горизонтальной панели Align=alNone. Вручную красиво уложить её между вертикальными панелями. Написать код, реализующий постоянное её местоположение между крайними панелями при максимизации и восстановлении нормального размера формы.


 
bestix ©   (2003-07-08 11:08) [12]

AbrosimovA так уже делал. Но дочернее окно оказывается ПОД "красиво" уложенной панелью :)


 
wl ©   (2003-07-08 11:09) [13]

А да, зачем искать лёгкие пути, можно пописать немного кода,
например на событие OnResize у формы


 
AbrosimovA   (2003-07-08 11:37) [14]


> bestix © (08.07.03 11:08)


Не совсем въезжаю, зачем нужна внизу панель, если она везде мешает?


 
bestix ©   (2003-07-08 12:09) [15]

AbrosimovA Вы когда-нибудь делали MDI-приложения? Так вот там на главной форме есть Frame область в которой располагаются создаваемые дочернии окна. Если главная форма пуста, то под клиентскую область отводится все свободное пространство главной формы. Если же на главной форме есть какой-нибудь компонент, скажем класса TPanel, и у этого компонента свойство Align установлено например в alLeft, то клиентская область (для дочерних окон) УМЕНЬШАЕТСЯ на размер компонента, в нашем случае на ширину панели. Это уменьшение происходит только в случае если у компонентов принадлежащих главной форме свойство TAlign не равно alNone, иначе клиентская область не уменьшается. Вот..
Ну незнаю, как еще более понятно объяснить :)


 
AbrosimovA   (2003-07-08 12:19) [16]


> bestix © (08.07.03 12:09)
> AbrosimovA Вы когда-нибудь делали MDI-приложения? Так вот
> там на главной форме есть Frame область в которой располагаются
> создаваемые дочернии окна. Если главная форма пуста, то
> под клиентскую область отводится все свободное пространство
> главной формы. Если же на главной форме есть какой-нибудь
> компонент, скажем класса TPanel, и у этого компонента свойство
> Align установлено например в alLeft, то клиентская область
> (для дочерних окон) УМЕНЬШАЕТСЯ на размер компонента, в
> нашем случае на ширину панели. Это уменьшение происходит
> только в случае если у компонентов принадлежащих главной
> форме свойство TAlign не равно alNone, иначе клиентская
> область не уменьшается. Вот..
> Ну незнаю, как еще более понятно объяснить :)


Всё это справедливо и для не MDI-приложений. Поэтому не стоило утруждать себя объяснениями. Но на вопрос мой уклонились ответить.


 
bestix ©   (2003-07-08 12:34) [17]

Панель не "везде мешает" а только правильному отображению дочерних окон. А нужна мне эта самая панель для вывода и установки в ней неких данных. Панель не широкая. Меня не устраивает если она будет занимать много место внизу без толку. Поэтому и нужно что бы она располагалась между двумя крайними панелями которые как раз и будут содержать много информации. Для примера можно взглянуть на FlashMX v.10


 
AbrosimovA ©   (2003-07-09 08:54) [18]


> bestix © (08.07.03 11:08)
> AbrosimovA так уже делал. Но дочернее окно оказывается ПОД
> "красиво" уложенной панелью :)


Посмотрел я скриншот Flash MX и там реализовано аналогично предложенному мною

> AbrosimovA (08.07.03 10:54)
> Есть ещё способ : Установить у горизонтальной панели Align=alNone.
> Вручную красиво уложить её между вертикальными панелями.
> Написать код, реализующий постоянное её местоположение между
> крайними панелями при максимизации и восстановлении нормального
> размера формы.




Страницы: 1 вся ветка

Текущий архив: 2003.07.21;
Скачать: CL | DM;

Наверх




Память: 0.51 MB
Время: 0.015 c
1-67840
AndrewVolkov
2003-07-07 18:09
2003.07.21
И снова PopupMenu ;-((


1-67904
AndrewVolkov
2003-07-08 14:43
2003.07.21
ChecklistBox перейти к желаемому Итему??


1-67861
ServerXP
2003-07-07 23:56
2003.07.21
Как создать многооконную структуру программы в Delphi?


8-67924
Мякс
2003-04-01 18:17
2003.07.21
Помогите с картинками!


14-67977
vopros
2003-07-07 10:42
2003.07.21
Как открыть запороленный архив RAR?