Конференция "Прочее" » Align: К вопросам на засыпку.
 
  • DayGaykin © (09.08.16 20:45) [0]
    Ответьте без подглядывания на следующие 2 вопроса.

    Дана форма, на ней три панели.

    Устанавливаем свойства таким образом:
    Panel1.Align = alTop;
    Panel2.Align = alRight;
    Panel3.Align = alClient;

    Вопрос какая из нижеприведенных конфигураций получится? Гарантировано ли такое поведение?


    a)
    =========================
    .........Panel1..........
    =========================
    ...............|.........
    ...............|.........
    ....Panel3.....|.Panel2..
    ...............|.........
    ...............|.........
    ...............|.........

    б)
    ===============|.........
    ....Panel1.....|.........
    ===============|.........
    ...............|.........
    ...............|.Panel2..
    ....Panel3.....|.........
    ...............|.........
    ...............|.........
    ...............|.........

    в) С пересечением:
    ===============+=========
    ........Panel1.|..........
    ===============+=========
    ...............|.........
    ...............|.Panel2..
    ....Panel3.....|.........
    ...............|.........
    ...............|.........
    ...............|.........

  • Германн © (09.08.16 20:55) [1]
    Зависит от порядка создания панелей.
  • iop © (09.08.16 21:38) [2]
    от порядка присвоения значений алайна.
  • MsGuns © (10.08.16 00:29) [3]
    A
  • Тимохов Дима © (10.08.16 01:09) [4]
    Я когда-то серьезно копал исходники.
    И вроде как вариант А гарантируется.

    "Практика - критерий истины" (с) Игорь Шевченко.
  • Германн © (10.08.16 01:45) [5]

    > 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]

    > Kilkennycat ©   (10.08.16 01:56) [6]
    >
    > гарантия обеспечивается брингом на фронт или бак.

    Брингом на фронт или бак чего?
  • Kilkennycat © (10.08.16 02:11) [8]

    > Германн ©   (10.08.16 02:10) [7]

    панелей, разумеется.
  • Kilkennycat © (10.08.16 02:13) [9]
    Если уж говорить точнее, то конфигурация зависит от ZOrder панелей
  • Тимохов Дима © (10.08.16 02:16) [10]

    > Если уж говорить точнее, то конфигурация зависит от ZOrder
    > панелей


    зуб не дам, конечно, но, когда изучал, пришел к выводу, что

    топ всегда сверху
    боттом всегда снизу

    лефт, клиент, райт - уже живут между ними.

    ЗЫ. Не проверял. Автор же предлагал без подглядывания ответить.
  • Kilkennycat © (10.08.16 02:20) [11]

    > Тимохов Дима ©   (10.08.16 02:16) [10]

    вполне возможно, что мы оба правы. уже не помню.
    по крайней мере, два одинаковых дока точно определяются ордером
  • Германн © (10.08.16 02:35) [12]

    > Kilkennycat ©   (10.08.16 02:11) [8]
    >
    >
    > > Германн ©   (10.08.16 02:10) [7]
    >
    > панелей, разумеется.
    >

    Ну не проверял реакцию Align на BringtoFront/SendToBack. Возможно ты и прав. Только при чем тут гарантии?
  • Тимохов Дима © (10.08.16 02:37) [13]

    > по крайней мере, два одинаковых дока точно определяются
    > ордером

    Имхо, на вопрос отвечает код метода TWinControl.AlignControls.
    В частности, код вложенной процедуры DoAlign.
    Сначала топ, потом боттом, а потом все остальные.

    ЗЫ. Может, тут и ордер работает. Не знаю.

    ЗЗЫ. Опираюсь на исходники от Delphi2007.
  • Тимохов Дима © (10.08.16 02:48) [14]

    > Германн ©   (10.08.16 02:35) [12]
    >  ... Только при чем тут гарантии?


    У Delphi традиционно слабая справка - явно не написано.
    Но код указанного мною выше метода говорит, что гарантии есть.
  • Kilkennycat © (10.08.16 03:26) [15]

    > Тимохов Дима ©   (10.08.16 02:37) [13]
    > Может, тут и ордер работает. Не знаю.

    возьмем два топа. какой будет первый? получается, только ордер тут определит.
  • Тимохов Дима © (10.08.16 03:32) [16]

    > возьмем два топа. какой будет первый? получается, только
    > ордер тут определит.

    Ну ясен пень)))

    Исходно вопрос автора был о взаимодействии топа, райта и киента.
    Я до недавнего времени считал, что будет бардак в этом случае. Но потом код поизучал, оказало, что ребята из Дельфи тут все продумали)))
  • Kilkennycat © (10.08.16 04:33) [17]
    ну вот в C# WinForms по-другому продумали. Там только Z и работает, в результате можно хоть по спирали задоковать (заалигнить).
  • KSergey © (10.08.16 14:19) [18]
    Если устанавливаются алигны именно в указанной последовательности - то А
  • KSergey © (10.08.16 14:20) [19]
    только не понятно где это можно подглядеть.
 
Конференция "Прочее" » Align: К вопросам на засыпку.
Есть новые Нет новых   [134431   +14][b:0][p:0.002]