<!-- $XConsortium: ch07.sgm /main/5 1996/09/08 19:48:47 rws $ -->
<!-- (c) Copyright 1995 Digital Equipment Corporation. -->
<!-- (c) Copyright 1995 Hewlett-Packard Company. -->
<!-- (c) Copyright 1995 International Business Machines Corp. -->
<!-- (c) Copyright 1995 Sun Microsystems, Inc. -->
<!-- (c) Copyright 1995 Novell, Inc. -->
<!-- (c) Copyright 1995 FUJITSU LIMITED. -->
<!-- (c) Copyright 1995 Hitachi. -->
<chapter id="ABUG.group.div.1">
<title id="ABUG.group.mkr.1">Grouping and Attaching Objects</title>
<para>In order to ensure that interface objects maintain consistent spacing
and size relationships, regardless of text changes (including internationalization
changes) and resizing of windows, you may need to group control objects and
to attach objects to each other.</para>
<para>This chapter discusses how to group and attach objects for dynamic layout
behavior.</para>
<informaltable id="ABUG.group.itbl.1" frame="All">
<tgroup cols="1">
<colspec colname="1" colwidth="4.0 in">
<tbody>
<row rowsep="1">
<entry><para><!--Original XRef content: 'Grouping Objects90'--><xref role="JumpText"
linkend="ABUG.group.mkr.2"></para></entry></row>
<row rowsep="1">
<entry><para><!--Original XRef content: 'To Create a Group90'--><xref role="JumpText"
linkend="ABUG.group.mkr.3"></para></entry></row>
<row rowsep="1">
<entry><para><!--Original XRef content: 'To Edit Group Properties91'--><xref
role="JumpText" linkend="ABUG.group.mkr.4"></para></entry></row>
<row rowsep="1">
<entry><para><!--Original XRef content: 'To Ungroup Objects in an Interface92'--><xref
role="JumpText" linkend="ABUG.group.mkr.5"></para></entry></row>
<row rowsep="1">
<entry><para><!--Original XRef content: 'To Create a Border around an Object93'--><xref
role="JumpText" linkend="ABUG.group.mkr.6"></para></entry></row>
<row rowsep="1">
<entry><para><!--Original XRef content: 'Attaching Objects93'--><xref role="JumpText"
linkend="ABUG.group.mkr.7"></para></entry></row>
<row rowsep="1">
<entry><para><!--Original XRef content: 'Attachments Editor94'--><xref role="JumpText"
linkend="ABUG.group.mkr.8"></para></entry></row>
<row rowsep="1">
<entry><para><!--Original XRef content: 'To Attach Objects in an Interface99'--><xref
role="JumpText" linkend="ABUG.group.mkr.9"></para></entry></row>
<row rowsep="1">
<entry><para><!--Original XRef content: 'Attachment Example: Custom Dialog100'--><xref
role="JumpText" linkend="ABUG.group.mkr.10"></para></entry></row></tbody>
</tgroup></informaltable>
<para><indexterm><primary>objects</primary><secondary>grouping and attaching
in one procedure</secondary></indexterm><indexterm><primary>attaching</primary>
<secondary>objects</secondary></indexterm><indexterm><primary>grouping and
attaching objects</primary></indexterm></para>
<sect1 id="ABUG.group.div.2">
<title id="ABUG.group.mkr.2">Grouping Objects</title>
<para>A <emphasis>group</emphasis> is a collection of objects that can be
treated as a unit. Once the objects in a group are positioned as desired,
the group can be moved, maintaining the relative positioning of the individual
objects. Because groups use dynamic layout for positioning objects, spacing
and alignment in the group are maintained if any of the objects in the group
change size.</para>
<para>See <!--Original XRef content: '&xd2;Group Property Editor&xd3; on
page&numsp;144'--><xref role="SecTitleAndPageNum" linkend="ABUG.apRPE.mkr.6">
for a description of the editor and each of its elements</para>
<sect2 id="ABUG.group.div.3" role="Procedure">
<title id="ABUG.group.mkr.3">To Create a Group<indexterm><primary>groups</primary><secondary>creating</secondary></indexterm><indexterm><primary>creating</primary><secondary>groups</secondary></indexterm></title>
<orderedlist>
<listitem><para>Select the control objects you want to be part
of the group.</para>
<para>You can select the objects either in the interface or the Module Browser,
and you can select the objects in whatever manner is most convenient. See
<!--Original XRef content: '&xd2;To
Select Control Objects in the Interface or the Browser&xd3; on page&numsp;24'--><xref
role="SecTitleAndPageNum" linkend="ABUG.layo.mkr.6"> for instructions.</para>
</listitem>
<listitem><para>Choose Group from the Layout menu or the pop-up
menu (displayed by pressing mouse button 3 with the cursor in the window
interface or in the Module Browser).</para>
<para>A rectangular box will be drawn around the group in the interface,
indicating that the group is selected. Note that Ungroup is active in the
Layout and pop-up menus; this is only true when a group is selected.</para>
<para>A new object will be displayed and selected in the Module Browser&mdash;an
object called &ldquo;group&ldquo; (or &ldquo;group2,&ldquo; and so on, if
other groups exist in the module). The group object is the parent of the
objects that comprise the group. Group members cannot be moved independently.
Any attempt to move an object in a group will cause the entire group to move.
</para>
</listitem></orderedlist>
</sect2>
<sect2 id="ABUG.group.div.4" role="Procedure">
<title id="ABUG.group.mkr.4">To Edit Group Properties<indexterm><primary>groups</primary><secondary>editing properties of &lt;$startrange></secondary></indexterm><indexterm><primary>editing</primary><secondary>group properties &lt;$startrange></secondary></indexterm></title>
<para>Group properties, including horizontal or vertical alignment and spacing
between objects, are set in the<indexterm><primary>Group Property Editor &lt;$startrange></primary></indexterm><indexterm>
<primary>property editor</primary><secondary>Group &lt;$startrange></secondary></indexterm> Group Property Editor.</para>
<orderedlist><listitem><para>Double-click the group in the interface or in
the Module Browser.</para>
<para>The group will be selected in the Revolving Property Editor. In the
interface you will have to click in the space <emphasis>between</emphasis>
group members to select the group.</para>
<para>Alternatively, you can display the Group Property Editor by choosing
Groups from the Editors menu of the primary window. Choosing Groups from
the Editors menu is the same as clicking Tear-off in the Revolving Property
Editor with Group chosen as Object Type.</para>
</listitem><listitem><para>Select the group to be edited from the Group Objects
list, if necessary.</para>
</listitem><listitem><para>Type a new name for the group, if necessary.<indexterm>
<primary>groups</primary><secondary>naming</secondary></indexterm><indexterm>
<primary>naming</primary><secondary>groups</secondary></indexterm></para>
</listitem><listitem><para>Choose a border frame style if you want the group
to have a border in the completed interface (no border is the default).<indexterm>
<primary>groups</primary><secondary>setting border frame style for</secondary>
</indexterm><indexterm><primary>border</primary><secondary>setting frame
style for groups</secondary></indexterm><indexterm><primary>setting</primary>
<secondary>border frame style for groups</secondary></indexterm></para>
<para>Border frame style choices are shadow out, shadow in, etched out, etched
in, and none.</para>
</listitem><listitem><para>Select a Layout Type.</para>
<para>Choices are as-is, vertical, horizontal, and row-column.</para>
<para>Depending on what you select, either the Vert Alignment or Horiz Alignment
option menu, or both, will be active. If you select rows-columns, the Rows
and Columns radio buttons will be active, also.</para>
</listitem><listitem><para>Designate the number of Rows or Columns (if row-column
layout was selected).</para>
<para>The number of columns will be determined automatically if you designate
the number of rows, and the number of rows will be determined automatically
if you designate the number of columns.</para>
</listitem><listitem><para>Choose a vertical alignment (if either vertical
alignment or row-column layout type was chosen).</para>
<para>The choices are align on left edge of objects (the default), align on
colons/labels, align on middle of objects, or align on right edge of objects.
</para>
</listitem><listitem><para>Designate vertical spacing (if either vertical
alignment or row-column layout type was chosen).</para>
<para>The absolute values are in pixels; 10 is the default.</para>
</listitem><listitem><para>Choose a horizontal alignment (if either horizontal
alignment or row- column layout type was chosen).</para>
<para>The choices are align on top edge of objects (the default), align on
middle of objects, or align on bottom edge of objects.</para>
</listitem><listitem><para>Designate horizontal spacing (if either horizontal
alignment or row-column layout type was chosen).</para>
<para>The absolute values are in pixels; 10 is the default.</para>
</listitem><listitem><para>Deselect Visible if you do not want the objects
in the group to be visible when the application is opened.</para>
</listitem><listitem><para>Deselect Active if you do not want the objects
in the group to be active when the application is opened.</para>
</listitem><listitem><para>Click OK or Apply to apply the changes.<indexterm>
<primary>Group Property Editor &lt;$endrange></primary></indexterm><indexterm><primary>property editor</primary>
<secondary>Group &lt;$endrange></secondary></indexterm></para>
<para><literal><indexterm><primary>editing</primary><secondary>group properties &lt;$endrange></secondary></indexterm></literal>The
Revolving Property Editor or Group Property Editor will be dismissed if you
click OK.<literal><indexterm><primary>groups</primary><secondary>editing
properties of &lt;$endrange></secondary>
</indexterm></literal></para>
</listitem></orderedlist>
</sect2>
<sect2 id="ABUG.group.div.5" role="Procedure">
<title id="ABUG.group.mkr.5">To Ungroup Objects in an Interface<indexterm><primary>ungrouping objects</primary></indexterm><indexterm><primary>groups</primary><secondary>undoing</secondary></indexterm></title>
<orderedlist><listitem><para>Select the group in the Module Browser or in
the interface.</para>
<para>In the interface, click between objects in a group to select the group.
You will know the group is selected if a box appears around two or more objects.
</para>
<para>If you can't select a group in the interface or if you want to be sure
to select the right group in an interface with many groups, open the Module
Browser. Groups are shown in the Module Browser by name of group; if you
select the group in the Module Browser, it is also selected in the interface.
</para>
</listitem><listitem><para>Choose Ungroup from the Layout menu or the interface
pop-up menu (displayed by pressing mouse button 3 in an interface window).
</para>
<para>The objects are no longer part of the group. You can now select any
of the objects and move it independently of the other objects.</para>
</listitem></orderedlist>
</sect2>
<sect2 id="ABUG.group.div.6" role="Procedure">
<title id="ABUG.group.mkr.6">To Create a Border around an Object<indexterm><primary>border</primary><secondary>creating for single object</secondary></indexterm><indexterm><primary>objects</primary><secondary>creating border for</secondary></indexterm><indexterm><primary>creating</primary><secondary>border on object</secondary></indexterm></title>
<para>The group function can be used to create a border around an individual
object, such as a label.</para>
<orderedlist><listitem><para>Select the object in the interface.</para>
</listitem><listitem><para>Choose Group from the Layout menu or the interface
pop-up menu.</para>
<para>The object will be part of a group.</para>
</listitem><listitem><para>Display the Group Property Editor.</para>
</listitem><listitem><para>Select the group you want to put a border around.
</para>
<para>If you double-click the group in the Module Browser, the Group Property
Editor will be displayed, with the group selected.</para>
</listitem><listitem><para>Choose the Border Frame style you want to add to
the object.</para>
</listitem><listitem><para>Click OK to apply the change and dismiss the Group
Property Editor.</para>
</listitem></orderedlist>
</sect2>
</sect1>
<sect1 id="ABUG.group.div.7">
<title id="ABUG.group.mkr.7">Attaching Objects</title>
<para><indexterm><primary>attachments</primary></indexterm>Attachments (and
groups, which are based on attachments) establish dynamic layout behavior
for objects in the interface. Dynamic layout behavior ensures that objects
will maintain consistent relationships during resize activities. Attachments
enable an internationalized application to work well in a number of locales.
</para>
<para>All child objects are attached by their top and left edges to the top
and left edge of their parent object, by default. Thus a control pane dropped
on a main window is attached by its left and top edges to the left and top
edges of the main window. Similarly, a button dropped on the control pane
is attached to the control pane.</para>
<para>If the parent object is resized in an upward or leftward direction,
the child object moves with the parent, maintaining the distance from the
top and left edge of the parent.</para>
<para>If a pane object is dropped on the top or left edge of its parent it
will be attached to that edge with an offset of 0. If it is dropped some
distance to the right and below the left and top edges of its parent, it
will have positive offsets.</para>
<para>If a pane object is resized from its right and bottom edges so that
it spans its parent object, it will be attached to the right and bottom edges
of its parent.</para>
<sect2 id="ABUG.group.div.8">
<title id="ABUG.group.mkr.8">Attachments Editor</title>
<para>Used to attach objects to each other for layout purposes, the Attachments
Editor is described below.</para>
<graphic id="ABUG.group.igrph.1" entityref="ABUG.group.fig.1"></graphic>
<informaltable>
<tgroup cols="2" colsep="0" rowsep="0">
<colspec align="left" colwidth="136*">
<colspec align="left" colwidth="392*">
<tbody>
<row>
<entry><para>Object Type</para></entry>
<entry><para>An option menu for choosing the type of object for which you
want to make attachments. Some object types (custom dialog, file selection
dialog, main window) do not have parents and are not included in the menu.
</para></entry></row>
<row>
<entry><para>Objects</para></entry>
<entry><para>A scrolling list for selecting the object for which you want
to make attachments.</para></entry></row>
<row>
<entry><para>Parent</para></entry>
<entry><para>A text field that indicates the parent of the selected object.
</para></entry></row>
<row>
<entry><para>Children</para></entry>
<entry><para>A scrolling list that lists the children of the Parent object.
</para></entry></row>
<row>
<entry><para>Parent attachments/Attachments in child</para></entry>
<entry><para>Radio buttons for displaying the attachments of the parent
of the selected object or the attachments of the children of the selected
object.
<?Pub _newline>Some objects (draw area pane, term pane, text pane) cannot
have children and may be children of a main window or custom dialog; thus,
neither Parent attachments nor Attachments in child will be active. If the
pane is a child of another pane, though, or if it is part of a layered pane,
Parent attachments will be active.</para></entry></row>
<row>
<entry><para>Attach To</para></entry>
<entry><para>Option menus for choosing the type of attachment for the selected
object and what to attach the object to. Also includes text fields for specifying
the Offset (in pixels) from the selected object and its parent or sibling
(a sibling is another object with the same parent) or for specifying the
Percentage offset of the selected object from its parent.
<?Pub _newline>The option menu below &ldquo;Attach To:&rdquo; is for choosing
which sibling to attach to and is active only for sibling attachments (two
small squares). The Offset text field is active for absolute (pixel) attachments
only; the Percentage text field is active for percentage attachments only.
<?Pub _newline>The selected object is shown in the center of its four possible
attachments. The attachments, starting at the top and going clockwise, are
top edge of selected object, right edge of selected object, bottom edge of
selected object, and left edge of selected object.
<?Pub _newline>Top- and left-edge attachments are illustrated and described
below; by default an object is attached at its top and left edges to the
top and left edges of its parent. The selected object (the object at the
center of the four Attach To boxes) is the <emphasis>controlling</emphasis>
object: if you move this controlling object, the pixel or percentage offset
is changed; click Reset to see current values after moving an attached object.
<?Pub _newline>If an attached parent object is resized, its child objects
will retain their pixel or percentage offsets from the edges of their parent.
The offsets will change if a child object is moved.
<?Pub _newline>Sibling icons (two small squares) are inactive if the selected
object has no siblings.</para></entry></row>
<row>
<entry><para><inlinegraphic id="ABUG.group.igrph.2" entityref="ABUG.group.fig.2">
</inlinegraphic></para></entry>
<entry><para>An ascending line from the top edge of a small square to the
top edge of its surrounding box represents an absolute (pixel offset) attachment
of the top edge of the selected object to the top edge of its parent.</para></entry>
</row>
<row>
<entry><para><inlinegraphic id="ABUG.group.igrph.3" entityref="ABUG.group.fig.3">
</inlinegraphic></para></entry>
<entry><para>A descending line from the top edge of a small square to the
bottom edge of its surrounding box represents an absolute (pixel offset)
attachment of the top edge of the selected object to the bottom edge of its
parent. This value will be negative, since y values are positive as they
ascend and negative as they descend.</para></entry></row>
<row>
<entry><para><inlinegraphic id="ABUG.group.igrph.4" entityref="ABUG.group.fig.4">
</inlinegraphic></para></entry>
<entry><para>Two vertically-aligned squares connected by a vertical line
represent an absolute (pixel offset) attachment of the top edge of the selected
object to the bottom edge of its sibling. The offset will change if the selected
object is moved. This value will be negative if the top edge of the selected
object is above the bottom edge of its sibling.</para></entry></row>
<row>
<entry><para><inlinegraphic id="ABUG.group.igrph.5" entityref="ABUG.group.fig.5">
</inlinegraphic></para></entry>
<entry><para>Two horizontally-aligned squares connected by a horizontal line
to the centers of their top edges represent an absolute (pixel offset) attachment
of the vertical center of the selected object to the vertical center of
its sibling. The offset will change if the selected object is moved. This
value will be negative if the center of the selected object is above the
center of its sibling.</para></entry></row>
<row>
<entry><para><inlinegraphic id="ABUG.group.igrph.6" entityref="ABUG.group.fig.6">
</inlinegraphic></para></entry>
<entry><para>A square with a two-headed arrow and a percentage sign above
it represents a percentage offset attachment of the top edge of the selected
object to the top edge of its parent. The offset will change if the selected
object is moved.</para></entry></row>
<row>
<entry><para><inlinegraphic id="ABUG.group.igrph.7" entityref="ABUG.group.fig.7">
</inlinegraphic></para></entry>
<entry><para>A square with a percentage sign above it and a two- headed arrow
between the center line of the square and the top of the surrounding box
represents a percentage offset attachment of the center of the selected object
to the top edge of its parent. The offset will change if the selected object
is moved.</para></entry></row>
<row>
<entry><para><inlinegraphic id="ABUG.group.igrph.8" entityref="ABUG.group.fig.8">
</inlinegraphic></para></entry>
<entry><para>A circle with a diagonal line through it represents no attachment
from the edge (top, left, bottom, or right) to another object. By default
a dropped object has no right or bottom edge attachments.</para></entry>
</row>
</tbody></tgroup>
</informaltable>
<note>
<para>Descriptions of the attachments to the bottom edge of the selected
object are correlatives of the descriptions of the top-edge attachments above.
Substitute &ldquo;bottom&rdquo; for &ldquo;top&rdquo; and &ldquo;top&rdquo;
for &ldquo;bottom&rdquo; for bottom-edge attachments. Normally you will
want top- and left-edge attachments only.</para>
</note>
<informaltable>
<tgroup cols="2" colsep="0" rowsep="0">
<colspec align="left" colwidth="100*">
<colspec align="left" colwidth="356*">
<tbody>
<row>
<entry><para><inlinegraphic id="ABUG.group.igrph.9" entityref="ABUG.group.fig.9">
</inlinegraphic></para></entry>
<entry><para>A horizontal line from the left edge of the surrounding box
to the left edge of a small square represents an absolute (pixel offset)
attachment of the left edge of the selected object to the left edge of its
parent. The offset will change if the selected object is moved.</para></entry>
</row>
<row>
<entry><para><inlinegraphic id="ABUG.group.igrph.10" entityref="ABUG.group.fig.10">
</inlinegraphic></para></entry>
<entry><para>A horizontal line from the right edge of the surrounding box
to the left edge of a small square represents an absolute (pixel offset)
attachment of the left edge of the selected object to the right edge of its
parent. The offset will change if the selected object is moved. This value
will be negative, since x values are positive to the left and negative to
the right.</para></entry></row>
<row>
<entry><para><inlinegraphic id="ABUG.group.igrph.11" entityref="ABUG.group.fig.11">
</inlinegraphic></para></entry>
<entry><para>Two horizontally-aligned squares connected by a horizontal line
represent an absolute (pixel offset) attachment of the left edge of the selected
object to the right edge of its sibling. The offset will change if the selected
object is moved. This value will be negative if the left edge of the selected
object is left of the right edge of its sibling.</para></entry></row>
<row>
<entry><para><inlinegraphic id="ABUG.group.igrph.12" entityref="ABUG.group.fig.12">
</inlinegraphic></para></entry>
<entry><para>Two vertically-aligned squares connected by a vertical line
to the centers of their left edges represent an absolute (pixel offset) attachment
of the horizontal center of the selected object to the horizontal center
of its sibling. The offset will change if the selected object is moved.
This icon is inactive if the selected object has no siblings. This value
will be negative if the center of the selected object is left of the center
of its sibling.</para></entry></row>
<row>
<entry><para><inlinegraphic id="ABUG.group.igrph.13" entityref="ABUG.group.fig.13">
</inlinegraphic></para></entry>
<entry><para>A square with a two-headed arrow and a percentage sign above
it represents a percentage offset attachment of the left edge of the selected
object to the left edge of its parent. The offset will change if the selected
object is moved.</para></entry></row>
<row>
<entry><para><inlinegraphic id="ABUG.group.igrph.14" entityref="ABUG.group.fig.14">
</inlinegraphic></para></entry>
<entry><para>A square with a percentage sign to its left and a two- headed
arrow between the center line of the square and the left of the surrounding
box represents a percentage offset attachment of the center of the selected
object to the left edge of its parent. The offset will change if the selected
object is moved.</para></entry></row>
</tbody></tgroup></informaltable>
<note>
<para>Descriptions of the attachments to the right edge of the selected object
are correlatives of the descriptions of the left-edge attachments above.
Substitute &ldquo;right&rdquo; for &ldquo;left&rdquo; and &ldquo;left&rdquo;
for &ldquo;right&rdquo; for right-edge attachments.
Normally you will want top- and left-edge attachments only.</para>
</note>
</sect2>
<sect2 id="ABUG.group.div.9" role="Procedure">
<title id="ABUG.group.mkr.9">To Attach Objects in an Interface<indexterm><primary>objects</primary><secondary>attaching &lt;$startrange></secondary></indexterm><indexterm><primary>attaching</primary><secondary>objects &lt;$startrange></secondary></indexterm></title>
<para>See
<!--Original XRef content: '&xd2;Attachments Editor&xd3; on page&numsp;94'--><xref
role="SecTitleAndPageNum" linkend="ABUG.group.mkr.8"> for an illustration
of the editor and
descriptions of its elements.</para>
<orderedlist>
<listitem><para>Choose Attachments from the Editors menu in the
App Builder primary
window to display the Attachments Editor.</para>
<para>The Attachments Editor can also be displayed by clicking the Attachments
button in a property editor or by choosing Attachments from the interface
or Module Browser pop-up menu.<indexterm><primary>Attachments Editor</primary></indexterm><indexterm><primary>editor</primary><secondary>Attachments</secondary></indexterm>
</para>
</listitem><listitem><para>Choose the object type you want to attach to its
parent or siblings.</para>
</listitem>
<listitem><para>Select the object that you want to attach.</para>
</listitem><listitem><para>Select an attachment type.</para>
<para>If you choose an icon with one small square you are making an attachment
from a child object to its parent. If you choose an icon with two small
squares you are making a sibling attachment. See
<!--Original XRef content: '&xd2;Attachments Editor&xd3; on
page&numsp;94'--><xref role="SecTitleAndPageNum" linkend="ABUG.group.mkr.8">
for descriptions of the types of attachments.</para>
<para>When you make an attachment, the selected object&mdash;the object in
the center of the four Attach To boxes&mdash;is the controlling object. That is, this
object can be moved without affecting its parent or sibling. The offset value or
percentage value will change to reflect the changed relationship between the
two objects.</para>
<para>On the other hand, if you move the other object&mdash;the object to
which the selected object is attached&mdash;the selected object will move so as to maintain
its relationship with the other object.</para>
<para>You may have to click Reset after moving an object in the interface
before the change is noted in the Attachments Editor.</para>
</listitem>
<listitem><para>Click OK or Apply to apply the changes.</para>
<para><indexterm><primary>objects</primary><secondary>attaching &lt;$endrange></secondary></indexterm>If you click
OK, the Attachments Editor will be dismissed.<indexterm><primary>attaching</primary><secondary>objects &lt;$endrange></secondary></indexterm></para>
</listitem></orderedlist>
</sect2>
</sect1>
<sect1 id="ABUG.group.div.10">
<title id="ABUG.group.mkr.10">Attachment Example: Custom Dialog</title>
<para>Drag and drop an App Builder custom dialog object to see an example
of
attachments. Each of the buttons at the bottom of the custom dialog are
attached to the top and sides of their enclosing dialog panel. They are attached
five pixels from the top of the panel and varying percentages from the left
edge of the panel (Button1 left edge 10%, right edge 30%; Button2 40% and 60%;
Button3 70% and 90%).</para>
<para>The left edge of Button1 will always be 10% from the edge of the panel
and the right edge of Button1 will always be 30% from the edge of the panel. Button1
will therefore always be as wide as 20% of the total width of the panel.
Button2's edges are 40% and 60% from the left edge of the panel; Button3's
edges are 70% and 90% from the left edge of the panel.</para>
<para>The three buttons will grow and shrink as the panel grows and shrinks,
and the distance between them will always be 10% of the total width of the panel.
</para>
</sect1>
</chapter>
<!--fickle 1.14 mif-to-docbook 1.7 01/02/96 10:11:44-->
<?Pub *0000034230>
