http://FMPro.info  FileMaker Pro 関連総合ポータルサイト

MultiHilight 関数

カテゴリー : テキスト処理
計算結果のデータタイプ : テキスト
対応FileMakerバージョン : 対応 7  対応 8  対応 8.5  対応 9  対応 10  対応 11  未対応 12  未対応 13  未対応 14  未対応 15
作者 : 社本修司 株式会社ジェネコム

概要

スペースで区切られた複数の<検索テキスト>を<テキスト>上で強調表示します。

構文

MultiHilight ( テキスト ; 検索テキスト ; カウンター )

引数

引数名タイプ備考
テキストテキスト任意のテキストFileMakerPro8
検索テキストテキスト空白で区切られた検索テキストmaker 8 FILE
カウンター数字0 のみ0

別のウィンドウで、引数の値を変更してテストすることが出来ます

MultiHilight ( "FileMakerPro8" ; "maker 8 FILE" ; 0 )

結果

FileMakerPro8

/*
MultiHilight ( テキスト ; 検索テキスト ; カウンター )
スペースで区切られた複数の<検索テキスト>を<テキスト>上で強調表示します。
*/

Let
(
    [
    TEXT = テキスト ;
    SEARCHLIST =
        Substitute (
            
// FileMaker Pro 8 以降のみで利用する場合
//            TextStyleAdd ( TextFormatRemove ( 検索テキスト ) ; 太字 ) ;
            
// FileMaker Pro 7 で利用する場合
            TextStyleAdd ( TextColor ( 検索テキスト ; RGB ( 0 ; 0 ; 0 ) ) ; 太字 ) ;
            [ " " ; "¶" ] ; [ " " ; "¶" ] ; [ "¶¶¶" ; "¶" ] ; [ "¶¶" ; "¶" ]
        ) ;    
// 検索テキストをリスト化
    COUNTER = カウンター ;
    // 置換用の色1〜10,検索語句が10以上の場合は1から繰り返す
    COLORLIST =
        RGB ( 255 ; 0 ; 0 ) & "¶" &     // Red
        RGB ( 0 ; 0 ; 255 ) & "¶" &     // Blue
        RGB ( 0 ; 204 ; 105 ) & "¶" &     // Green
        RGB ( 255 ; 0 ; 255 ) & "¶" &     // Magenta
        RGB ( 255 ; 165 ; 0 ) & "¶" &     // Orange
        RGB ( 50 ; 50 ; 205 ) & "¶" &     // Navy
        RGB ( 50 ; 205 ; 50 ) & "¶" &     // Limegreen
        RGB ( 255 ; 215 ; 0 ) & "¶" &     // Gold
        RGB ( 165 ; 42 ; 42 ) & "¶" &     // Brown
        RGB ( 92 ; 0 ; 182 ) ;     // Indigo
    // FileMaker Pro 8 以降のみで利用する場合
//    COLOR = GetValue ( COLORLIST ; Mod ( COUNTER ; 10 ) + 1 ) ;
    // FileMaker Pro 7 で利用する場合
    COLOR = Substitute ( MiddleValues ( COLORLIST ; Mod ( COUNTER ; 10 ) + 1 ; 1 ) ; "¶" ; "" ) ;
    NEXTLIST = MiddleValues ( SEARCHLIST ; 2 ; ValueCount ( SEARCHLIST ) - 1 ) ;
    // FileMaker Pro 8 以降のみで利用する場合
//    SEARCHWORD = TextStyleAdd ( GetValue ( SEARCHLIST ; 1 ) ; 太字 ) ;
    // FileMaker Pro 7 で利用する場合
    SEARCHWORD = TextStyleAdd ( Substitute ( LeftValues ( SEARCHLIST ; 1 ) ; "¶" ; "" ) ; 太字 ) ;
    PROPERSEARCHWORD = TextStyleAdd ( Proper ( SEARCHWORD ) ; 太字 ) ;
    LOWERSEARCHWORD = TextStyleAdd ( Lower ( SEARCHWORD ) ; 太字 ) ;
    UPPERSEARCHWORD = TextStyleAdd ( Upper ( SEARCHWORD ) ; 太字 ) ;
    iSEARCHWORD = TextStyleAdd ( Left ( LOWERSEARCHWORD ; 1 ) & Proper ( Middle ( LOWERSEARCHWORD ; 2 ; Length ( LOWERSEARCHWORD ) - 1 ) ) ; 太字 ) ;
    ZENKAKUSEARCHWORD = TextStyleAdd ( KanaZenkaku ( SEARCHWORD ) ; 太字 ) ;
    HANKAKUSEARCHWORD = TextStyleAdd ( KanaHankaku ( SEARCHWORD ) ; 太字 )

    ] ;
    
    Case (
        not
IsEmpty ( SEARCHWORD ) ;
            
MultiHilight (
            
    Substitute (
                    TEXT ;
                    [ SEARCHWORD ;
TextColor ( SEARCHWORD ; COLOR ) ] ;
                    [ PROPERSEARCHWORD ;
TextColor ( PROPERSEARCHWORD ; COLOR ) ] ;
                    [ LOWERSEARCHWORD ;
TextColor ( LOWERSEARCHWORD ; COLOR ) ] ;
                    [ UPPERSEARCHWORD ;
TextColor ( UPPERSEARCHWORD ; COLOR ) ] ;
                    [ iSEARCHWORD ;
TextColor ( iSEARCHWORD ; COLOR ) ] ;
                    [ ZENKAKUSEARCHWORD ;
TextColor ( ZENKAKUSEARCHWORD ; COLOR ) ] ;
                    [ HANKAKUSEARCHWORD ;
TextColor ( HANKAKUSEARCHWORD ; COLOR ) ]
                ) ;
                NEXTLIST ;
                COUNTER + 1
            ) ;    
// SEARCHWORD に値がある場合は再帰呼び出し
            TEXT    
// SEARCHWORD が空の時はTEXTのみ
    )
)

