code: public boolean handleCommand(String strCommand, ScreenField sourceSField, int iUseSameWindow)
      {
          boolean bHandled = this.doCommand(strCommand, sourceSField, iUseSameWindow);   // Do I handle it?
  
          if (bHandled == false)
          {   // Not handled by this screen, try child windows
              for (int iFieldSeq = 0; iFieldSeq < this.getSFieldCount(); iFieldSeq++)
              {   // See if any of my children want to handle this command
                  ScreenField sField = this.getSField(iFieldSeq);
                  if (sField != sourceSField)   // Don't call the child that passed this up
                  {
                      bHandled = sField.handleCommand(strCommand, this, iUseSameWindow);  // Send to children (make sure they don't call me)
                      if (bHandled)
                          return bHandled;
                  }
              }
          }
          if (bHandled == false)
              bHandled = super.handleCommand(strCommand, sourceSField, iUseSameWindow); // This will send the command to my parent
          return bHandled;
      }
docs: Process the command.
  Step 1 - Process the command if possible and return true if processed.
  Step 2 - If I can't process, pass to all children (with me as the source).
  Step 3 - If children didn't process, pass to parent (with me as the source).
  Note: Never pass to a parent or child that matches the source (to avoid an endless loop).
  @param strCommand The command to process.
  @param sourceSField The source screen field (to avoid echos).
  @param iUseSameWindow If this command creates a new screen, create in a new window?
  @return true if success.