【FileMaker】テキスト内を検索して、マーキングする

簡単にいうと、テキスト内を検索して、マッチする単語があったらマーキングします。

まずは、動きをどうぞ。
https://youtu.be/bxEZSKODLOE

音声はないので、念のため、画像でも。

テキストデータに”PatternCount”という文字列がない場合は、「ない」とダイアログが出ます。
qiita_patterncount1.png

テキストデータに”PatternCount”という文字列がある場合は、個数をダイアログで表示し、「結果テキスト」フィールドにマッチする単語をマーキングして表示します。
qiita_patterncount2.png

大雑把な実装方法は、
・PatternCount関数を使って検索
・TextStyleAdd関数で、該当のテキストをマーキング
の2つです。

まず、フィールドの構成です。
qiita_patterncount3.png

これまた単純に、
・フィールド:テキストデータ
・グローバルフィールド:検索ワード、結果テキスト
のみです。
グローバルフィールドの「検索ワード」は、検索するために使うので一つでいいかなと思いグローバルフィールドにしていますが、固有の検索ワードの結果を保存しておきたいのでしたら、「検索ワード」「結果テキスト」共に通常のフィールドにしてもいいかと思います。

例えば、検索結果を後で活用するために検索ワードに関したレコードのみを引っ張ってきたい、などですかね。
別言語ですが、以前関わった遺伝子データ活用のシステム開発で、特定の遺伝情報を検索したらヒットしたデータのみをピックアップしてどうのこうの、、、というのがありました。
昔FileMakerを使っていたら是非とも提案したいところでした。

「検索」ボタンのスクリプトを見てみましょう。
qiita_patterncount4.png

大事なところは、最後のTextStyleAddです。
qiita_patterncount5.png

TextStyleAddは、文字の修飾をしてくれる関数なので、例えばアンダーラインを引きたい、太字にしたい、などを施してくれます。
しかも、複数指定できます。

例えば、下線をプラスしたい場合。
qiita_patterncount6.png
「+」で繋ぐだけです。

強調表示+下線で、以下のような結果になります。
qiita_patterncount7.png
アンダーライン、つきましたね。

ちなみに、「全部盛り」というのがあります。
qiita_patterncount8.png

こう出ます。
qiita_patterncount9.png
かっこ悪ぅ。。。

何事もほどほどに、というところでしょうか。
PatternCountとTextStyleAdd、適宜利用してみてくださいね。