6 返信 最新の回答 日時: Apr 7, 2014 11:43 PM ユーザー:user14047

    テキストフィールド内の2番目以降の行で先頭スペース

    Nu-nrg

      タイトル

      テキストフィールド内の2番目以降の行で先頭スペース

      フォーラムに投稿

           物語というテキストフィールド内に、複数行の文章が入力されています。

           むかしむかし、あるところにおじいさんとおばあさんがいました。
           おじいさんは、山へ芝刈りにいきました。
           おばあさんは、川へ洗濯にいきました。

           これを計算式で、"物語:" & 物語 というラベルを付けて連結するのですが、

           物語:むかしむかし、あるところにおじいさんとおばあさんがいました。
           おじいさんは、山へ芝刈りにいきました。
           おばあさんは、川へ洗濯にいきました。

           ではなく、2行目以降はラベルの3文字分字数を下げて(スペースを入れて)、

           物語:むかしむかし、あるところにおじいさんとおばあさんがいました。
              おじいさんは、山へ芝刈りにいきました。
              おばあさんは、川へ洗濯にいきました。

           と整形するアイデアってなにかないでしょうか。

           レイアウト上のフィールド内の段落設定のはなしではありません。
           テキストと、フィールドデータを連結させて、メール送信したりする場合の、単純なテキスト連結の事例です。

           環境:ad 12

        • 1. Re: テキストフィールド内の2番目以降の行で先頭スペース
          user14047
          "物語:" & Substitute ( 物語フィールド ; ¶ ; "¶   " )

               こんな形でどうでしょう?

          • 2. Re: テキストフィールド内の2番目以降の行で先頭スペース
            hiro_

                 1行がフィールド幅を超えて2行表示される場合の措置は?とか、
                 プロポーショナルフォントだと字数が同数でも文字列幅が揃わない、
                 とかの点はどうされますか?

                 取り敢えず面倒な事は置いといて、単純に考えれば、

                 "物語:" & Substitute(物語; [¶; ¶ & "_ _ _"])

            • 3. Re: テキストフィールド内の2番目以降の行で先頭スペース
              Nu-nrg

                   chamo,Hiro.さん、ありがとうございます。
                   なるほど、検索置換でできますね!

                   気が付きませんでしたが、1行が折り返しする場合もありますね、これは対処しようがない事象でしょうか。
                   フィールド幅とフォントで文字数を区切っといて、必ず改行しておくという運用でしょうか。
                   プロポーショナルフォントも使わないようにする。
                   書式設定関数をかましてメールに挿入した後のテキスト形式メールってフォントどうなるのでしょうか。

                   何文字ごとに改行ということが出来ればいいのでしょうけど。

                   HTMLメールが作成出来るともっといいんですけど。

              • 4. Re: テキストフィールド内の2番目以降の行で先頭スペース
                user14047

                     メールのフォント指定は出来ません。
                     メールのフォント指定をするにはHTMLメールになりますが、FileMaker 標準スクリプトでは出来ません。
                     HTML メールを FileMaker で作成するには、http://www.cnsplug-ins.com/Plug-ins/smtpit_Pro などのプラグインが必要です。

                     何文字で改行をいれる…とかって、簡単なようで禁則処理やら考えはじめると大変なんですよ。
                     そういった細かいことも考慮する必要があるのならば、素直に HTML メールにしてしまった方が楽でデザインの綺麗なメールがだせそうですね。

                • 5. Re: テキストフィールド内の2番目以降の行で先頭スペース
                  Nu-nrg

                       Chamoさん、

                       HTMLメールを作るプラグインのご紹介ありがとうございます。
                       ちなみになんですが、禁則処理は考えず、何文字目に改行を入れる、という単純な場合はどのような関数を利用すればできますでしょうか?
                       教えていただけると助かります。

                  • 6. Re: テキストフィールド内の2番目以降の行で先頭スペース
                    user14047

                         一発で出来る標準の関数はないので、Length や Left などのテキスト関数を組み合わせて作ることになるかと思います。
                         本来の改行位置も考慮しないといけないので、再帰的な処理が必要になるので、カスタム関数をつくることになるでしょう。

                         メール送信はどのみちスクリプトなので、テキスト整形もスクリプトを利用した方が早いかもしれません。
                         一行つづ GetValue 関数で取り出して文字列の長さを見て、長かったら改行をを入れていく。というスクリプトを行数分だけ Loop を回す。
                         この時、メールなので、バイト数というS-JIS的な概念が必要なら 単純に Length ではなく、

                    Length ( テキスト & Filter ( テキスト ; RomanZenkaku ( KanaZenkaku ( テキスト ) ) ) )

                         のように Filter された文字列分の長さだけ足してやる必要も出てきます。

                         頑張ってみてください。