Предоставляет модальный дилоговый блок, когда AllowModalMessages установлен в True (.T.), в противном случае вызывает DoStatus.

oReportListener.DoMessage(cMessage[,nParams[,cTitle])

Параметры

cMessage

Указывает сообщение, отображаемое объектом ReportListener для обеспечения работы механизма обратной связи с пользователем.

nParams

Численное значение, определяющее аттрибуты диалогового блока, идентичные значениям аттрибутов, используемых в функции MESSAGEBOX().

cTitle

Определяет заголовок окна диалогового блока. Подобдно аналогичному параметру в функции MESSAGEBOX(), значением по умочанию является выражение "Microsoft Visual FoxPro", если вы не укажете текст заголовка.

Expand imageВозвращаемое значение

Нет.

Expand imageПримечания

Применяется к объекту: ReportListener.

Базовый класс объекта ReportListener использует диалоговый блок MESSAGEBOX для предоставления модальной обратной связи. Его второй и третий параметр идентичны параметрам, используемым в функции MESSAGEBOX(). Для получения более подробной информации смотрите описание функции MESSAGEBOX().

Если вы перепишите этот метод или что-то добавите в него, вы должны соблюдать те же самые соглашения по параметрам, точно так же, как и дополнительные требования интерфейса устанавливаемые базовым классов: примите во внимание значения свойствя AllowModalMessages и QuietMode при оценке - какой тип обратной связи должен отобразить этот метод. Для более подробной информации смотрите описания функции MESSAGEBOX() и свойства QuietMode.

В отличие от функции MESSAGEBOX(), базовый класс ReportListener не имеет четвертого аргумента, указывающего численное значение для Timeout, и не имеет механизма, отвечающего за возвращаемое значение. В классе, производном от ReportListener, однако, вы можете кооптировать включение этой функционильности и вы можете выбрать, как вы желаете обработать ответ пользователя.

Например, фундаментальный класс ReportListener User Feedback использует измененную версию этого метода, позволяющего пользователю прекратить испольнение отчета на полпути.

Expand imageПример

The following code shows the way ReportListener User Feedback Class invokes DoMessage to allow users to cancel a report. This class leverages the version of DoMessage implemented by ReportListener Base Foundation Class, its parent. The enhanced method provides a suitable return value, so the User Feedback Class can respond to the user's choice. ReportListener Base Foundation Class's implementation of the DoMessage method is also shown below.

NoteTip

Notice that ReportListener Base Foundation Class provides a consistent numeric value for the second parameter when it invokes MESSAGEBOX. If you use the baseclass ReportListener's DoMessage method, and if you do not need to specify dialog box attributes but wish to provide a custom dialog box caption, you should provide a value of 0 for the second parameter, similar to what you see in this example. If you specify a non-numeric value for this parameter (such as .F.), an error occurs.

Приведенный ниже пример показывает путь, с помощью которого класс ReportListener User Feedback Classвызывает метод DoMessage, позволяя пользователю прекратить выполнение отчета. Этот класс усиливает версию DoMessage, предоставляемую базовым фундаментальным классом ReportListener, его прародителем. Расишренный метод предоставляет подходящее возвращаемое значение так, что класс User Feedback может ответить на выбор пользователя..Совет Отметьте, что фундаментальный базовый класс ReportListener предоставляет согласующееся численное значение для второго параметра, когда он вызывает Если вы используете метод DoMessage базового класса ReportListener и если вам не требуется указывать аттрибуты диалогового блока, но вы желаете предоставить свой заголовок блока, то второму параметру метода вы должны послать значение , аналогично тому, как это показано в примере. Если вы укажете для этого параметра нечисленное значение, будет сгенерирована ошибка.
  CopyCode imageСкопировать код
* UpdateListener class 
* (ReportListener User Feedback Foundation Class)
PROCEDURE CancelReport
   IF THIS.IsRunning AND ;
      (THIS.QuietMode OR ;
       (NOT THIS.AllowModalMessages) OR ;
        THIS.DoMessage(;  
             OUTPUTCLASS_REPORT_CANCELQUERY_LOC, ;
             MB_ICONQUESTION+MB_YESNO) =  IDYES )
      DODEFAULT() 
      IF SYS(2024) = "Y"
         THIS.ThermForm = NULL
         THIS.DoMessage(OUTPUTCLASS_REPORT_INCOMPLETE_LOC, ;
                        MB_ICONEXCLAMATION)
      ENDIF
   ELSE
      NODEFAULT   
   ENDIF
ENDPROC

* _ReportListener class 
* (ReportListener Base Foundation Class)
PROCEDURE DoMessage(cMessage,iParams,cTitle)
   NODEFAULT
   IF THIS.QuietMode OR ;
   (THIS.IsRunning AND THIS.CommandClauses.NoDialog)
   * для подражания поведению базового класса, сделайте обе проверки,
   * в случае если вызов метода DoMessage() случился до того,
   * как базовый класс установил QuietMode .T. в ответ на 
   * установку NoDialog в начале испольнения отчета,
   * или после того, как базовый класс переустановил QuietMode в .F.
   * в конце исполнения отчета.
      RETURN 0
   ELSE
      IF THIS.AllowModalMessages
         IF VARTYPE(cTitle) = "C"
            RETURN ;
            MESSAGEBOX(TRANS(cMessage), ;
                       VAL(TRANS(iParams)),cTitle)
         ELSE
            RETURN  ;
            MESSAGEBOX(TRANS(cMessage), ;
                       VAL(TRANS(iParams)),THIS.AppName)
         ENDIF
      ELSE
         THIS.DoStatus(cMessage)
         RETURN 0
      ENDIF
   ENDIF   
ENDPROC

Expand imageСмотрите также