Try OpenEdge Now
skip to main content
ABL Reference
ABL Syntax Reference : HIDE statement

HIDE statement

Makes a widget invisible (sets its VISIBLE attribute to FALSE), or clears the message area for a window, or hides all widgets and clears messages in a window.
Note: Does not apply to SpeedScript programming.


HIDE [ STREAM stream | STREAM-HANDLE handle ]
[widget-phrase | MESSAGE | ALL ]
[ IN WINDOW window ]
STREAM stream
Specifies the name of a stream. If you do not name a stream, the AVM uses the unnamed stream.
Specifies the handle to a stream. If handle it is not a valid handle to a stream, the AVM generates a run-time error. Note that stream handles are not valid for the unnamed streams. See the chapter on alternate I/O sources in OpenEdge Development: Programming Interfaces for more information on streams and stream handles.
The widget you want to hide. You can hide windows, frames, and field-level widgets. You cannot hide menus. If you do not use this option or the MESSAGE or ALL options, HIDE hides the default frame for the block that contains the HIDE statement.
Hides all messages displayed in the message area for the specified window. If you use the PUT SCREEN statement to display data in the message area, the HIDE MESSAGE statement does not necessarily hide that data.
Hides all widgets in the window and clears the message area for the window.
Does not pause before hiding. Ordinarily, if data has been displayed, but there have been no data entry operations or pauses, the AVM prompts you to press SPACEBAR to continue before hiding the widget.
IN WINDOW window
Specifies which window the HIDE statement acts on. The value window must evaluate to the handle of a window. If you do not use the IN WINDOW option, the current window is assumed.


The following example uses the HIDE statement to hide selected frames. The DISPLAY statements re-display the frames when the loop iterates.

  "Please Make A Selection:" SKIP(2)
  " 1. Hide Frame A. " SKIP
  " 2. Hide Frame B. " SKIP
  " 3. Hide All. " SKIP
  " 4. Hide This Frame " SKIP
  " 5. Exit " SKIP(2)

  DISPLAY "This is frame A."
  DISPLAY "This is frame B."
  MESSAGE "Make your selection!".
  UPDATE "Selection: " selection VALIDATE(0 < selection AND selection < 7,
    "Invalid selection") AUTO-RETURN

       IF selection = 1 THEN HIDE FRAME a.
  ELSE IF selection = 2 THEN HIDE FRAME b.
  ELSE IF selection = 3 THEN HIDE ALL.
  ELSE IF selection = 4 THEN HIDE FRAME x.
  ELSE IF selection = 5 THEN LEAVE.


*When a block iterates, any display frame that is scoped to the block or to a nested block is tagged for hiding (unless you have used the NO-HIDE option in the Frame phrase), but is not hidden. Then, the first frame activity of the next iteration (a DISPLAY, INSERT, PROMPT-FOR, SET, VIEW, or UPDATE statement) for a frame scoped to the block or to a nested block causes all tagged frames to be hidden.
The frame associated with that first frame activity is not hidden because it would be redisplayed immediately. This improves display time. When a block ends, the AVM removes the hide tags from all the frames scoped to that block or to nested blocks.
*Frames displayed by procedures within a block or within a nested block are treated the same as other frames in a nested block.
*When the AVM displays a frame and there is not enough room in the window, it automatically hides one or more frames. Frames are hidden one at a time, starting with the lowest frame in the window, until there is room to fit the new frame.
*It is more efficient to HIDE ALL than to HIDE each frame individually.
*If you hide a PAGE-TOP or PAGE-BOTTOM frame, it is removed from the list of active frames for printing at the top or bottom of each page.
*If you are working in a PAGE-TOP or PAGE-BOTTOM frame, use the VIEW or DISPLAY statement to activate that frame. The VIEW statement does not display a PAGE-TOP or PAGE-BOTTOM frame. It activates the frame so that when a new page begins or ends, the AVM displays the frame. If you use the HIDE statement to hide a PAGE-TOP or PAGE-BOTTOM frame, the AVM deactivates that frame so that it can no longer be displayed unless it is reactivated with a VIEW or DISPLAY statement.
*If output is not directed to the terminal, HIDE has no effect on the terminal display.
*In batch mode, the HIDE statement produces an error. If you want to remove the contents of a frame, use the CLEAR statement instead.
*You can use HIDE MESSAGE to hide a message.
*If you invoke the HIDE statement for a field-level widget or child frame, the HIDDEN attribute of the specified field-level widget or child frame is also set to TRUE. However, if you invoke the HIDE statement for a child window, the HIDDEN attribute of the child window is unaffected.
*When you HIDE a visible window, any visible descendant windows are hidden also (including iconified descendants), but any visible ancestor windows remain unaffected. However, if you HIDE a window whose HIDDEN attribute is currently set to TRUE, its descendant windows remain unaffected.

See also

CLEAR statement, VIEW statement, Widget phrase, Stream object handle