enter連打による必要以上のイベント実行
お世話になっております。
Magicユーザーズフォーラム - データビューに定義した「実行ボタン」をENTERし続けた動作について(バァファしてしまう (magicsoftware.co.jp)
上記の件ですが、現在も有効な解決手段はありませんか?
今回は、上記質問のボタン→バッチ→出力のようなプログラムに加え
エディットコントロールで次項目イベントを発生させると
サブタスクをコールし画面表示する、というプログラムもありますが
enter(tab)を連打或いは押しっぱなしにすることで、次の画面が二つも三つも開きます。
モーダルであれば確実に一つしか開きませんが、MDI(全画面)が前提のため不可です。
ボタンをクリックすることで回避というのもクライアントの意向で不可です。
また、当時質問者が自己解決されている対処法でも今回は解決できませんでした。
MSJにも問い合わせ中です。
よろしくお願いします。
サーバー環境:windows server2016 magic xpa 3.3d RIA
クライアント環境:windows10 ver20H2
-
ISHIJIMAさん
>押した回数分画面を表示させたいという仕様
いいえ、何度押そうが一度だけ表示してほしいのです
表示した後にサブタスク上で残りのenterが実行されるのは構いません。
>連打なのか・押しっぱなしなのか・通常の入力なのかを判断できなければ
>できない事なのではないでしょうか?
>そのあたりは判断できないのでは?
判断できなくても構わないと思います
そもそもですが、どんな速度で何度押そうと
一回目のenterでサブタスクをコールしている以上
二回目以降のenterはコール先のサブタスク内で判断・実行されるべきものだと思っており
親タスクに留まり実行されていることが解せません。
一回目のenter処理中に次のenterが処理されているのも謎です(ウエイトもかけられませんし)
これがシステムとして一般的な動きなのでしょうか?
-
ISHIJIMAさん
●タスク1
・タスクタイプ
リッチクライアント
・データビュー
変数 項目名:伝票番号 数値
変数 項目名:助走用1 文字
変数 項目名:助走用2 文字
・フォーム
MDI調整 変数3つを伝票番号、助走用1、助走用2の順でエディットコントロールで配置
・ロジック
イベントハンドラ 内部イベント・次項目 コントロール:助走用2
コール サブタスク タスク2
・タスク2タスクタイプ:リッチクライアント
データビュー:適当に
フォーム:MDI調整 終了ボタンを配置(内部イベント終了)
このプログラムで伝票番号からenterを押し続けて(押しっぱなし)タスク2に遷移しますと
タスク2が二つ、三つ開きます。(PCの性能にもよるかもしれませんが)
フラグ制御は効果がないようです。(項目更新・イベント経由で項目更新ともに)
よろしくお願いします。
-
お待ちしております。
よろしくお願いします。
-
変更してみました。
確かにタスク2は一度しか開かなくなりました
しかし、タスク2が起動した直後に、タスク1で2回目以降のenterの残骸が動作するため
タスク2の上にタスク1が被ってしまい、タスク2の呼び出しが不可能になります。
-
ISHIJIMAさん
タスク2のタスク後にFALSE処理
タスク1の次項目イベントのロジックの中にブロックif notフラグを設定したところ
求めている動作となりました
お手数をおかけしました
ありがとうございました!
-
キーボードキャッシュはあればあったで不便なところもありますし、なければないで不便なところもありますので難しいですね。
-
失礼、キーボードキャッシュではなくて、キーボードバッファですね。
サインインしてコメントを残してください。
コメント
7件のコメント