code: public boolean doCommand(String strCommand, ScreenField sourceSField, int iCommandOptions)
      {
          if (strCommand.equalsIgnoreCase(MenuConstants.FORMDETAIL))
          { // Make sure if the use wants to select a record to re-connect the selection
              Record targetRecord = null;
              int iMode = ScreenConstants.DETAIL_MODE;
              OnSelectHandler listener = (OnSelectHandler)this.getMainRecord().getListener(OnSelectHandler.class);
              if (listener != null)
              {
                  targetRecord = listener.getRecordToSync();
                  this.getMainRecord().removeListener(listener, false);
                  iMode = iMode | ScreenConstants.SELECT_MODE;
              }
              BasePanel screen = this.onForm(null, iMode, true, iCommandOptions, null);
              if (targetRecord != null)
                  screen.setSelectQuery(targetRecord, false);
              return true;
          }
          else
              return super.doCommand(strCommand, sourceSField, iCommandOptions);
      }
docs: Process the command.
  <br />Step 1 - Process the command if possible and return true if processed.
  <br />Step 2 - If I can't process, pass to all children (with me as the source).
  <br />Step 3 - If children didn't process, pass to parent (with me as the source).
  <br />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 iCommandOptions If this command creates a new screen, create in a new window?
  @return true if success.