エンコードは Unicode (UTF-8)、改行タイプは LF (Unix) 形式のテキストとして保存します。
テキストエディタで正常に開かない場合は、エンコードを指定してファイルを開くようにしてください。

詳細説明

スペースで区切られた複数の<検索テキスト>を<テキスト>上で強調表示します。
ただし、<検索テキスト>が強調表示されるのは以下の場合で、一部制限があります。

・<検索テキスト>と<テキスト>の大文字小文字が同じ場合
 (例)<検索テキスト>「TextFormatRemove」<テキスト>「TextFormatRemove」
・<検索テキスト>の大文字小文字を問わず<テキスト>が全て小文字の場合
 (例)<検索テキスト>「TEXTFORMATREMOVE」<テキスト>「textformatremove」
・<検索テキスト>の大文字小文字を問わず<テキスト>が全て大文字の場合
 (例)<検索テキスト>「TextFormatRemove」<テキスト>「TEXTFORMATREMOVE」
・<検索テキスト>の大文字小文字を問わず<テキスト>の頭文字が大文字で他が小文字の場合
 (例)<検索テキスト>「TextFormatRemove」<テキスト>「Textformatremove」

※<テキスト>「TextFormatRemove」に対して<検索テキスト>「textformatremove」は強調表示されません。

強調色は、Red,Blue,Green,Magenta,Orange,Navy,Limegreen,Gold,Brown,Indigo の10色ですが、検索語句が11以上の場合、再度、Red,Blue,Green,…と同じ色を繰り返します。

強調表示の色が単色でもいい場合、
http://www.briandunning.com/cf/579
HiliteMulti 関数を使うことで大文字小文字の区別をしない強調表示が可能です。

この関数が使用する他のカスタム関数

この関数を使用する他のカスタム関数

注意:ここで紹介されているカスタム関数をご自分のシステムに組み込んだ場合に発生した問題についてはFMPro.infoは責任を負いません。

Copyright © 2004-2009 FMPro.info All Rights Reserved.