Main Content

本页采用了机器翻译。点击此处可查看英文原文。

显示进度和调试器消息

报告生成消息

DOM API 包含一组可在生成报告时显示的消息。在报告生成过程中每次创建或追加文档元素时都会触发消息。

您可以定义在报告生成期间显示的其他消息。DOM API 提供了以下类来定义消息:

  • ProgressMessage

  • DebugMessage

  • WarningMessage

  • ErrorMessage

DOM API 提供了用于处理报告消息分发和显示的附加类。它使用 MATLAB® 事件和侦听程序来发送消息。根据指定 DOM 对象的事件数据发送消息。有关事件和侦听程序的介绍,请参阅 事件和侦听程序概念

注意

当您创建消息调度程序时,DOM API 会保留该调度程序直到当前 MATLAB 会话结束。删除消息事件侦听程序,以避免在 MATLAB 会话期间重复报告消息对象。

显示 DOM 默认消息

此示例显示如何显示默认的 DOM 调试消息。使用类似的方法显示其他类型的 DOM 报 告消息。

  1. 使用 MessageDispatcher.getTheDispatcher 方法创建消息调度程序。对所有消息使用相同的调度程序。

    dispatcher = MessageDispatcher.getTheDispatcher;
    
  2. 使用 MessageDispatcher.Filter 属性指定显示调试消息。

    dispatcher.Filter.DebugMessagesPass = true;
    
  3. 使用 MATLAB addlistener 函数添加侦听程序。指定调度程序对象、源和事件数据以及指定用于消息的事件数据和格式的 disp 函数。

    l = addlistener(dispatcher,'Message', ...
          @(src, evtdata) disp(evtdata.Message.formatAsText));
    
  4. 包含删除侦听程序的代码。将其放置在生成报告的代码之后。

    delete(l);
    

此报告显示调试消息。

import mlreportgen.dom.*;
d = Document('test','html');

dispatcher = MessageDispatcher.getTheDispatcher;
dispatcher.Filter.DebugMessagesPass = true;

l = addlistener(dispatcher,'Message', ...
      @(src, evtdata) disp(evtdata.Message.formatAsText));

open(d);

p = Paragraph('Chapter ');
p.Tag = 'chapter title';
p.Style = { CounterInc('chapter'),...
    CounterReset('table'),WhiteSpace('pre') };
append(p, AutoNumber('chapter'));
append(d,p);

close(d);
rptview('test','html');
     
delete(l);

创建并显示进度消息

此示例显示如何创建和发送进度消息。您可以对其他类型的消息(例如警告)使用类似的方法。

  1. 创建消息调度程序。

    dispatcher = MessageDispatcher.getTheDispatcher;
    
  2. 使用 MATLAB addlistener 函数添加侦听程序。

    l = addlistener(dispatcher,'Message', ...
          @(src, evtdata) disp(evtdata.Message.formatAsText));
    
  3. 使用 Message.dispatch 方法发送消息。指定调度程序对象和要调度的消息。这里的消息是一个名为 starting chapter 的调试消息,而 Document 对象 d 是该消息的来源。

    dispatch(dispatcher,ProgressMessage('starting chapter',d));
    
  4. 在生成报告的代码之后,包含删除侦听程序的代码。

    delete(l);
    

本报告使用此进度消息。

import mlreportgen.dom.*;
d = Document('test','html');

dispatcher = MessageDispatcher.getTheDispatcher;

l = addlistener(dispatcher,'Message', ...
      @(src, evtdata) disp(evtdata.Message.formatAsText));

open(d);
dispatch(dispatcher,ProgressMessage('starting chapter',d));

p = Paragraph('Chapter ');
p.Tag = 'chapter title';
p.Style = { CounterInc('chapter'),...
    CounterReset('table'),WhiteSpace('pre') };
append(p, AutoNumber('chapter'));
append(d,p);

close(d);
rptview('test','html');
     
delete(l);

MATLAB 命令窗口显示进度消息,包括 starting chapter 消息和 DOM API 默认调度的消息。

另请参阅

函数