none
infopathでの改行方法について RRS feed

  • 質問

  • infopathにいてボタンを押すと、リッチテキストコントロール内で現在時刻の文字列が

    結合されるフォームを作成しています。

    文字列を結合する前に改行をしたいと考えておりますが、動作規則内に

    どのように設定を行えば宜しいかご教授頂ければと思います。

    「作成した動作規則」

    concat(フィールド2, now())

     

    こちらのサイトを参考にさせて頂きますと、改行コード("%0D%0A")を

    利用すれば実現できるようなのですが、concat関数内でどのように

    扱えば良いのか試行錯誤しておりますが、なかなか実現できない状況です。

    http://blogs.msdn.com/saikik/archive/2008/11/22/infopath-to-cc.aspx

    初歩的な質問となり、申し訳ありませんがご教授頂ければと思います。

    2010年5月7日 6:50

回答

  • ふと思いついて、試行錯誤してみたところ、出来てしまいました(汗)

    とはいっても、コード(Jscript)を利用しています。

    しかし、それほど難しいことはしていません。

    よろしければご参考まで。

    プログラム的にリッチテキスト領域に改行を挿入する


    saruhiko
    2010年5月9日 11:49
  • ご参照されている blog の記事は、InfoPath から Mail を呼び出し、宛先、件名、本文をいれる
    方法を提示しています。
    InfoPath フォームの本文(body) 入力フィールドが「本文」という1単語だけの1行テキストに
    なっていますが、あの部分をマルチラインテキストやリッチテキストにして %0D%0A をいれる
    ことで、Outlook の body で改行されます、という意味になっていますね。

    で、これは初歩的な問題ではないですよ。

    実はリッチテキストコントロール内での改行は結構難しいみたいです。
    改行コードは引き継がれないため、VSTA などをつかったコーディングが必要になります。

    参考: InfoPath のリッチテキストコントロールで自動的に文字列を改行する方法
    (クリエ・イルミネート ブログ。。。 実は参照されているブログを書いた人と同一人物です)

    リッチテキストコントロールでなく、テキストボックスで [マルチライン] を使ったものであれば、
    VSTA によるコーディングなしに改行をいれることが可能になります。

    マルチライン(複数行テキストボックス)の設定はテキスト ボックスのプロパティの [表示] タブ
    から [マルチライン] をチェックすると、複数行可能なテキスト ボックスになります。

    1) 以下が記述された xml ファイルを作成して、newline.xml として UTF-8 で保存。

    <?xml version="1.0"?>
    <linebreaks>
         <newLine>&#xA;</newLine>
    </linebreaks>

    2) 作成してる InfoPath フォームのメニューバーの [ツール] から [リソース ファイル] を
    選択し、上の newline.xml を追加する。

    3) [ツール] - [データ接続] で [追加] をクリックし、データ接続ウィザードで、
    - データの受信 をチェック
    - XML ドキュメント チェック
    - [リソース ファイル] ボタンをクリック、newline.xml がハイライトになっている状態で OK.
    - 完了
    これで newline.xml をセカンダリ データ ソースとして参照することができます。

    4) マルチライン テキスト ボックスに表示させるための動作規則で、上の例でいうと

    concat( ダブルクリックしてフィールドを挿入してください, ダブル....)

    で、最初の引数の部分をダブルクリックして、[データ ソース] で [newline(セカンダリ)]を
    選び、[newLine] を選択し、OK を押します。すると、以下のようになります。

    concat(newLine, ダブルクリックしてフィールドを挿入してください, ダブルクリックしてフィールドを挿入してください)

    newLine が改行を表します。結合前に改行、、、ってこういうことなんでしょうか。
    あとは、フィールド2 と now() を入れれば、ご希望の表示ができるかと思います。
    リッチテキストコントロールでは、この方法も無効になりますね。他にやり方があれば
    いいんですが。。。

    この情報は、弊社内での検証と、以下のフォーラムを参考にしています。

    参照: InfoPath Dev Forum - Line Break

    ご参考になれば。


    Shigeru NUMAGUCHI Director CRIE-ILLUMINATE INC. (JAPAN)
    2010年5月7日 12:52

