メインコンテンツへスキップ

enter連打による必要以上のイベント実行

コメント

7件のコメント

  • tanakata

    ISHIJIMAさん

    >押した回数分画面を表示させたいという仕様

    いいえ、何度押そうが一度だけ表示してほしいのです

    表示した後にサブタスク上で残りのenterが実行されるのは構いません。

     

    >連打なのか・押しっぱなしなのか・通常の入力なのかを判断できなければ

    >できない事なのではないでしょうか?

    >そのあたりは判断できないのでは?

    判断できなくても構わないと思います

    そもそもですが、どんな速度で何度押そうと

    一回目のenterでサブタスクをコールしている以上

    二回目以降のenterはコール先のサブタスク内で判断・実行されるべきものだと思っており

    親タスクに留まり実行されていることが解せません。

    一回目のenter処理中に次のenterが処理されているのも謎です(ウエイトもかけられませんし)

    これがシステムとして一般的な動きなのでしょうか?

  • tanakata

    ISHIJIMAさん

     

    ●タスク1 

    ・タスクタイプ 

    リッチクライアント

    ・データビュー

    変数 項目名:伝票番号 数値 

    変数 項目名:助走用1 文字

    変数 項目名:助走用2 文字

    ・フォーム

    MDI調整 変数3つを伝票番号、助走用1、助走用2の順でエディットコントロールで配置

    ・ロジック

    イベントハンドラ 内部イベント・次項目 コントロール:助走用2  
     コール サブタスク タスク2
     
    ・タスク2

    タスクタイプ:リッチクライアント 

    データビュー:適当に

    フォーム:MDI調整 終了ボタンを配置(内部イベント終了)

     

    このプログラムで伝票番号からenterを押し続けて(押しっぱなし)タスク2に遷移しますと

    タスク2が二つ、三つ開きます。(PCの性能にもよるかもしれませんが)

    フラグ制御は効果がないようです。(項目更新・イベント経由で項目更新ともに)

     

    よろしくお願いします。 

     

     

     

  • tanakata

    お待ちしております。

    よろしくお願いします。

  • tanakata

    変更してみました。

    確かにタスク2は一度しか開かなくなりました

    しかし、タスク2が起動した直後に、タスク1で2回目以降のenterの残骸が動作するため

    タスク2の上にタスク1が被ってしまい、タスク2の呼び出しが不可能になります。

     

  • tanakata

    ISHIJIMAさん

     

    タスク2のタスク後にFALSE処理

    タスク1の次項目イベントのロジックの中にブロックif notフラグを設定したところ

    求めている動作となりました

     

    お手数をおかけしました

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

  • Tanda

    キーボードキャッシュはあればあったで不便なところもありますし、なければないで不便なところもありますので難しいですね。

  • Tanda

    失礼、キーボードキャッシュではなくて、キーボードバッファですね。

サインインしてコメントを残してください。