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

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

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

You are not logged in.

Announcement

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


#1 2024-02-19 09:04:06

himadanee
Guest

Re: 印刷時にフィールド内で改行させない方法

F2~F7までで1つのマージフィールドってことですよね?
F4の後で改行しているわけだから、F3の直後で改行したら3行になってしまってF5~F7は見えなくなりませんか?

#2 2024-02-19 09:37:36

チポ
Member

Re: 印刷時にフィールド内で改行させない方法

F2,F3,F4の文字数が多く1行で収まらない場合、F4の前で改行したい。
ですよね。
それは次のF5,F6,F7も同様に考えるのでしょうか?

レイアウトの細かなところが理解できていませんが、、

レイアウトを複数作って、文字数で切り替える。
とか、
複数フィールドを連結したフィールドを作る。
とか必要なのでは。

Offline

#3 2024-02-19 11:38:11

himadanee
Guest

Re: 印刷時にフィールド内で改行させない方法

ああ、そういえば元々F4の途中で改行しても同じことですもんね...

「F1」 《F2》 《F3        》
      《F4》《F5》 《F6》《F7》
のようになればいいってことですか。
チポさんも書いてますが、文字単位の禁則処理機能しかないので、かなり面倒な設定をしないと無理だと思います。
F4以外も処理するのかというのも問題になりますね。F4が長いなら行頭に送っても、F5以降も途中で改行になる可能性が高そうです。

フォーム形式ですか?

#4 2024-02-19 12:20:20

Shin
Member

Re: 印刷時にフィールド内で改行させない方法

例外的に、F3 の途中で改行されてしまうことも、可能性としてはありますよね。
マージフィールドにせずに、1項目ごとに文字数をチェックしながら、テキストをつないでいく処理が必要でしょうね。

Offline

#5 2024-02-19 13:07:18

チポ
Member

Re: 印刷時にフィールド内で改行させない方法

F1からF7が一つのブロックで、次のF8以降に影響を及ぼさない。
のなら、
ブロックごとに考えればいいのですから、
そのブロックがいくつあってもそんなに問題にならないでしょう。

Offline

#6 2024-02-22 11:43:17

himadanee
Guest

Re: 印刷時にフィールド内で改行させない方法

実装実験してみようと思いましたが、縦10.4㎝ぐらいしかないところに、F1やF8の文字数はどのぐらい取ってるんでしょうか。
一般的なA4縦に横書きの文書だと40字詰めぐらいですから、F1~F4まで全体で20字しか入りませんよね。かなり文字が小さい?

「フィールド内改行禁止」という条件ではだめなのかな。
「改行するフィールドは次行に送る」

#7 2024-02-23 22:38:53

Shin
Member

Re: 印刷時にフィールド内で改行させない方法

先附    車海老 うるい春若布の黄身酢掛け
八寸    新筍木の芽和え わらび白酢掛け もろ子甘露煮 菜の花と子持昆布 近江蒟蒻のお浸し
向附    旬魚のお造り
煮物椀 帆立真丈清汁仕立て白魚木の芽
燒物    近海あわびの味噌掛け 鰆の巻繊焼き 蕗とじやこの有馬煮
お凌ぎ うすい豆の擦り流し蒸し帆立
鉢物    金目鯛と道明寺の銀あん掛け 春野菜を添えて
食事    春あさりと筍の土鍋ご飯 香の物赤出汁
水菓子 桜花塩プリン 白葡萄果汁とレモンのジュレ掛け
みたいな献立でしょうね。12ptの文字を使うとして、1行に25文字ほど入りそうですので、献立内容に20文字ほど使えそうです
上に例ですと、八寸で引っかかります。1項目ずつ追加しながら文字数を見ていき、改行させていけばいいでしょうね。
八寸  新筍木の芽和え わらび白酢掛け
までは入るのですが、次は入りきらないので、
  もろ子甘露煮
の前のスペースを、改行、タブに置き換えます
具体的には1行に20文字だとして、¶の位置を見て、その次の改行までの文字数を見ます。それが20以下ならそのまま、超えていれば、20文字位置までの最後のスペースを置き換えます。それを繰り返していけばいいでしょう。
ただ、現実の運用は難しくて、例での鉢物を改行させると間が伸びてしまいますので、文字を少し詰める事になるでしょう。その加減をどうするかです

Last edited by Shin (2024-02-23 22:53:53)

Offline

#8 2024-02-25 17:44:16

Shin
Member

Re: 印刷時にフィールド内で改行させない方法

こんな式でいいのかも

While (
[
	txt0 = txt ;
	i = ValueCount ( txt ) ;
	res = ""
] ;
	i ;
[
	t = GetValue ( txt0 ; i ) ;
	t = While (
		[
			cr = "¶    " ;
			t0 = Substitute ( t ; " " ; cr ) ;
			$l = 1
		] ;
			$l < ValueCount ( t0 ) ;
		[
			t0 = 
				Case ( 
					Length ( GetValue ( t0 ; $l ) & GetValue ( t0 ; $l + 1 ) ) < 23 ;
						Replace ( t0 ; Position ( t0 ; cr ; 1 ; $l ) ; Length ( cr ) ; " " ) ;
						Let ( $l = $l + 1 ; t0 )
				)

		] ;
			t0
		) ;
	res = List ( t ; res ) ;
	i = i - 1
] ;
	res
)

https://www.dropbox.com/scl/fi/bzrtzwai … 6bo5j&dl=0

Offline

#9 2024-02-26 11:30:46

himadanee
Guest

Re: 印刷時にフィールド内で改行させない方法

GetLayoutObjectAttributeを使うアイデアがあったのですが、この関数はプレビューモードなどでは機能しなくて、没でした。
昔は機能してたと思ったんですが...記憶違いか、あるいはFM16のヘルプに「screen」の記載が追加されてるから、そのころからなのかな。

今回は縦書きということなので、文字数で判定して問題ない感じですね。

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

Board footer

Powered by FluxBB
Modified by Visman

[ Generated in 0.009 seconds, 9 queries executed - Memory usage: 518.45 KiB (Peak: 523.35 KiB) ]