The AT phrase of the Format phrase allows explicit positioning
of frame objects, either by row and column or by pixels. The AT phrase
of the Frame phrase allows explicit positioning of frames with windows or
parent frames.
Syntax
AT { COLUMN column | COLUMN-OF reference-point }
{ ROW row | ROW-OF reference-point }
[ COLON-ALIGNED | LEFT-ALIGNED | RIGHT-ALIGNED ]
|
AT { X x | X-OF reference-point }
{ Y y | Y-OF reference-point }
[ COLON-ALIGNED | LEFT-ALIGNED | RIGHT-ALIGNED ]
|
-
n
- The column, measured in character units. This option is not supported
for the Frame phrase. You cannot use the alignment options with
this syntax. If you use this option, the AVM chooses the row based
on the previous widget and form item layout of the frame. For information
on form items, see the DEFINE FRAME statement or FORM statement.
- COLUMN column
- The column, measured in character units.
- COLUMN-OF reference-point
- Indicates the column position of the field relative to another field-level widget
previously defined in the frame. This option is not supported for the Frame
phrase. This is the syntax for reference-point:
widget [ { + | - } offset ]
|
In this syntax, widget is a reference to a field-level
widget previously defined in the frame, and offset is a positive
decimal value. For example, if widget is positioned at COLUMN 10,
then COLUMN-OF widget + 2.5 positions the field at column 12.5.
- X x
- The X pixel coordinate.
- X-OF reference-point
- Indicates the X co-ordinate of the field relative to another
field-level widget previously defined in the frame. This option
is not supported for the Frame phrase. The co-ordinate is
expressed as the co-ordinate of a widget previously defined in the
frame, plus or minus an offset. The offset must be either a constant
or preprocessor constant and must be a positive integer.
- ROW row
- The row, measured in character units.
- ROW-OF reference-point
- Indicates the row of the field relative to another field-level
widget previously defined in the frame. This option is not supported
for the Frame phrase. The row is expressed as the row of a widget
previously defined in the frame, plus or minus an offset. The offset
must be either a constant or preprocessor constant and must be a
positive decimal value.
- Y y
- The Y pixel coordinate.
- Y-OF reference-point
- Indicates the Y co-ordinate of the field relative to another
field-level widget previously defined in the frame. This option
is not supported for the Frame phrase. The co-ordinate is
expressed as the co-ordinate of a widget previously defined in the
frame, plus or minus an offset. The offset must be either a constant
or preprocessor constant and must be a positive integer.
- COLON-ALIGNED | LEFT-ALIGNED | RIGHT-ALIGNED
- Specifies whether to align the left edge of the field, right
edge of the field, or the colon of the field label, with the specified
position. This option can only be used in combination with the ROW
and COLUMN options. This option is not supported for the
Frame phrase.
Note: For r-code that is compiled with -nocolon in
effect, the COLON-ALIGNED option will align on the last character
of the field label. See the OpenEdge Deployment: Startup Command
and Parameter Reference for more information on -nocolon .
Examples
The
following example uses the AT phrase to position fields within a frame.
r-at.p
DEFINE FRAME order-info
Order.CustNnum AT ROW 2 COLUMN 8
Customer.Name AT ROW 2 COLUMN 18
Order.OrderNum AT ROW 2 COLUMN 50
Order.OrderDate AT ROW 2 COLUMN 65
WITH TITLE "Order Information".
FOR EACH Order NO-LOCK BREAK BY Order.CustNum WITH FRAME order-info:
IF FIRST-OF(Order.CustNum) THEN DO:
FIND Customer OF Order NO-LOCK.
DISPLAY Order.CustNum Customer.Name.
END.
DISPLAY Order.OrderNum Order.OrderDate.
END.
|
The following example uses relative positioning
to position fields relative to the CustNum field.
r-at1.p
DEFINE FRAME order-info
Order.CustNum AT X 50 Y 14
Customer.Name AT X-OF Order.CustNum + 100 Y 14
Order.OrderNum AT X-OF Order.CustNum + 225 Y 14
Order.OrderDate AT X-OF Order.CustNum + 320 Y 14
WITH TITLE "Order Information" NO-LABELS.
FOR EACH Order NO-LOCK
BREAK BY Order.CustNum WITH FRAME order-info:
IF FIRST-OF(Order.CustNnum) THEN DO:
FIND Customer OF Order NO-LOCK.
DISPLAY Order.CustNum Customer.Name.
END.
DISPLAY Order.OrderNum Order.OrderDate.
END.
|
Notes
- The
AT phrase does not left justify the data. It simply specifies the
position of the data area. If the data is right justified it may
appear to be farther right than you expect.
- If you position a child frame completely outside the virtual
area of its parent frame, the AVM raises ERROR at run time when
the frame is realized.
- For SpeedScript, you can position objects by row or column,
not by pixels.