projman/hlp/ru/tk/pack-old.html
2018-02-05 17:23:37 +03:00

237 lines
14 KiB
HTML
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<!DOCTYPE html PUBLIC -//W3C//DTD HTML 4.01 Transitional//EN>
<html>
<head>
<title>pack-old</title>
</head>
<body>
<h1>pack-old</h1>
<p>Устаревшая команда для геометрического менеджера упаковки
окон.</p>
<h2><a name=СИНТАКСИС></a>СИНТАКСИС</h2>
<pre>
<strong>pack after</strong> sibling <em>окно параметры</em> ?<em>окно параметры...</em>?
<strong>pack append</strong> parent <em>окно параметры</em> ?<em>окно параметры...</em>?
<strong>pack before</strong> sibling <em>окно параметры</em> ?<em>окно параметры...</em>?
<strong>pack unpack</strong> <em>окно</em>
</pre>
<h2><a name=ОПИСАНИЕ></a>ОПИСАНИЕ</h2>
<p><strong>Замечание</strong>. Ниже описан синтаксис команды
<strong>pack</strong>, употреблявшейся в версиях Tk до 3.3. Хотя
в целях совместимости поддержка команды в системе сохранена,
команда является устаревшей и использовать ее не
следует. Возможно, в будущем ее поддержка
прекратится.</p>
<p>Упаковщик представляет собой геометрический менеджер,
предназначенный для размещения непосредственных потомков
примитива по сторонам примитива в порядке их появления. Первый
потомок размещается вдоль одной стороны примитива, занимая всю
протяженность окна вдоль этой стороны. В результате, для
следующих потомков остается усеченное окно, как если бы
выбранная сторона сдвинулась внутрь на размер первого
потомка. Вдоль одной из сторон оставшейся области размещается
второй потомок, и так далее до тех пор, пока не будут размещены
все потомки или пока не исчерпается свободное место.</p>
<p>Формы <strong>before</strong>, <strong>after</strong> и
<strong>append</strong> команды <strong>pack</strong>
используются для вставки одного или нескольких непосредственных
потомков в очередь упаковки их родителя. В форме
<strong>before</strong> команда вставляет окно-потомка перед
родственными узлами; все остальные окна должны быть узлами
одного уровня. В форме <strong>after</strong> окна вставляются
после родственных узлов, а в форме <strong>append</strong>
добавляет одно или несколько окон к очереди упаковки их
<em>родителя</em>. Если <em>окно</em>, указанное в любой из этих
команд уже упаковано в родительское окно, то оно удаляется со
своего текущего положения в порядке упаковки и перемещается в
соответствии с командой. Все эти команды возвращают в качестве
результата пустую строку.</p>
<p>Форма <strong>unpack</strong> команды <strong>pack
command</strong> удаляет <em>окно</em> из очереди упаковки его
родителя и стирает его с экрана. После выполнения этой команды
упаковщик более не управляет геометрией <em>окна</em>.</p>
<p>На самом деле, размещение каждого потомка представляет собой
четырехступенчатую процедуру; значение <em>параметра</em>,
следующего за <em>окном</em>, представляет собой список из
одного или нескольких полей, управляющих размещением окна. В
нижеследующем обсуждении термин <em>полость</em> (cavity)
обозначает место в окне-родителе, оставшееся после размещения
конкретного потомка (т.е. все то место, которое не было
запрошено при размещении предыдущих потомков в очереди). Термин
<em>доля</em> (parcel) обозначает количество места,
отведенного конкретному потомку; это количество не обязательно
соответствует окончательной геометрии окна-потомка.</p>
<p>Первый шаг в размещении потомка состоит в выборе стороны
полости, вдоль которой он будет располагаться. Для указания
стороны можно пользоваться любым из следующих параметров:</p>
<dl>
<dt><strong>top</strong></dt>
<dd>Отводит долю потомка у верхней стороны полости на всю ширину
полости.</dd>
<dt><strong>bottom</strong> </dt>
<dd>Отводит долю потомка у нижней стороны полости на всю ширину
полости.</dd>
<dt> <strong>left</strong> </dt>
<dd>Отводит долю потомка у левой стороны полости на всю высоту
полости.</dd>
<dt> <strong>right</strong> </dt>
<dd>Отводит долю потомка у правой стороны полости на всю высоту
полости.</dd>
</dl>
<p>Для каждого окна следует задать ровно один из этих
параметров. Значением стороны по умолчанию является
<strong>top</strong>. Второй шаг состоит в определении доли
потомка. Для <strong>верхнего</strong> и
<strong>нижнего</strong> окон желательная ширина доли обычно
совпадает с шириной полости, а желательная высота совпадает с
запрошенной высотой доли, которая передается команде
Tk_GeometryRequest. Для <strong>левого</strong> и
<strong>правого</strong> окон желательная высота доли обычно
совпадает с высотой полости, а желательная ширина совпадает с
запрошенной шириной доли. Однако с помощью каждого из описанных
ниже параметров для окна можно запросить дополнительное
место:</p>
<dl>
<dt><strong>padx</strong> <em>число</em> </dt>
<dd>Добавляет <em>число</em> пикселей к запрошенной
ширине окна перед вычислением размера доли, как это было описано
выше.</dd>
<dt><strong>pady</strong> <em>число</em></dt>
<dd>Добавляет <em>число</em> пикселей к запрошенной высоте окна
перед вычислением размера доли, как это было описано
выше.</dd>
<dt><strong>expand</strong></dt>
<dd>Этот параметр указывает на то, что доля окна захватывает все
свободное пространство, оставшееся в полости окна-родителя
после упаковки всех его потомков. Размер оставшегося
пространства зависит от размеров, запрошенных для всех
потомков; он может равняться нулю. Если
<strong>расширения</strong> (expand) затребовали несколько
окон, то вся дополнительная ширина будет поделена поровну
между всеми <strong>левыми</strong> и <strong>правыми</strong>
окнами, запросившими <strong>расширение</strong>, а вся
дополнительная высота будет поделена поровну между всеми
<strong>верхними</strong> и <strong>нижними</strong> окнами,
запросившими <strong>расширение</strong>.</dd>
</dl>
<p>Если желаемая ширина или высота превосходит соответствующую
протяженность полости, то вместо нее используется эта размер
этой протяженности.</p>
<p>На третьем шаге размещения окна следует принять решение о его
ширине и высоте. По умолчанию окно получает либо запрошенные
ширину и высоту, либо ширину и высоту доли в зависимости от
того, что из них меньше. Если доля больше, чем запрошенный
размер окна, то окно можно расширить так, чтобы оно полностью
или частично покрывало долю, с помощью следующих параметров:</p>
<dl>
<dt><strong>fill</strong></dt>
<dd>Делает размеры окна равными размерам доли.</dd>
<dt><strong>fillx</strong></dt>
<dd>Увеличивает ширину окна до ширины доли, сохраняя высоту
окна.</dd>
<dt><strong>filly</strong></dt>
<dd>Увеличивает высоту окна до высоты доли, сохраняя ширину
окна.</dd>
</dl>
<p>На последнем этапе происходит размещение окна внутри его
доли. Если размеры окна и доли совпадают, то окно просто целиком
заполняет долю. Если доля больше окна, то положение окна
определяется с помощью одного из следующих параметров:</p>
<dl>
<dt><strong>frame center</strong></dt>
<dd>Размещает окно по центру доли. Если параметр размещения
опущен, то центральное размещение принимается по
умолчанию.</dd>
<dt><strong>frame n</strong></dt>
<dd>Размещает окно так, что его верхняя сторона располагается по
центру верхней стороны доли.</dd>
<dt><strong>frame ne</strong></dt>
<dd>Размещает окно так, что его правый верхний угол
располагается в правом верхнем углу доли.</dd>
<dt><strong>frame e</strong></dt>
<dd>Размещает окно так, что его правая сторона располагается по
центру правой стороны доли.</dd>
<dt><strong>frame se</strong></dt>
<dd>Размещает окно так, что его правый нижний угол располагается
в правом нижнем углу доли.</dd>
<dt><strong>frame s</strong></dt>
<dd>Размещает окно так, что его нижняя сторона располагается по
центру нижней стороны доли.</dd>
<dt><strong>frame sw</strong></dt>
<dd>Размещает окно так, что его левый нижний угол располагается
в левом нижнем углу доли.</dd>
<dt><strong>frame w</strong></dt>
<dd>Размещает окно так, что его левая сторона располагается по
центру левой стороны доли.</dd>
<dt><strong>frame nw</strong></dt>
<dd>Размещает окно так, что его левый верхний угол располагается
в левом верхнем углу доли.</dd>
</dl>
<p>Упаковщик управляет состоянием размещенный/неразмещенный всех
упакованных непосредственных окон-потомков. При упаковке окон
упаковщик автоматически выводит их на экран; кроме того, он
стирает окна, для которых в полости остается недостаточно
места.</p>
<p>Упаковщик посылает геометрические запросы от имени родителя
размещаемых окон. Для каждого окна-родителя он запрашивает
размер, достаточный для размещения всех упакованных потомков в
соответствии с указанными параметрами, так что на расширение
остается нулевой остаток.</p>
</body>
</html>