2 返信 最新の回答 日時: May 18, 2015 9:51 PM ユーザー:夾竹桃

    スクリプトで文字色を変えたい

    夾竹桃

      タイトル

      スクリプトで文字色を変えたい

      フォーラムに投稿

      FMP13です

      たぶん簡単なことだと思うのですが、方法が分かりません。

      「フィールド内の一部のテキストをマウスで選択した後、スクリプトの入ったボタンを押すとそのテキストを指定した色に変更する」ということがしたいです。

      よろしくお願いします。

        • 1. Re: スクリプトで文字色を変えたい
          ねこ吉

          画面上にテキストボックスが複数あるという前提で説明します。

          まず、画面に配置したテキストボックスにはそれぞれ名前を付けておいてください。
          名前は、インスペクタパネルの[位置]タブの[名前]欄に入力します。
           
          流れとしては次のようになります。
           
          (1) 目的のテキストボックスがアクティブかどうかを検査します。
            目的外のテキストボックスが文字選択されている可能性を
            排除するためです。
            判定は Get ( アクティブフィールド名 ) を使って判定します。
           
          (2) 文字列選択が行われているかどうかを検査します。
            目的のテキストボックスがアクティブでも、選択がない場合
            もあるのでその可能性を排除します。
            判定は Get ( アクティブ選択サイズ ) を使って判定します。
           
          (3) 文字列の選択範囲がどこからどこまでなのかを求めます。
            開始位置は、Get ( アクティブ選択位置 )
            選択された文字数は Get ( アクティブ選択サイズ ) 
            でわかります。
           
          (4) フィールドの文字列を次のように分解します。
            Str_A : 文字選択よりも前の文字列。
            Str_B : 文字選択されている部分。
            Str_C : 文字選択よりも後ろの文字列。
            文字列の分解には、Middle ( ) を使います。
           
          (5) 分解した3つの文字列を再連結して、元のフィールドに
            書き込みます。
            そのとき、Bの文字列には文字修飾を加えます。
            文字修飾には TextColor ( ) を使います。
            連結する式は、
            Str_A & TextColor ( Str_B ; RGB ( 255 ; 0 ; 0 ) ) & Str_C
            のようになります。(赤い色をつける場合)
           
          (4), (5) は Replace ( ) 関数でも同じことができます。
          • 2. Re: スクリプトで文字色を変えたい
            夾竹桃

            思ったより複雑でした。

            ひとつずつ丁寧に説明してくださったので、思う通りの動作が実現しました。

            マウスで選択した文字列を取得する方法が勉強になりました。

            ありがとうございます。