すべての返信

  • ご参照されている blog の記事は、InfoPath から Mail を呼び出し、宛先、件名、本文をいれる
    方法を提示しています。
    InfoPath フォームの本文(body) 入力フィールドが「本文」という1単語だけの1行テキストに
    なっていますが、あの部分をマルチラインテキストやリッチテキストにして %0D%0A をいれる
    ことで、Outlook の body で改行されます、という意味になっていますね。

    で、これは初歩的な問題ではないですよ。

    実はリッチテキストコントロール内での改行は結構難しいみたいです。
    改行コードは引き継がれないため、VSTA などをつかったコーディングが必要になります。

    参考: InfoPath のリッチテキストコントロールで自動的に文字列を改行する方法
    (クリエ・イルミネート ブログ。。。 実は参照されているブログを書いた人と同一人物です)

    リッチテキストコントロールでなく、テキストボックスで [マルチライン] を使ったものであれば、
    VSTA によるコーディングなしに改行をいれることが可能になります。

    マルチライン(複数行テキストボックス)の設定はテキスト ボックスのプロパティの [表示] タブ
    から [マルチライン] をチェックすると、複数行可能なテキスト ボックスになります。

    1) 以下が記述された xml ファイルを作成して、newline.xml として UTF-8 で保存。

    <?xml version="1.0"?>
    <linebreaks>
         <newLine>&#xA;</newLine>
    </linebreaks>

    2) 作成してる InfoPath フォームのメニューバーの [ツール] から [リソース ファイル] を
    選択し、上の newline.xml を追加する。

    3) [ツール] - [データ接続] で [追加] をクリックし、データ接続ウィザードで、
    - データの受信 をチェック
    - XML ドキュメント チェック
    - [リソース ファイル] ボタンをクリック、newline.xml がハイライトになっている状態で OK.
    - 完了
    これで newline.xml をセカンダリ データ ソースとして参照することができます。

    4) マルチライン テキスト ボックスに表示させるための動作規則で、上の例でいうと

    concat( ダブルクリックしてフィールドを挿入してください, ダブル....)

    で、最初の引数の部分をダブルクリックして、[データ ソース] で [newline(セカンダリ)]を
    選び、[newLine] を選択し、OK を押します。すると、以下のようになります。

    concat(newLine, ダブルクリックしてフィールドを挿入してください, ダブルクリックしてフィールドを挿入してください)

    newLine が改行を表します。結合前に改行、、、ってこういうことなんでしょうか。
    あとは、フィールド2 と now() を入れれば、ご希望の表示ができるかと思います。
    リッチテキストコントロールでは、この方法も無効になりますね。他にやり方があれば
    いいんですが。。。

    この情報は、弊社内での検証と、以下のフォーラムを参考にしています。

    参照: InfoPath Dev Forum - Line Break

    ご参考になれば。


    Shigeru NUMAGUCHI Director CRIE-ILLUMINATE INC. (JAPAN)
    2010年5月7日 12:52
  • あ、すでにご返信がありましたね。

    不要かと思いますが、簡単にまとめてみましたのでよろしければご参考まで。

    http://sharepoint.boo.jp/index.php?e=446

    やっていることはほぼ同じです。

    リッチテキストフィールドには使えないのがやはり欠点です。


    saruhiko
    2010年5月8日 1:20
  • ふと思いついて、試行錯誤してみたところ、出来てしまいました(汗)

    とはいっても、コード(Jscript)を利用しています。

    しかし、それほど難しいことはしていません。

    よろしければご参考まで。

    プログラム的にリッチテキスト領域に改行を挿入する


    saruhiko
    2010年5月9日 11:49
  • ご返信ありがとうございます。

    特にリッチテキストを希望しているわけではなく、

    リッチテキストでないと、改行が出来ないと誤認識しています。

    頂いた内容を早速試してみたいと思います。

    ps:

    しかし、infopathは色々と使い道があり良いな~と思う反面

    改行すら結構な難易度で・・・

    2010年5月10日 1:03
  • Numa.D様
    saruhiko様

    上記ご返信ありがとうございます。

    一応今回はテキストボックスを利用して、Numa.D様のご返信内容にて

    実装していきたいと思います。

    また、別でリッチテキストボックスでの実装が必要になった場合は

    コーディングでの実装をしたいと思います。

    ありがとうございました。

     

    2010年5月10日 1:04