みんなに優しく、解りやすくをモットーに開設しています。 以下のルールを守りみんなで助け合いましょう。
1.ファイルメーカーで解らない事があればここで質問して下さい。 何方でも、ご質問・ご回答お願いします。 (優しく回答しましょう)
You are not logged in.
Pages: 1
FMP15adv Win10です。
テキストフィールドで強調したいところだけを選択後、「赤」に変えたいとき、
書式に行って、文字色パレットから目的色を選ぶということをしています。
色変更箇所が多い時には、ボタンを使えば便利と思います。
そのフィールド全体を変えるのであれば、スクリプトで計算TextColor(赤、青、緑)を使えるのですが、
選択部分のみ色変更するには、スクリプトはどのように書けばよいのでしょうか。
ご教示ください。
Offline
大さっぱなサンプルを作って
http://yahoo.jp/box/O1BB4a
に起きました。
関数はSubStituteとTextColorを使ってます
元に戻したりする、色を変えるなどの機能はアレンジしてください。
Last edited by シャチ (2017-02-16 12:59:03)
Offline
こんな感じで。
フィールド設定 [ターゲットフィールド ;
Let([
P=Get ( アクティブ選択位置 )
;S=Get ( アクティブ選択サイズ )
;str=Middle ( ターゲットフィールド ; p ; s )
];
Replace ( ターゲットフィールド ; P ; S ; TextColor ( str ; RGB ( 255 ; 0 ; 0 ) ))
)
]
Offline
以下のようにすると、他のフィールドでも使えます。
変数を設定 [$テーブル名; 値: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
フィールド設定[]単独スクリプトのみで
・フィールド名は無指定(無指定はアクティブフィールドとなる)
・値は下式
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
・フィールド名は無指定(無指定はアクティブフィールドとなる)
あ~そうでした...。
私の書いたスクリプトもだいぶスッキリ書き直せます。やってる事は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
シャチさん qb_dpさん、Hiroさん ありがとうございます。
出来ました。
Let関数は難しい、というのが実感です。
Offline
[Let関数]を使わずにスクリプトを書くと以下のようになります。
変数を設定 [$選択位置; 値:Get ( アクティブ選択位置 )]
変数を設定 [$選択サイズ; 値:Get ( アクティブ選択サイズ )]
変数を設定 [$内容; 値:Get ( アクティブフィールド内容 )]
変数を設定 [$ターゲット文字列; 値:Middle ( $内容 ; $選択位置 ; $選択サイズ )]
フィールド設定 [Replace ( $内容 ; $選択位置 ; $選択サイズ ; TextColor ( $ターゲット文字列 ; RGB ( 255 ; 0 ; 0 ) ))]
選択範囲を設定 [開始位置: $選択位置; 終了位置: $選択位置 + $選択サイズ - 1]
[Let関数]を使ったほうが 速く、スッキリとスクリプトが書けます。
Offline
Pages: 1
[ Generated in 0.005 seconds, 7 queries executed - Memory usage: 518.21 KiB (Peak: 523.12 KiB) ]