みんなに優しく、解りやすくをモットーに開設しています。 以下のルールを守りみんなで助け合いましょう。
1.ファイルメーカーで解らない事があればここで質問して下さい。 何方でも、ご質問・ご回答お願いします。 (優しく回答しましょう)
You are not logged in.
Pages: 1
同一フィールドでも文字を選択すれば
選択範囲のフォントを変更できるようです
このフィールドの
半角英数はこのフォント
日本語はこのフォント
という設定はできませんか?
入力するとそれぞれ指定したフォントで入力されるという具合です
FMP15
WIN10
Offline
日本語のフォントをデフォルトにしておき、
半角英数のフォントを変更する式。
Let ( [
$t = フィールド ;
$c = 0 ;
$l = Length ( $t ) ;
$ff = "" ;
$ss = "Case ( $c = $l ; $ff ; Let ( [ $c = $c + 1 ; $m = Middle ( $t ; $c ; 1 ) ;
$ff = $ff & Case ( $m ≤ \"z\" ; TextFont ( $m ; \"フォント名\" ) ; $m ) ] ;
Evaluate ( $ss ) ) )"
] ;
Evaluate ( $ss ) )
半角の判定を、
小文字の「z」以下としました。
実用上これでいいと思います。
Offline
これを条件式にいれておけば
そのフィールドに英数字が入った時だけ自動でフォントがかわるということでしょうか?
Offline
とりあえず別の計算フィールドとして、
試してみたらいかがでしょう。
元のフィールドにしたいのでしたら、
入力値の自動化・既存値置き換え
とします。
Offline
フォント名の綴りを間違っていました
きちんと動作しました
ところで ! や ? などを除外するにはどのようになりますか?
Offline
半角英数のみ
にしたいのなら、
$m ≤ \"z\"
この部分をその条件に合わせて変更します。
Codeで書けば、
Code( 0 ) = 48
Code( 9 ) = 57
Code( A ) = 65
Code( Z ) = 90
Code( a ) = 97
Code( z ) = 122
で、その間は連続しています。
Offline
ああ、間違えてる
Code( 0 ) = 48
これは
Code( "0" ) = 48
こう書かなければダメです。
他も変更してください -_-
Offline
ありがとうございます
自力ではこんな複雑な式とてもかけそうにありません
ちなみに
$m = Middle ( $t ; $c ; 1 ) ;
ですが先頭文字位置 を
$c = 0 と変数にしているのはなぜですか?
$m = Middle ( $t ; 0 ; 1 ) ;
では何が違うのですか?
Offline
判定を繰返す式
Case ( $c = $l ; $ff ; Let ( [ $c = $c + 1 ;
$m = Middle ( $t ; $c ; 1 ) ;
$ff = $ff & Case ( $m ≤ \"z\" ; TextFont ( $m ; \"フォント名\" ) ; $m ) ] ;
Evaluate ( $ss ) ) )
これをよく見てください。
最初の条件式
$c = $l
$c(カウンタ)とテキストの長さを見ています。
カウンタの初期値は0ですから、
Let関数に飛びますね。
そこで、
$c = $c + 1
カウンタを +1 しています。
これによって、
次のMiddle関数でテキストの左から一文字ずつ順にとり、判定していけるのです。
Offline
大変ためになりました
ところでこのような式をかくとき
頭に式すべてが浮かぶのですか(例えば用途ごとの変数の数かど)
文字を書くようしてからさくさくとかいていけるのでしょうか?
どうやったらこのような複雑な式を書けるようになりましたか?
Offline
Pages: 1
[ Generated in 0.004 seconds, 9 queries executed - Memory usage: 517.4 KiB (Peak: 521.94 KiB) ]