top of page

FileMaker フィールド表示文字サイズの自動調整



はじめに

 システム開発担当の「ほうがん」です。  先日「ザ・クリエーター/創造者」という映画を見ました。この映画、人型AIと人類が共生している近未来の人型AIと人類との間の全世界を巻き込んだ戦争がベースになっています。これからこの映画見る予定の方がいらっしゃるかもしれませんので、ネタバレはやめておきますが、  現実世界でもイスラエルとパレスチナ、ウクライナとロシア、他にも戦争状態が続いていて戦争の終わりが見えません。20世紀は戦争の世紀と呼ばれていましたが、21世紀は戦争が終焉を迎えた世紀と後世呼ばれたいものです。  冷戦時代を経験していたJ.P.ホーガン氏の作品にも、戦争を取り上げたSF作品が多数あります。  その作品の一つが「創世記機械」。前書きを引用しますと


 若き天才科学者クリフォードは、統一場理論の研究を進めるうち、宇宙の無限のエネルギーを直接とり出す機械を発明した。この装置をうまく利用すれば究極兵器がつくれると判断した軍部は……


 「戦時下に戦争の無い時代を作る」それを実現するために科学者クリフォードが奔走します。   J.P.ホーガン氏の作品中でも私の大好きな作品です。ご興味の湧かれた方、ご一読をお勧めいたします。




フィールド表示文字サイズの自動変更

FileMakerネタに戻ります。


Excelの場合の文字サイズ自動調整

ご存じのようにExcelではセルの長さよりも文字数が多い場合に「セルの書式設定」>「配置」>「縮小して全体を表示する」のチェックを入れることでセルのサイズに応じて文字サイズを自動調整する機能があります。 2行目の「ジェイムズ・パトリック・ホーガン」のみ字がセルの横幅よりも広い場合

チェックを入れて表示させると以下の通りに文字サイズが調整されて全文字がセル内に収まります。

残念ながらFileMakerではこういった文字サイズの自動調整機能が用意されていません。 これを実現する方法は色々とありますが、今回は短時間でこの機能を実現する方法を紹介いたします。




基本的考え方

同じフィールドを複製して文字サイズを変更し、文字数に応じて表示のOnOffを行うことで実現します。

住所録(※ダミーデータ)を以下のような住所欄の表示の一部のレコードがフィールド表示枠を超えている場合を想定します。一覧の住所のうち2,3,6レコードで住所の一部が表示しきれていません。

この文字が表示しきれていない住所表示部分を自動で文字サイズ変更し全体表示が出来るように変更します。



文字サイズを変更するためのフィールドを複製

レイアウトモードに変更し、「住所」フィールドを選択して、複製します。 (説明のためにボディの高さを拡げ、元の「住所」欄の下に、文字サイズ変更を行う「住所」欄を配置しました) この状態でメニュー>表示>オブジェクト>サンプルデータを選択してフィールドの表示状態を参照します。


これで実際の表示イメージがつかめますので、下側のフィールドの文字サイズを調整します。 元が16ポイントでしたが、12ポイントなら全体が入りますので、12ポイントに変更します。

12ポイントに変更した影響でフィールドの高さが減少したので、元のフィールドの高さに設定を合わせます。 フィールドのベースラインも調整して、違和感のない位置に変更しました。

表示文字数を確認するために「住所」フィールドに全角数字を入れて表示してみます。 そうすると21文字までは表示できて、22文字以上は表示できないことが確認できました。


「次の場合にオブジェクトを隠す」で表示フィールドの切り替え

表示の違和感をなくすために 下側の12ポイントに変更したフィールドに 「次の場合にオブジェクトを隠す」を「Length ( テーブル::住所 ) < 22 」の式で設定します。

これで住所が22文字以上ならこの12ポイントのフィールド側が表示されます。 元の「住所」フィールドにも 「次の場合にオブジェクトを隠す」を「Length ( テーブル::住所 )> 21 」の式を設定します。 これで「住所」が22文字以上であれば上部側のフィールド表示させない設定になります。


この2つのフィールドを同じ位置に重ねて配置。 本来は下側のフィールドの色も戻すべきですが、わかりやすいようにそのままにしておきます。(本来は同色、同サイズとしてください。) 説明のために拡げていたボディパートのサイズも元に戻してブラウズモードでみてみます。

目的の表示となりました。 もっと文字数が多い場合には(この場合なら30文字以上)、更にポイント数を小さくしたフィールドや2行表示に調整したフィールドを作成し、複数重ねて文字数ごとに「オブジェクトを隠す」の式で調整する事で対象レイアウトの一部変更のみでフィールド幅に合わせた表示が可能です。



※注意事項

これまでの説明は等幅フォント全角文字(MSゴシックなど)を使用していることが前提ですので、全角半角文字の混在がある場合には全角半角文字数を考慮して表示時の長さを調整する少し複雑な式を使用する必要があります。 また、プロポーショナルフォントを使用した場合には字間が詰まる場合がありますので、表示文字数の切り替えロジックに若干余裕を持って設定を行っていただいた方が良いと思います。 説明は長くなりましたが、実作業自体は10分も掛かりません。お試しください。

Comments


bottom of page