top of page
  • 執筆者の写真963

FileMakerでもExcelみたいにフィールドに入りきらない文字を自動縮小する

更新日:3月8日

テキストを枠内に収めたい

文字サイズが自動で縮小できたらな…


テキストを自動で枠内に収まるよう縮小させたい

Excel やAccessなどの帳票からFileMakerに移行してほしい。との依頼を受けて作成したものの、印刷用紙の設定があるせいで枠に文字が入り切らない...

ただ、文字サイズを小さく設定してしまうとずっと文字サイズが小さいままで見にくいし...


今日はそんなお悩みを解消していこうと思います。



1.テキストが長いとこうなる

FileMakerではフィールドのサイズより文字のほうが長いときは見えなくなってしまいます


テキストを自動で枠内に収まるよう縮小させたい

もちろん、FileMakerのアプリケーション内で見る分には

・フィールドを選択して表示

フィールド選択

・ポップアップヘルプにSelfを格納し、表示


ポップアップヘルプ

ポップアップヘルプ


などの方法で解消されます



しかし、印刷する際は上記の方法では解決できません

そのまま印刷してしまうと切れた部分は読めないままになってしまいます

該当フィールドのサイズを大きくできるのであればそれに越したことはありませんが

大抵は用紙のサイズ指定があったり、帳票の見た目に指定があるので簡単にはいきませんよね…(フォーマットが決まっている病院や公的機関は特にそう)


それならめっちゃ文字小さくすればいいじゃん!

と言っても、場合によっては表示しきれる長さのときもあるし、大きいままにできる方法があるなら小さくはしたくないよね〜(老眼大臣もいますし)

ってことで、そんなときに使えるのが今回ご紹介する文字長さに応じた文字サイズの自動縮小になります


2.解決方法:文字サイズの自動縮小

FileMakerではGetLayoutObjectAttribute関数で取れるフィールドの高さが

アクティブ時と非アクティブ時で異なるので今回はその差を利用します


GetLayoutObjectAttribute関数

使用する主な関数

LayoutObjectNames:レイアウト名上の名前の付いたオブジェクトの名前の一覧取得

GetLayoutObjectAttributeオブジェクト名によって指定されたレイアウトオブジェクトの属性取得

GetAsNumber:テキストに含まれる数字のみ取得

TextSize指定したテキストのフォントサイズを指定したフォントサイズに変更

(Claris公式リファレンスURLです)


今回やることの流れ

アクティブ時と非アクティブ時の差が生じるまでフォントサイズを1から+1 ずつ増加

フィールドの高さに差が生じたら現在値-1 がMaxサイズということでフォントサイズを固定する


スクリプトはこんな感じ

LayoutObjectNamesで、オブジェクトの名前取得

取得したオブジェクト名の数、繰り返す

{

GetLayoutObjectAttributeで、取得したオブジェクト名の "objectType" を取得

もし、"objectType" が "field" なら[文字サイズ変更処理開始]


[文字サイズ変更処理]

文字サイズを変更したいオブジェクトへ移動

ウインドウの再表示 //ウインドウの再表示しないと高さの値が更新されない

GetLayoutObjectAttribute でオブジェクトがアクティブ時の "height" 取得


フィールドへ移動 //指定なしで実行 オブジェクトから抜けて非アクティブにする

GetLayoutObjectAttribute でオブジェクトがアクティブ時の "height" 取得

サイズを取得する際はGetAsNumberを使用し、数字にする


アクティブ時とアクティブ時に差異がなければ、はみ出してないので終了


差異がある場合はアクティブ時と非アクティブ時の差が生じるまでフォントサイズを

1から+1 ずつ増加させ、差が生じたら現在値-1 がMaxサイズということで

フォントサイズを固定する

フォントサイズの設定にはGetLayoutObjectAttribute でオブジェクトの "source" 取得

TextSize を使用することで設定する

}




そんなこんなで書いて見てください

実際にスクリプトを動かすとこんな感じ

サイズを戻したいときはTextSizeRemoveを使えばOK



設定のポイント

•縮小して全体を表示したいフィールドにオブジェクト名を付ける

•フォーカス時にフィールドサイズが変わらない様に設定(効果も切る)

•あとはスクリプトを実行すればOK


3.有効な使い方

印刷時にのみ適用させ、普段は

・フィールドを選択して表示

・ポップアップヘルプに”Self”を格納

見やすくしておき、印刷の際は文字サイズの自動縮小。

と、見る場面に分けて使い分けると見やすく収まります


4.このテクニックの問題点

便利に見えますが、問題点があります…

元データをいじっているので元データのサイズも変わってしまいます

印刷時用のフィールドが必要かも


 

サンプルファイルはこちら

未来Switch_テキストを枠内に収めるサンプル.fmp12
.zip
ダウンロード:ZIP • 207KB
サンプルファイルは基本的に完全アクセス権がある状態で公開していますので、分析して勉強したり、自分のカスタムApp に組み込んでもらっても構いません。
これらサンプルファイル使用して生じた一切の問題に対して、いかなる責任も当社は負いません。
ファイルの改変は自由ですが、再配布を禁じます。ダウンロード先のリンクはブログ記事へお願いします。

 


(株)未来Switchでは

通勤中にスマホでサクサク見れる

【FileMaker1分動画】を配信中です


字幕多めで電車でも見やすくなっていますので

ぜひご覧下さい






 


イベントはPeatix(ピーティックス)にて掲載しています

フォローしていただくと、未来Switch開催のイベント通知が来るようになります

不定期開催の予定ですのでチェックしてみてくださいね


困りごとを解決する近道があるかも



未来Switch ロゴ

閲覧数:296回0件のコメント

最新記事

すべて表示
bottom of page