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

- 2024年3月4日
- 読了時間: 4分
更新日:2024年3月8日
テキストを枠内に収めたい
文字サイズが自動で縮小できたらな…

Excel やAccessなどの帳票からFileMakerに移行してほしい。との依頼を受けて作成したものの、印刷用紙の設定があるせいで枠に文字が入り切らない...
ただ、文字サイズを小さく設定してしまうとずっと文字サイズが小さいままで見にくいし...
今日はそんなお悩みを解消していこうと思います。
1.テキストが長いとこうなる
FileMakerではフィールドのサイズより文字のほうが長いときは見えなくなってしまいます

もちろん、FileMakerのアプリケーション内で見る分には
・フィールドを選択して表示

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


などの方法で解消されます
しかし、印刷する際は上記の方法では解決できません
そのまま印刷してしまうと切れた部分は読めないままになってしまいます
該当フィールドのサイズを大きくできるのであればそれに越したことはありませんが
大抵は用紙のサイズ指定があったり、帳票の見た目に指定があるので簡単にはいきませんよね…(フォーマットが決まっている病院や公的機関は特にそう)
それならめっちゃ文字小さくすればいいじゃん!
と言っても、場合によっては表示しきれる長さのときもあるし、大きいままにできる方法があるなら小さくはしたくないよね〜(老眼大臣もいますし)
ってことで、そんなときに使えるのが今回ご紹介する文字長さに応じた文字サイズの自動縮小になります
2.解決方法:文字サイズの自動縮小
FileMakerでは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.このテクニックの問題点
便利に見えますが、問題点があります…
元データをいじっているので元データのサイズも変わってしまいます
印刷時用のフィールドが必要かも
サンプルファイルはこちら
サンプルファイルは基本的に完全アクセス権がある状態で公開していますので、分析して勉強したり、自分のカスタムApp に組み込んでもらっても構いません。
これらサンプルファイル使用して生じた一切の問題に対して、いかなる責任も当社は負いません。
ファイルの改変は自由ですが、再配布を禁じます。ダウンロード先のリンクはブログ記事へお願いします。(株)未来Switchでは
通勤中にスマホでサクサク見れる
【FileMaker1分動画】を配信中です
字幕多めで電車でも見やすくなっていますので
ぜひご覧下さい
Youtube → https://www.youtube.com/@MiraiSwitch
Instagram → https://www.instagram.com/mirai_switch
イベントはPeatix(ピーティックス)にて掲載しています
フォローしていただくと、未来Switch開催のイベント通知が来るようになります
不定期開催の予定ですのでチェックしてみてくださいね
困りごとを解決する近道があるかも







Mình thường đọc mấy bài soi kèo để có thêm dữ liệu trước khi quyết, chứ không bao giờ tin 100% vì vẫn có phần may rủi. Hồi trước mình hay tự ghi chép lại các nhịp lặp rồi ngồi dò, lâu lâu cũng nhìn ra chút xu hướng, nhưng dễ bị cảm xúc chi phối nên hay đoán lệch. Gần đây mình đổi sang tham khảo nhiều góc nhìn hơn, nhất là mấy đoạn giải thích lý do cầu có thể đứt hoặc đổi nhịp, thấy thuyết phục hơn. Có lần mình thử áp dụng theo Soi cầu wap để gạn bớt tín hiệu nhiễu, rồi tự đặt giới hạn cho bản thân nên đỡ bị cuốn. Mình coi…