みんなに優しく、解りやすくをモットーに開設しています。 以下のルールを守りみんなで助け合いましょう。
1.ファイルメーカーで解らない事があればここで質問して下さい。 何方でも、ご質問・ご回答お願いします。 (優しく回答しましょう)
You are not logged in.
Pages: 1
F2~F7までで1つのマージフィールドってことですよね?
F4の後で改行しているわけだから、F3の直後で改行したら3行になってしまってF5~F7は見えなくなりませんか?
F2,F3,F4の文字数が多く1行で収まらない場合、F4の前で改行したい。
ですよね。
それは次のF5,F6,F7も同様に考えるのでしょうか?
レイアウトの細かなところが理解できていませんが、、
レイアウトを複数作って、文字数で切り替える。
とか、
複数フィールドを連結したフィールドを作る。
とか必要なのでは。
Offline
ああ、そういえば元々F4の途中で改行しても同じことですもんね...
「F1」 《F2》 《F3 》
《F4》《F5》 《F6》《F7》
のようになればいいってことですか。
チポさんも書いてますが、文字単位の禁則処理機能しかないので、かなり面倒な設定をしないと無理だと思います。
F4以外も処理するのかというのも問題になりますね。F4が長いなら行頭に送っても、F5以降も途中で改行になる可能性が高そうです。
フォーム形式ですか?
例外的に、F3 の途中で改行されてしまうことも、可能性としてはありますよね。
マージフィールドにせずに、1項目ごとに文字数をチェックしながら、テキストをつないでいく処理が必要でしょうね。
Offline
F1からF7が一つのブロックで、次のF8以降に影響を及ぼさない。
のなら、
ブロックごとに考えればいいのですから、
そのブロックがいくつあってもそんなに問題にならないでしょう。
Offline
実装実験してみようと思いましたが、縦10.4㎝ぐらいしかないところに、F1やF8の文字数はどのぐらい取ってるんでしょうか。
一般的なA4縦に横書きの文書だと40字詰めぐらいですから、F1~F4まで全体で20字しか入りませんよね。かなり文字が小さい?
「フィールド内改行禁止」という条件ではだめなのかな。
「改行するフィールドは次行に送る」
先附 車海老 うるい春若布の黄身酢掛け
八寸 新筍木の芽和え わらび白酢掛け もろ子甘露煮 菜の花と子持昆布 近江蒟蒻のお浸し
向附 旬魚のお造り
煮物椀 帆立真丈清汁仕立て白魚木の芽
燒物 近海あわびの味噌掛け 鰆の巻繊焼き 蕗とじやこの有馬煮
お凌ぎ うすい豆の擦り流し蒸し帆立
鉢物 金目鯛と道明寺の銀あん掛け 春野菜を添えて
食事 春あさりと筍の土鍋ご飯 香の物赤出汁
水菓子 桜花塩プリン 白葡萄果汁とレモンのジュレ掛け
みたいな献立でしょうね。12ptの文字を使うとして、1行に25文字ほど入りそうですので、献立内容に20文字ほど使えそうです
上に例ですと、八寸で引っかかります。1項目ずつ追加しながら文字数を見ていき、改行させていけばいいでしょうね。
八寸 新筍木の芽和え わらび白酢掛け
までは入るのですが、次は入りきらないので、
もろ子甘露煮
の前のスペースを、改行、タブに置き換えます
具体的には1行に20文字だとして、¶の位置を見て、その次の改行までの文字数を見ます。それが20以下ならそのまま、超えていれば、20文字位置までの最後のスペースを置き換えます。それを繰り返していけばいいでしょう。
ただ、現実の運用は難しくて、例での鉢物を改行させると間が伸びてしまいますので、文字を少し詰める事になるでしょう。その加減をどうするかです
Last edited by Shin (2024-02-23 22:53:53)
Offline
こんな式でいいのかも
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
)
Offline
GetLayoutObjectAttributeを使うアイデアがあったのですが、この関数はプレビューモードなどでは機能しなくて、没でした。
昔は機能してたと思ったんですが...記憶違いか、あるいはFM16のヘルプに「screen」の記載が追加されてるから、そのころからなのかな。
今回は縦書きということなので、文字数で判定して問題ない感じですね。
Pages: 1
[ Generated in 0.010 seconds, 9 queries executed - Memory usage: 519.41 KiB (Peak: 524.32 KiB) ]