初心者のFileMaker pro Q&A

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

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

ログインしていません。

アナウンス

Claris FileMaker Pro ヘルプ
新しい質問は、新規トピック から投稿して下さい。


#1 2023-09-08 21:21:40

sunri
メンバー

「tab」キーと「enter」を判断するにはどうしたらいいのでしょうか

FileMakerProの18をウインドウズ10で使っています。

フォームの入力フィールで「tab」キーが押されたか「enter」キーが押されたかによって、スクリプトを別々に起動したいと思いますが、キーが押されたときの
変数$INKEYを以下のようにしても数値が入ってきません。どうしたら $INKEY に数値が入ってくるのでしょうか。

$INKEY に変数設定 Code ( Get( トリガキー入力 ) ) これでは、$innkiに数値が入りませんでした。

宜しくお願い致します。

オフライン

#2 2023-09-08 21:25:13

himadanee
ゲストユーザー

Re: 「tab」キーと「enter」を判断するにはどうしたらいいのでしょうか

何のトリガを使っていますか?
onObjectExit?

#3 2023-09-09 08:41:49

Shin
メンバー

Re: 「tab」キーと「enter」を判断するにはどうしたらいいのでしょうか

onObjectKeystroke を使ってみれば。

オフライン

#4 2023-09-09 22:29:15

sunri
メンバー

Re: 「tab」キーと「enter」を判断するにはどうしたらいいのでしょうか

ご回答ありがとうございます。
トリガーはポータル行の中に日付を入れて、内容が変更になった場合のOnObjectValidataからスクリプトを起動し、エンターを押すと次のレコードの日付項目には移動するようになりますが、タブキーを押してもエンターを押したときと同じく次のレコードの日付に移動します。これを、タブキーを押したときは、同じポータル行の右のフィールドに移動するようにしたいと思います。このスクリプトの中にtabキーが押されたのか判断することができるのでしょうか。
onObjectKeystroke は使ったことがありません。このような場合どう使うことができるのでしょうか。宜しくお願いします。

オフライン

#5 2023-09-10 13:14:15

Shin
メンバー

Re: 「tab」キーと「enter」を判断するにはどうしたらいいのでしょうか

> エンターを押すと次のレコードの日付項目には移動する
次のポータル行ですか?

レイアウトモードでのタブ順の設定だけでいいのでは。同じポータル行の右のフィールドに次のタブ順を設定します。
enter は、次のフィールドに移動のチェックを外して、トリガーで次のポータル行へ移動させればいいでしょう。

オフライン

#6 2023-09-10 13:17:14

himadanee
ゲストユーザー

Re: 「tab」キーと「enter」を判断するにはどうしたらいいのでしょうか

ヘルプに書いてあるように、Get (トリガキー入力)は~Keystrokeのイベントでないと取得できませんね。
https://help.claris.com/archive/help/18 … ke.html%23

OnObjectValidataは、移動以外に何か別の用途で必要なんでしょうか。
キーイベントで移動先を変えると、その処理の中でフィールドが変わってしまうことになるので、複数のトリガを適用する場合は処理が複雑になります。(1つのスクリプトが処理中に別のイベントスクリプトが割り込んできます)

#7 2023-09-11 01:17:13

sunri
メンバー

Re: 「tab」キーと「enter」を判断するにはどうしたらいいのでしょうか

ポータル行で予定日を入力し、エンターキーを押すとOnObjectValidataからスクリプトを起動し別の明細テーブルの予定日欄に入力された予定日が書き込まれ、次のポータル行に移動するようにすることはできました。
もちろんタブ順の設定では次の行への移動の指定はポータルでは一行しか指定できないので、タブ順では次の行への移動ができないのではないかと思います。
予定日の入力をしないと、タブキーで同一ポータル行の予定日2へ移動しますが、予定日を入れてエンターだと次のポータル行の予定日に移動して、予定日を入力してタブキーを押すと同一ポータル行の予定日2へ移動するようにしたいと思っています。このような場合、方法はあるのでしょうか。

OnObjectKeystrokeを指定してみましたが、キーを一つたたくとそのキーの数値はGet (トリガキー入力)で入りますが、本来の予定日欄の入力はできませんでした。

オフライン

#8 2023-09-11 13:01:49

Shin
メンバー

