初心者のFileMaker pro Q&A (旧掲示板)

みんなに優しく、解りやすくをモットーに開設しています。 以下のルールを守りみんなで助け合いましょう。

1.ファイルメーカーで解らない事があればここで質問して下さい。 何方でも、ご質問・ご回答お願いします。 (優しく回答しましょう)

You are not logged in.

Announcement

新しい掲示板は、こちら:https://fm-aid.com/forum/t/filemaker


#1 2022-01-12 11:48:29

takadon
Member

文字表示について

テキスト文字入力後、収まりきらない文字を"..."としたいと考えております。
ご教示の程どうぞ宜しくお願い致します。

Offline

#2 2022-01-13 18:10:03

himadanee
Guest

Re: 文字表示について

そういう機能は組み込まれてません。
...を表示することでデータが変わってもいい、とは思えませんが、そうだとするとフィールド末端に...を表示するために別のオブジェクトを置くなど結構面倒な作業になりそうです。

少し実験してみたところ、フィールドからあふれてるときはフィールド枠が拡張されているのを検知する数式が、一時使えなくなってたと思ってたんですが19v4では使えるようです。
こんな感じで、レイアウト定義上のフィールド高さと、編集中の実際に表示されてるフィールド高さを比較して、onObjectExitのトリガスクリプトなどで文字列が隠れることを検知します。
Let ( [
b = FieldBounds ( "" ; Get(レイアウト名) ; "showDotsAfterOverflowedText::t" ) ;
h = MiddleWords ( b ; 4 ; 1 ) - MiddleWords ( b ; 2 ; 1 )
] ;
GetLayoutObjectAttribute ( "f1" ; "height" ) <> h
)

問題の1つは、「デザイン関数」はフィールド名で指定するので、同じフィールドを複数配置すると動作が不安定になります(取得する値がフィールドの配置順に依存)
もう1つは、1つのフィールドが複数回表示されるリスト形式では、...の表示を行ごとにオンオフするので設定が複雑になるでしょう。

そこまで手間をかける価値があるかどうか...

フィールド高さを2行目の上部が少し見えるようにしておくと、簡単にテキストがはみ出してることがわかりますが、ゆとりのあるレイアウトでしか使えない方法ですね。

#3 2022-01-14 09:27:08

チポ
Member

Re: 文字表示について

表示用に計算フィールドを作り、
元のフィールドの前面にぴったり重ねて配置すればいいのでは。
そのフィールドは入力禁止にして、塗りつぶしを適当な色に設定します。

その計算式ですが、
元のテキストが全角のみか半角のみなら、文字数で指定できますが、
混在しているとバイト数で指定しなければなりませんね。

バイト数の場合、
最初から一文字ずつバイト数を加えて行き、
指定バイト数になったらそこまでのテキストを返す。
Whileで関数で出来そうですが、今の私の使用環境が古いのでその関数で検証できません。
LetとEvaluateの再起式ではできまししたので一応提示しておきます。


Let ( [  $cnt = 0 ;
          $ln = Length ( テキスト ) ;
          $txt = "" ;
          $bt = 0 ;
          $les = " Case ( $cnt > $ln ; テキスト ; $bt > 指定バイト数 ; $txt & ""..."" ;
                                              Let ( [ $cnt = $cnt + 1  ;
                                                        $txt = Left ( テキスト ; $cnt ) ;
                                                        $bt = Length ( Filter ( $txt ; RomanZenkaku ( KanaZenkaku ( $txt ) ) )  & $txt ) ] ;
                                                    Evaluate ( $les ) ) ) " ] ;
             Evaluate ( $les ) )

Offline

#4 2022-01-14 09:36:38

himadanee
Guest

Re: 文字表示について

文字数・バイト数で判別するには、等幅フォントを使用する必要がありますよね。

#5 2022-01-14 10:03:10

チポ
Member

Re: 文字表示について

もちろんそうなんですが、
それほど厳密に考えるような問題ではないかと。

バイト数の場合、指定より -1 バイトで返す場合もありますし。。

Offline

Registered users online in this topic: 0, guests: 1
[Bot] claudebot

Board footer

Powered by FluxBB
Modified by Visman

[ Generated in 0.007 seconds, 7 queries executed - Memory usage: 508.8 KiB (Peak: 515.69 KiB) ]