Вверх ↑
Ответов: 2324
Рейтинг: 681
#1: 2025-03-12 17:22:56 ЛС | профиль | цитата
strannik_nebes писал(а):
После правок не удается расположить pagecontrol справа
Давай уточним. У меня к примеру в твоем примере и до правок по координатам (adPosition) PageControl залезает на левую сторону. Правки на это никак не повлияли.
Если говорить о "фишках" слоев, то мне известны следующие:
1. Игнорирование Visible. Что как по мне не правильно. Если выключить (сделать не видимым) контрол, то слои его все равно обрабатывают. Есть желание избавиться от этого.
2. Контейнеры имеют преимущество при построении по (adPosition) и насколько помню всегда рекомендовали в таких случаях запихивать в контейнеры все что не контейнер, чтоб быть на ровне с контейнером.
А почему Zorder не подходит? Великолепно справляется:
Add(VBoxLayout,2368616,616,126)
{
Name="ver_01"
Space=33
Padding=5
Layout="ver_02"
}
Add(Memo,13841878,700,343)
{
Left=50
Top=145
Width=115
Color=12639424
Layout="ver_02"
HeightScale=100
}
Add(MainForm,11767304,385,231)
{
Width=741
Height=583
Position=1
link(onCreate,15871745:doResize,[])
}
Add(VBoxLayout,3155327,616,343)
{
Name="ver_02"
WidthScale=50
Layout="lay"
}
Add(Edit,6116337,700,238)
{
Left=120
Top=105
Height=25
Layout="ver_01"
}
Add(Edit,15850007,700,189)
{
Left=130
Top=65
Height=25
Layout="ver_01"
}
Add(Edit,3410316,700,140)
{
Left=130
Top=35
Height=25
Layout="ver_01"
}
Add(Edit,4471230,700,91)
{
Left=130
Top=5
Height=25
Layout="ver_01"
}
Add(HBoxLayout,15871745,490,245)
{
Name="lay"
HeightScale=100
AddMode=0
}
Add(PageControl,7896318,840,245)
{
TabOrder=1
Layout="lay"
WidthScale=50
Selected="base"
}
BEGIN_SDK
Add(EditPolyMulti,15384383,21,21)
{
}
Add(PagePanel,15522654,35,105)
{
Left=410
Top=45
Width=265
Height=450
Layout="parent.lay"
WidthScale=50
}
END_SDK
И правки в этой схеме хорошо себя отрабатывают.

Да и по adPosition работает. Сам не обратил внимание что в редакторе формы отображается base, а не сам контейнер, а слои обрабатывают контейнер. Если изменить значение Left в контейнере как и у base, то все правильно работает:
Add(VBoxLayout,2368616,616,126)
{
Name="ver_01"
Space=33
Padding=5
Layout="ver_02"
}
Add(Memo,13841878,700,343)
{
Left=50
Top=145
Width=115
Color=12639424
Layout="ver_02"
HeightScale=100
}
Add(MainForm,11767304,385,203)
{
Width=741
Height=583
Position=1
link(onCreate,15871745:doResize,[])
}
Add(VBoxLayout,3155327,616,343)
{
Name="ver_02"
WidthScale=50
Layout="lay"
}
Add(Edit,6116337,700,238)
{
Left=120
Top=105
Height=25
Layout="ver_01"
}
Add(Edit,15850007,700,189)
{
Left=130
Top=65
Height=25
Layout="ver_01"
}
Add(Edit,3410316,700,140)
{
Left=130
Top=35
Height=25
Layout="ver_01"
}
Add(Edit,4471230,700,91)
{
Left=130
Top=5
Height=25
Layout="ver_01"
}
Add(HBoxLayout,15871745,518,217)
{
Name="lay"
HeightScale=100
}
Add(PageControl,7896318,840,245)
{
Left=300
TabOrder=1
Layout="lay"
WidthScale=50
Selected="base"
}
BEGIN_SDK
Add(EditPolyMulti,15384383,21,21)
{
}
Add(PagePanel,15522654,35,105)
{
Left=355
Top=45
Width=340
Height=450
Layout="parent.lay"
WidthScale=50
}
END_SDK
Это и нужно учитывать когда создаешь панели динамически. По позиции может получится лажа, так как слои уже сместили элементы на форме и в этот момент создается новый (или несколько), а так как используется позиция по умолчанию, то сложно предсказать где они появятся. Будешь ожидать что все будет как в редакторе форм, а на деле выйдет по другому. При zOrder новая панель добавиться в конец слоя.
карма: 11

1
Голосовали:strannik_nebes
Редактировалось 4 раз(а), последний 2025-03-12 17:46:27