Re: 「tab」キーと「enter」を判断するにはどうしたらいいのでしょうか

ポータル行の中に、日付  - 日付2 でタブ順を設定しておきます。
日付 フィールドに、onObjectKeystroke で次のスクリプトをトリガーします。

If [ Code ( Get ( トリガキー入力 ) ) = 10 ] 
	ポータル内の行へ移動 [ 選択: オン ; 次の ; 最後まできたら終了: オフ ]
	フィールドへ移動 [ テーブル2::日付 ] 
	現在のスクリプト終了 [ テキスト結果: 0 ] 
End If

オフライン

#9 2023-09-11 23:43:15

sunri
メンバー

Re: 「tab」キーと「enter」を判断するにはどうしたらいいのでしょうか

ありごとうございます。試してみたのですが、onObjectKeystroke では日付の最初の2(2023/9/1と入力したい)のキーを入力したらスクリプトが起動してしまいます。
例えば、最初の日付にあたる9月の日付に[2023/9/1]を入力して、エンターを押したらポータル行の2行目の行へ移動して、日付に[2023/9/11]に入力してエンターを押すと9月の日付が3行目の9月の日付に移動するようにしたいのがエンターキーを押した場合の方法です。(これはOnObjectValidataからのスクリプトでできています。記入していただいたような "ポータル内の行へ移動 [ 選択: オフ ; 次の ; 最後まできたら終了: オフ ]"です。)
もう一つの方法として、最初の日付にあたる9月の日付に[2023/9/1]を入力して、エンターではなくTabキーを押したら、同じようにスクリプトが起動して、ポータル同一行の次のフィールドへ移動して10月の日付を「2023/10/1」と入力してTabキーを押したら、ポータルの同一行の次のフィールドへ移動して11月の日付を入力するフィールドに移動して、「2023/11/2」と入力し、今度はエンターキーを押したら、ポータル行の次の行へ移動して、2行目の11月の日付に[2023/11/5]に入力できるようにしたいと思っています。ポータルでこのような動きができるようにしたいと思っています。日付を入力後どうすればエンターとTabきーが押されたか判断できるのか困っています。

オフライン

#10 2023-09-12 00:25:16

Shin
メンバー

Re: 「tab」キーと「enter」を判断するにはどうしたらいいのでしょうか

>onObjectKeystroke では日付の最初の2(2023/9/1と入力したい)のキーを入力したらスクリプトが起動してしまいます。
そのスクリプトが動くと不都合があるのですか?? 1000ストローク/sec 位されると、問題がでるかもしれませんが。

https://www.dropbox.com/scl/fi/w473uhe8 … cmwgv&dl=0
のサンプルファイルで、動作に不自然さがありますか?

編集者 Shin (2023-09-12 00:32:25)

オフライン

#11 2023-09-12 09:47:58

himadanee
ゲストユーザー

Re: 「tab」キーと「enter」を判断するにはどうしたらいいのでしょうか

デバッガを起動した状態でテストしてると不都合に感じるかもしれません。

#12 2023-09-13 22:21:34

sunri
メンバー

Re: 「tab」キーと「enter」を判断するにはどうしたらいいのでしょうか

Shinさん himadaneeさん ありがとうございました。サンプルファイルを作っていただき丁寧に教えていただいたおかげでできました。
結論として、onObjectKeystroke により、押されたキーコードをグローバル変数にセットして、予定日が入力されたら、OnObjectValidataにより、書き込み用のスクリプトを起動し、最後に押されたグローバル変数のキーコードにより
次の行に移動するかタブ順で予定日2に移動すればよかったのです。感謝しています。

オフライン

#13 2023-09-13 22:38:45

Shin
メンバー

Re: 「tab」キーと「enter」を判断するにはどうしたらいいのでしょうか

もっとシンプルにできますよ。
上のサンプルファイルを、admin でログインして(shift or option を押したままでファイルを開く)、トリガーの設定とスクリプトを見てみてください。enter が押された時のみ、処理が動きます。

オフライン

#14 2023-09-15 21:50:21

sunri
メンバー

Re: 「tab」キーと「enter」を判断するにはどうしたらいいのでしょうか

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

オフライン

クィック投稿

メッセージを書いて送信してください。
登録の確認

実在の人物による登録であることを確認します。

Board footer