-
Ответьте без подглядывания на следующие 2 вопроса.
Дана форма, на ней три панели.
Устанавливаем свойства таким образом:
Panel1.Align = alTop;
Panel2.Align = alRight;
Panel3.Align = alClient;
Вопрос какая из нижеприведенных конфигураций получится? Гарантировано ли такое поведение?
a)
=========================
.........Panel1..........
=========================
...............|.........
...............|.........
....Panel3.....|.Panel2..
...............|.........
...............|.........
...............|.........
б)
===============|.........
....Panel1.....|.........
===============|.........
...............|.........
...............|.Panel2..
....Panel3.....|.........
...............|.........
...............|.........
...............|.........
в) С пересечением:
===============+=========
........Panel1.|..........
===============+=========
...............|.........
...............|.Panel2..
....Panel3.....|.........
...............|.........
...............|.........
...............|.........
-
Зависит от порядка создания панелей.
-
от порядка присвоения значений алайна.
-
A
-
Я когда-то серьезно копал исходники.
И вроде как вариант А гарантируется.
"Практика - критерий истины" (с) Игорь Шевченко.
-
> MsGuns © (10.08.16 00:29) [3]
>
> A
>
> Тимохов Дима © (10.08.16 01:09) [4]
>
> Я когда-то серьезно копал исходники.
> И вроде как вариант А гарантируется.
>
Кем гарантируется и в каких случаях?
-
гарантия обеспечивается брингом на фронт или бак.
-
> Kilkennycat © (10.08.16 01:56) [6]
>
> гарантия обеспечивается брингом на фронт или бак.
Брингом на фронт или бак чего?
-
> Германн © (10.08.16 02:10) [7]
панелей, разумеется.
-
Если уж говорить точнее, то конфигурация зависит от ZOrder панелей
-
> Если уж говорить точнее, то конфигурация зависит от ZOrder
> панелей
зуб не дам, конечно, но, когда изучал, пришел к выводу, что
топ всегда сверху
боттом всегда снизу
лефт, клиент, райт - уже живут между ними.
ЗЫ. Не проверял. Автор же предлагал без подглядывания ответить.
-
> Тимохов Дима © (10.08.16 02:16) [10]
вполне возможно, что мы оба правы. уже не помню.
по крайней мере, два одинаковых дока точно определяются ордером
-
> Kilkennycat © (10.08.16 02:11) [8]
>
>
> > Германн © (10.08.16 02:10) [7]
>
> панелей, разумеется.
>
Ну не проверял реакцию Align на BringtoFront/SendToBack. Возможно ты и прав. Только при чем тут гарантии?
-
> по крайней мере, два одинаковых дока точно определяются
> ордером
Имхо, на вопрос отвечает код метода TWinControl.AlignControls.
В частности, код вложенной процедуры DoAlign.
Сначала топ, потом боттом, а потом все остальные.
ЗЫ. Может, тут и ордер работает. Не знаю.
ЗЗЫ. Опираюсь на исходники от Delphi2007.
-
> Германн © (10.08.16 02:35) [12]
> ... Только при чем тут гарантии?
У Delphi традиционно слабая справка - явно не написано.
Но код указанного мною выше метода говорит, что гарантии есть.
-
> Тимохов Дима © (10.08.16 02:37) [13]
> Может, тут и ордер работает. Не знаю.
возьмем два топа. какой будет первый? получается, только ордер тут определит.
-
> возьмем два топа. какой будет первый? получается, только
> ордер тут определит.
Ну ясен пень)))
Исходно вопрос автора был о взаимодействии топа, райта и киента.
Я до недавнего времени считал, что будет бардак в этом случае. Но потом код поизучал, оказало, что ребята из Дельфи тут все продумали)))
-
ну вот в C# WinForms по-другому продумали. Там только Z и работает, в результате можно хоть по спирали задоковать (заалигнить).
-
Если устанавливаются алигны именно в указанной последовательности - то А
-
только не понятно где это можно подглядеть.