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 が既定で送信するメッセージを含む、進行状況メッセージが表示されます。

参考

関数

クラス