Progress
Language Reference


DISABLE Statement

Interfaces
OS
SpeedScript
All
All
Yes

Disables input for one or more field-level and child frame widgets within a frame that were previously enabled with the ENABLE statement. Disabling a widget prevents the user from providing input to the widget, but does not remove it from the display.

SYNTAX

DISABLE [ UNLESS-HIDDEN ]
  {     ALL [ EXCEPT field ... ]
     |  { field [ WHEN expression ] } ...
  }
  { [ frame-phrase ] } 

UNLESS-HIDDEN

Restricts DISABLE to fields whose HIDDEN attribute is FALSE.

ALL [ EXCEPT field ... ]

Specifies that all field-level widgets for a frame should be disabled, except those that you optionally specify.

field [ WHEN expression ]

A field-level widget to be disabled. If you use the WHEN option, then the field is disabled only if expression is TRUE when the DISABLE statement is executed. The expression must evaluate to a LOGICAL value.

frame-phrase

The frame that contains the widgets to disable. If you omit frame-phrase, the default frame for the current block is assumed.

You cannot use the IN WINDOW option of the frame phrase within a DISABLE statement. For more information on frame-phrase, see the Frame Phrase reference entry.

EXAMPLE

In the following example, the cust-num field and the Quit button are initially active. When you press GO in the cust-num field, that field becomes disabled and the Save and Undo buttons and the credit-limit field are enabled. If you choose either the Save or Undo button, those buttons and the credit-limit field are again disabled and the cust-num field is enabled again.

r-enable.p
DEFINE VARIABLE ok AS LOGICAL NO-UNDO.

DEFINE BUTTON b_quit LABEL "Quit" AUTO-ENDKEY. 
DEFINE BUTTON b_save LABEL "Save".
DEFINE BUTTON b_undo LABEL "Undo".DEFINE FRAME butt-frame
  b_save b_undo b_quit
  WITH CENTERED ROW SCREEN-LINES - 1.
  
FORM
  customer
WITH FRAME cust-info SIDE-LABELS CENTERED
     TITLE "Update Customer Credit Limit".

ON CHOOSE OF b_save, b_undo IN FRAME butt-frame
DO:
  DISABLE b_save b_undo WITH FRAME butt-frame.
  DISABLE customer.credit-limit WITH FRAME cust-info.
  ENABLE customer.cust-num WITH FRAME cust-info.
  IF SELF:LABEL = "save" THEN
    ASSIGN FRAME cust-info customer.credit-limit.
  CLEAR FRAME cust-info NO-PAUSE.
  APPLY "ENTRY" TO customer.cust-num IN FRAME cust-info.
END.ON GO OF customer.cust-num IN FRAME cust-info
DO:
  FIND customer USING customer.cust-num EXCLUSIVE NO-ERROR.
  IF AVAILABLE(customer) THEN
  DO:
    DISABLE customer.cust-num WITH FRAME cust-info.
    ENABLE customer.credit-limit WITH FRAME cust-info.
    ENABLE ALL WITH FRAME butt-frame.
    DISPLAY customer WITH FRAME cust-info.
  END.
  ELSE
  DO:
     MESSAGE "No Customer Record exist for customer number"
             INPUT customer.cust-num ", Please re-enter."
       VIEW-AS ALERT-BOX WARNING BUTTONS OK-CANCEL UPDATE OK.
    IF NOT ok THEN
      APPLY "CHOOSE" TO b_quit IN FRAME butt-frame. 
  END.
END.

ENABLE customer.cust-num WITH FRAME cust-info.
ENABLE b_quit WITH FRAME butt-frame.
WAIT-FOR CHOOSE OF b_quit IN FRAME butt-frame
   FOCUS customer.cust-num IN FRAME cust-info.  

NOTE

If you invoke the DISABLE statement for the parent frame of a frame family, the field representation widgets and descendant frames owned by the parent frame are all disabled. However, the field representation widgets of the descendant frames remain enabled and appear sensitive, although they cannot accept input. To disable field representation widgets in the descendant frames and make them appear insensitive, you must invoke DISABLE statements for each of the descendant frames.

SEE ALSO

ENABLE Statement, WAIT-FOR Statement


Copyright © 2004 Progress Software Corporation
www.progress.com
Voice: (781) 280-4000
Fax: (781) 280-4095