こんにちは、ps4を机の下に置いており、ガシガシと蹴っていると起動しなくなってしまったfilemakerチームの久保田です。
なんとも言えない気持ちになりました。自業自得です、、
さて今回書かせていただく記事は、テキストの色を自在に変えるというものです。
基本的にテキストの色を変更する場合、レイアウトモードで変更すると思いますが、今回はレイアウトモードを介さず、色を変更させたいと思います。
今回のポイントとなるものはTextColor関数のみです。
TextColor関数はテキストの色をRGBで指定した色に変更するという関数です。
百聞は一見にしかずということで、実際に色が変わる様子を画像を用いて、お見せします。
用意するフィールドは3つ
テキスト → 色を変更したい文字
R/G/B → 変更させたい色情報
テキスト_カラー → 色が変わった後の文字
テキスト_カラーフィールドの計算式
TextColor関数の第一引数にTextColorRemoveという関数を使用しています。
これはテキストの文字色を取り除くというものなのですが、ほぼおまじない程度に入れているだけなので、基本的にはなくても大丈夫だと思います。
データを入力してみるとテキスト_カラーフィールドの色がRGBで指定した色に変わってくれました。
ではここからはもう少し発展させて、カラーパレットを作成していきたいと思います。
大まかな流れは色マスタというテーブルを作成し、そこにRGBの情報を持たせて、色を変更させます。
今回色マスタについては、1つのレコードにRGBデータ1つではなく、元のRGBデータから明度/彩度を変えたRGBデータ複数を保持させる仕様にしています。
色マスタに用意するフィールド
__KP → 主キー
色名 → 色の名前
R/G/B → 色の情報
RGB → R/G/Bのデータをもとに明度8通り、彩度8通りの計64通りのRGBデータ
色見本 → RGB64通りの色がどのような色かを確認するための計算フィールド(RGBフィールドに対応する繰り返しの色を四角テキスト”■”で表示する。)
RGBの64通りの色の計算については、
明度 → RGBそれぞれを1/2、1/3、、、と徐々に下げる。
彩度 → RGBのうち、一番高いフィールドのみそのままにし、それ以外を明度と同じように下げていく。
このルールをもとにスクリプトを組み計算しました。
計算に使用した明度/彩度に関するサイトを貼っておきます。
・RGBカラーコードの明度・彩度・色相を暗算で変更する
https://blog1.mammb.com/entry/2020/01/20/090000
色マスタを作成すると下記の画像の通りになります。
一番左上にある色がRGBで指定した色です。
ではカラーパレットを作成して、指定のテキストを自由に色を変えられるようにしていきます。
色変更を行うテーブル
__KP → 主キー
テキスト → 色変更を行うテキスト
RGB → 色データ
テキスト_カラー → 色変更後のテキスト
色選択_グローバル → どの色(色マスタのレコード)のパレット(色マスタで計算した64通りのRGB)を使用するか指定するためのフィールド
用意するテーブルオカレンス
portal_色マスタ(色選択用のテーブルオカレンスでカラーパレットを使用するレイアウトのテーブルオカレンスに対して、デカルトでつなぎます。)
これらのテーブルとテーブルオカレンスを組み合わせるとこのようなカラーパレットが作成できます。
これだけだとどうなっているかがわからないと思うので、説明していきます。
まずパレットの表示についてですが、これは先ほど作成したportal_色マスタテーブルオカレンスをポータルで表示させており、色に関しては色マスタの色見本を表示させています。
また表示する色見本に関してはポータルの上に配置しているポップアップフィールドで指定した色マスタのみを表示するようにしており、表示の制御にはポータルフィルターを使用しています。
ポータルフィルターの計算式
そして最後に各色見本のフィールドにOnObjectEnterを入れることで、色見本を押すと、テキストの色が自動で変わるようになります。
これでテキストの色がカラーパレットで押した色に変更されるようになります。
最後の完成部分に関しては、動画を使用しないと変わっている様子が伝わらないので、省きます、、、
いかがだったでしょうか。
元を辿れば使用したものはTextColor関数のみなのですが、そこからここまで発展できるというのは、filemaker然りプログラムの面白いところではないかなと思います。
後半のカラーパレットの部分は思いつきをそのまま形にしたというところもあり、実際の仕様に関しては、無数にあるなと作成しながら感じました。
なので、自分なりのカラーパレットを作成してみるというのもなかなか面白いと思います。
ではこれで終わらせていただきます、ご精読ありがとうございました!!
2022-05-24
Webビューアを利用したカラーピックの作成と背景色を動的にする方法!!
2022-04-20
ポップアップメニューで空白を選択したい
2022-02-07
タブコントロールの移動を特定条件で移動できなくする!!
2022-01-14
filemakerでカラーパレット!?テキストの色を自在に変更する!!
2021-12-08
Filemakerで効果音を鳴らしたい
2021-11-24
FileMaker開発者コラム〜こだわりとはなにか〜
2021-10-15
特定のレコードの数を表示したい
2021-10-07
スクリプト内で複数の値をリスト形式のデータにして変数に納める!!
2021-09-21
プログラムの命名にも活かせる!?「日本語の良さを知ろう!」