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

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

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

You are not logged in.

Announcement

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


#1 2017-12-01 06:40:10

koeda
Member

追加したテキストに書式を設定したい

「原稿」という1つのフィールドに対して、
「投稿」と「校正」という2つの編集ボックスを作ります。

「投稿」から入力されたテキストは書式なしでも構わないのですが、
これに「校正」から追記したとき、追記部分がわかるようその部分だけ
文字色を赤くすることは可能でしょうか。

手動で「校正」の追記部分を選択して書式変更することが可能ですが、
変更忘れがないように、文字色を半強制的に変更したいと思います。
スクリプトトリガと書式設定関数を組み合わせてできないかと色々試したのですが、
うまくいきません。

環境はFM Pro 15です。

Last edited by koeda (2017-12-01 07:02:33)

Offline

#2 2017-12-01 11:17:09

チポ
Member

Re: 追加したテキストに書式を設定したい

編集開始位置をグローバル変数に入力

これは、
編集位置クリックでOnObjectEnterでスクリプト実行
または、
編集位置までカーソルを動かすのなら、その位置でボタンクリックでスクリプト実行
でできますね。

編集後、OnObjectExit のスクリプト

その時点のカーソル位置を求めて、
上記の編集開始位置とで編集箇所が選択できますから、
このテキストを変数にして、
Replace関数で、変数を赤にして置き換え。

エスケープを考えないと思わぬ事態になるかもですね。。

Offline

#3 2017-12-01 11:57:50

honda
Member

Re: 追加したテキストに書式を設定したい

FileMakerだけでやるには、テキスト編集時のイベントが少なすぎて辛いです。
チポさんの案のようにボタンを絡めないと編集しにくいでしょうし。

diffやfcの様な外部のテキスト差分比較用のコマンドを使うのはどうでしょうか。
ただコマンドの出力をFileMakerで加工したり、OSに依存するのも嫌なので、
私なら https://github.com/sergi/go-diff とかで差分を取って、
FileMaker用に加工して返すプログラムをGoで書いてしまいます。

Offline

#4 2017-12-01 12:55:50

Hiro
Member

Re: 追加したテキストに書式を設定したい

>「投稿」から入力されたテキストは書式なしでも構わないのですが、
> これに「校正」から追記 したとき、追記部分がわかるよう その部分だけ
> 文字色を赤くすることは可能でしょうか。

この通りなら、単に「校正」部分を「校正」に書き換えれば良いわけで、
いたって簡単では!

・ フィールド設定[「投稿」:値:※下式]
・ Substitute(「投稿」; [「校正」; TextColor(「校正」; RGB(255;0;0))])

Offline

#5 2017-12-01 13:25:17

チポ
Member

Re: 追加したテキストに書式を設定したい

「校正」フィールドをちゃんと見ていなかった ;;;;

カーソルの位置に校正フィールドの値を書式設定して、
  計算結果を挿入
でいいんですね。

Substitute
だと、「校正」フィールドと同じ値が元にあるとまずいですね。


と書いて構造が分からなくなりました。

> 「原稿」という1つのフィールドに対して、
> 「投稿」と「校正」という2つの編集ボックスを作ります。

これはどういうことですか?

Offline

#6 2017-12-01 13:53:28

honda
Member

Re: 追加したテキストに書式を設定したい

フィールドは「原稿」ひとつ。
そのフィールドを参照するテキストフィールドレイアウトオブジェクトとして、
最初に入力を行う「投稿」レイアウトオブジェクトと、
その後その校正作業を行う「校正」レイアウトオブジェクトがある。
「校正」レイアウトオブジェクトから行った変更が、自動的に書式設定された状態にしたい、
ということでは?

Offline

#7 2017-12-01 13:58:46

チポ
Member

Re: 追加したテキストに書式を設定したい

hondaさん
私も最初そう考えて、最初のレスになりました。

そこへ
Hiroさんのレスで??となった次第です。

そもそも
一つのフィールドをどう表示しようと、その値に変わりがありませんよね。

Offline

#8 2017-12-01 16:08:34

honda
Member

Re: 追加したテキストに書式を設定したい

Hiroさんの勘違いだと思います。

ひとつのフィールドにふたつのレイアウトオブジェクトを置いているのは、
一方はそのまま入力、一方はトリガを使って…という仕組みを作りかけだからでしょうか。

Offline

#9 2017-12-01 16:15:16

koeda
Member

Re: 追加したテキストに書式を設定したい

皆さん、本当にありがとうございます。

まず、やりたかったことは#6でhondaさんが説明し直してくださった通りです
(質問がわかりづらくて済みません!)。

同じテキストを複数の人が編集した時に、入力する文字色をユーザー毎に自動的に
変えることができれば、自分以外の人が編集したことが一目でわかるので便利!
という要望があり、このような質問になった次第です。

そして、#2のチポさんのアドバイスに沿ってスクリプトを作成し、やりたいことが実現できました。

なお、onObjectEnterとonObjectExitトリガを使うと、同じフィールド内で複数個所を連続して
編集した時に編集開始位置が取れないので、onObjectKeystrokeとonObjectModifyを使うようにしました。
具体的には、onObjectKeystrokeで編集開始位置を、onObjectModifyで編集終了位置をそれぞれ取得し、
それを元にTextColor関数で文字色を設定するようにしました。

deleteキーで文字を削除するなど、編集の開始位置と終了位置が前後する場合があるので
その点で苦労しましたが…

ありがとうございました。

Last edited by koeda (2017-12-01 16:24:58)

Offline

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

Board footer

Powered by FluxBB
Modified by Visman

[ Generated in 0.008 seconds, 9 queries executed - Memory usage: 522.3 KiB (Peak: 527.21 KiB) ]