These attributes affect the appearance of the object:

  • HIDDEN — If this LOGICAL attribute is true, then the object is hidden and does not appear even when its container is displayed. If it is false, then the object does appear when its container is displayed. If you set the HIDDEN attribute of a container object, such as a window or frame, to true, then the container and all the objects in it are hidden. If you set it to false for a container, then the container and any contained objects that are not themselves hidden appear. This is an attribute you can set only at run time. The definition of an object cannot describe it as initially hidden.
  • VISIBLE — This LOGICAL attribute is not simply the opposite of HIDDEN. Its relation to HIDDEN can be somewhat confusing to understand. Generally, you use it much less than the HIDDEN attribute. Setting the VISIBLE attribute of an object to true forces it to be viewed. For example, setting the VISIBLE attribute of a field-level object in a window to true forces the window to be displayed even if it was previously hidden. By contrast, setting the HIDDEN attribute to false does not force the container to be viewed. You can read all the details of the effects of the VISIBLE attribute in the ABL Reference.
  • SENSITIVE — This LOGICAL attribute determines whether an object is enabled for input or not. Its use is parallel to the ENABLE verb. That is, executing an ENABLE statement for an object is the same as setting its SENSITIVE attribute to true. Similarly, executing a DISABLE statement for an object is the same as setting its SENSITIVE attribute to false. As with the HIDDEN attribute, you can set the SENSITIVE attribute only at run time. This means that if you check the Enable toggle box or the Display toggle box on or off in the AppBuilder property sheet for an object when you are building a screen, you do not change the DEFINE statement the AppBuilder generates for the object. Rather you change the ENABLE and DISPLAY statements the AppBuilder generates that execute when the window is initialized.
  • READ-ONLY — This LOGICAL attribute applies to data-representation objects and prevents the user from modifying the field value. Sometimes you might want to combine setting the Enable toggle box in a field’s property sheet with setting the READ-ONLY attribute to true. This gives a fill-in field some of the appearance of an enabled field (with its characteristic box outline, which can improve readability), but prevents the user from changing it. The CustOrders window uses this form for its Customer fill-ins.
  • HELP — This is the help text to display when the object is selected.
  • TOOLTIP — This is the text to display when the user hovers the mouse over the object. For data-representation objects, you can initialize the ToolTip text in the frame definition for the object, such as in this excerpt from the frame definition for the CustOrders window:
    DEFINE FRAME CustQuery
        .
        .
        .
    Customer.City AT ROW 7.19 COL 13 COLON-ALIGNED
        VIEW-AS FILL-IN
        SIZE 27 BY 1 TOOLTIP "Enter the City"
        .
        .
        .
    For other types of objects, you can specify the ToolTip text as part of the object definition, as in this button definition:
    DEFINE BUTTON BtnFirst
        LABEL "First"
        SIZE 15 BY 1.14 TOOLTIP "Press this to see the first Customer.".
  • LABEL — This CHARACTER attribute is the label of the field or button.
  • SELECTABLE — You can set up most visual objects for direct manipulation. This means that the user can actually select, move, and resize the object at run time just as you can move and resize objects in a design window in the AppBuilder. The AppBuilder uses these attributes to provide you with the behavior you see in a design window, where you can drag objects around to where you want them. The SELECTABLE attribute is a LOGICAL value which, if true, allows the user to select the object by clicking on it with the mouse. It then sprouts the characteristic resize handles around the object border that let the user size or move it.
  • RESIZABLE — You can set this LOGICAL attribute to true to let a user change the size of an object at run time. You must also set the SELECTABLE attribute to true to provide the resize handles.
  • MOVABLE — You can set this LOGICAL attribute to true to let a user move an object at run time. You do not need to set the SELECTABLE attribute to make an object movable. The user can move the object without using its resize handles. However, it is considered a more standard user provision to set SELECTABLE along with MOVABLE.