Try OpenEdge Now
skip to main content
ABL Reference
ABL Syntax Reference : AT phrase
 

AT phrase

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 ]
AT n
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.

See also

DEFINE FRAME statement, FORM statement, Frame phrase