初心者のFileMaker pro Q&A (旧掲示板)

みんなに優しく、解りやすくをモットーに開設しています。 以下のルールを守りみんなで助け合いましょう。

1.ファイルメーカーで解らない事があればここで質問して下さい。 何方でも、ご質問・ご回答お願いします。 (優しく回答しましょう)

You are not logged in.

Announcement

新しい掲示板は、こちら:https://fm-aid.com/forum/t/filemaker


#1 2017-02-16 12:25:34

yuki
Member

テキスト選択部分のフォントカラーを変えるスクリプト

FMP15adv Win10です。

テキストフィールドで強調したいところだけを選択後、「赤」に変えたいとき、
書式に行って、文字色パレットから目的色を選ぶということをしています。
色変更箇所が多い時には、ボタンを使えば便利と思います。

そのフィールド全体を変えるのであれば、スクリプトで計算TextColor(赤、青、緑)を使えるのですが、
選択部分のみ色変更するには、スクリプトはどのように書けばよいのでしょうか。
ご教示ください。

Offline

#2 2017-02-16 12:57:54

シャチ
Member

Re: テキスト選択部分のフォントカラーを変えるスクリプト

大さっぱなサンプルを作って
http://yahoo.jp/box/O1BB4a
に起きました。

関数はSubStituteとTextColorを使ってます

元に戻したりする、色を変えるなどの機能はアレンジしてください。

Last edited by シャチ (2017-02-16 12:59:03)

Offline

#3 2017-02-16 13:36:05

qb_dp
Member

Re: テキスト選択部分のフォントカラーを変えるスクリプト

こんな感じで。

フィールド設定 [ターゲットフィールド ;
Let([
P=Get ( アクティブ選択位置 )
;S=Get ( アクティブ選択サイズ )
;str=Middle ( ターゲットフィールド ; p ; s )
];
Replace ( ターゲットフィールド ; P ; S ; TextColor ( str ; RGB ( 255 ; 0 ; 0 ) ))
)
]

Offline

#4 2017-02-16 13:55:51

qb_dp
Member

Re: テキスト選択部分のフォントカラーを変えるスクリプト

以下のようにすると、他のフィールドでも使えます。


変数を設定 [$テーブル名; 値:Get ( アクティブフィールドテーブル名 )]
変数を設定 [$フィールド名; 値:Get ( アクティブフィールド名 )]
変数を設定 [$P; 値:Get ( アクティブ選択位置 )]
変数を設定 [$S; 値:Get ( アクティブ選択サイズ )]
フィールドを名前で設定 [$テーブル名 & "::" & $フィールド名;
    Let([
    P=Get ( アクティブ選択位置 )
    ;S=Get ( アクティブ選択サイズ )
    ;str1=Get ( アクティブフィールド内容 )
    ;str2=Middle ( str1 ; p ; s )
    ];
        Replace ( str1 ; P ; S ; TextColor ( str2 ; RGB ( 255 ; 0 ; 0 ) ))
    )]
選択範囲を設定 [開始位置: $P; 終了位置: $P+$S-1]

Offline

#5 2017-02-16 14:03:43

Hiro
Member

Re: テキスト選択部分のフォントカラーを変えるスクリプト

フィールド設定[]単独スクリプトのみで
・フィールド名は無指定(無指定はアクティブフィールドとなる)
・値は下式

Let([
   #fld=Get(アクティブフィールドテーブル名) & "::" & Get(アクティブフィールド名);
   #pos=Get(アクティブ選択位置);
   #num=Get(アクティブ選択サイズ);
   #txt=Middle(Evaluate(#fld);#pos;#num)
];
   Replace(Evaluate(#fld);#pos;#num;TextColor(#txt;RGB(255;0;0)))
)

Offline

#6 2017-02-16 14:21:22

qb_dp
Member

Re: テキスト選択部分のフォントカラーを変えるスクリプト

・フィールド名は無指定(無指定はアクティブフィールドとなる)

あ~そうでした...。

私の書いたスクリプトもだいぶスッキリ書き直せます。やってる事はHiroさんのとほとんど一緒です。
※文字色設定後も選択位置を保持出来る仕様。

フィールド設定 [
    Let([
    $P=Get ( アクティブ選択位置 )
    ;$S=Get ( アクティブ選択サイズ )
    ;str1=Get ( アクティブフィールド内容 )
    ;str2=Middle ( str1 ; $P ; $S )
    ];
        Replace ( str1 ; $P ; $S ; TextColor ( str2 ; RGB ( 255 ; 0 ; 0 ) ))
    )
]
選択範囲を設定 [開始位置: $P; 終了位置: $P+$S-1]

Offline

#7 2017-02-16 15:33:57

yuki
Member

Re: テキスト選択部分のフォントカラーを変えるスクリプト

シャチさん qb_dpさん、Hiroさん ありがとうございます。
出来ました。
Let関数は難しい、というのが実感です。

Offline

#8 2017-02-16 15:53:09

qb_dp
Member

Re: テキスト選択部分のフォントカラーを変えるスクリプト

[Let関数]を使わずにスクリプトを書くと以下のようになります。

変数を設定 [$選択位置; 値:Get ( アクティブ選択位置 )]
変数を設定 [$選択サイズ; 値:Get ( アクティブ選択サイズ )]
変数を設定 [$内容; 値:Get ( アクティブフィールド内容 )]
変数を設定 [$ターゲット文字列; 値:Middle ( $内容 ; $選択位置 ; $選択サイズ )]
フィールド設定 [Replace ( $内容 ; $選択位置 ; $選択サイズ ; TextColor ( $ターゲット文字列 ; RGB ( 255 ; 0 ; 0 ) ))]
選択範囲を設定 [開始位置: $選択位置; 終了位置: $選択位置 + $選択サイズ - 1]


[Let関数]を使ったほうが 速く、スッキリとスクリプトが書けます。

Offline

Registered users online in this topic: 0, guests: 1
[Bot] ClaudeBot

Board footer

Powered by FluxBB
Modified by Visman

[ Generated in 0.006 seconds, 11 queries executed - Memory usage: 517.68 KiB (Peak: 522.59 KiB) ]