HOME HELP 新規作成 新着記事 ツリー表示 スレッド表示 トピック表示 ファイル一覧 検索 過去ログ

■14082 / 1階層)  フォーム入力途中でESC
□投稿者/ ONnoji -(2023/12/21(Thu) 20:31:27)
    2023/12/22(Fri) 14:42:16 編集(投稿者)
    2023/12/22(Fri) 10:35:04 編集(投稿者)
    2023/12/21(Thu) 21:26:43 編集(投稿者)

    > 桐10S Windows10
    >
    > フォームで入力途中にESCで入力を中止した時に
    > 指定のコマンドボタンにフォーカスを移動させたいのですが

    フォームのテキストボックスにキャレットがある時には、[テキストボックスのエディタ]の中に居ます。

    この[テキストボックスのエディタ]とはいわゆる入力用のバッファ(メモリ)の事です。
      ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・

    なので、[テキストボックスのエディタ]に進入している時に発生する[入力後]イベントで他のオブジェクトへフォーカスを移動することは禁止されています。

    つまり、[入力後]イベントが終了してから、他のオブジェクトへフォーカスを移動させてちょうだいね、ということです。
        ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・
     ◇ ◇ ◇ ◇

    私も[実行コマンド:ESCキー]が簡便で面倒くさくないのでお勧めします。
      ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・

    ただし、テキストボックスにキャレットがある時には、ESCキーを2度押す必要がありますね。

    1度めは、[テキストボックスのエディタ]から脱出するために、

    そして2度めは、[実行コマンド:ESCキー]の設定のために。

    これ位ならば、普通は[この仕様で良し!]じゃないでしょうか????

     ◇ ◇ ◇ ◇

    それでも、どうしてもというのであればサンプルを添付しますので参考にしてください。

    例によってサンプルは数日を目途に削除しますのでダウンロードはお早めに願います。

    なお、サンプルでは時限式タイマーを使用しています。

    時限式タイマーに関しては拙作webページを参考にしてください。

    こちら
     ↓
    桐の釣魚大全のトップ > フォームアプリケーション教書 第1部
    11 [タイマー]イベントの動的セット
    http://silicon7565.html.xdomain.jp/guide/guide_Part1.htm#section11


    ■ダイアログボックス.WFX

     フォーム
     ├ ファミリ
     ├ ワークスペース
     │ └ cmdフォーカス移動
     ├ フォーム操作バー
     ├ フォームヘッダ部
     │ └ tタイトル
     ├ フォーム明細部
     │ ├ テキスト_8
     │ │ └ ラベル_9
     │ ├ テキスト_9
     │ │ └ ラベル_10
     │ └ ラベル_11
     └ フォームフッタ部
       ├ cmdOK
       └ cmdキャンセル

     オブジェクト名: cmdフォーカス移動
     標題     : cmdフォーカス移動

      機能名     機能パラメータリスト
     1 フォーカス移動  "cmdキャンセル"
     2 なし
     3 なし
     4 なし


    ■ダイアログボックス.kex

    名札  メイン



    手続き定義開始 フォーム::タイマー1()
     変数宣言 自動,文字列{ &objectName }
     変数宣言 自動,整数 { &return }

     &objectName = "フォーム"
     オブジェクト操作 &objectName{タイマー1 = 0 } /* 時限式タイマーなので直ちに停止します */

     メソッド呼び出し 戻り値 = &return, @cmdキャンセル.フォーカス設定()
     **戻り値 意味
     ** 1 フォーカスを移した。
     ** 0 フォーカスを移せなかった。
     **-1 フォーカス設定できないハンドラ内で実行した
     トレース出力 _&return

    手続き定義終了

    手続き定義開始 テキスト_9::入力後(参照 文字列 &編集文字列,長整数 &モード,参照 長整数 &入力継続)
     変数宣言 自動,文字列{ &objectName }
     変数宣言 自動,整数 { &interval = 10 } /* 単位は1/100秒 ただし、0.1秒以下にはしないこと */
     変数宣言 自動,整数 { &return }

     トレース出力 &this
     if ( .not &モード )

      メソッド呼び出し 戻り値 = &return, @cmdキャンセル.フォーカス設定() /* NG!です */
      **戻り値 意味
      ** 1 フォーカスを移した。
      ** 0 フォーカスを移せなかった。
      **-1 フォーカス設定できないハンドラ内で実行した。
      トレース出力 _&return

      メソッド呼び出し 戻り値 = &return, @cmdフォーカス移動.実行() /* NG!です */
      トレース出力 _&return
      **戻り値 意味
      ** 1 正常終了。
      ** 1以外 実行できない。またはエラーで終了した。

      **以上のように[入力後]イベントハンドラ実行中にフォーカスを移動することは不可能

      **次のように、[入力後]イベントハンドラ実行後に時限式タイマーイベントを実行する
      &objectName = "フォーム"
      オブジェクト操作 &objectName{タイマー1 = 1, タイマー値1 = &interval } /* 時限式タイマーをセットします */
     end


    手続き定義終了


[メール受信/OFF] 削除キー/

→Re[2]: フォーム入力途中でESC /篤姫
 
前の記事(元になった記事) 次の記事(この記事の返信)
上記関連ツリー

Nomal フォーム入力途中でESC / 篤姫 (23/12/21(Thu) 13:01) #14080
Nomal Re[1]: フォーム入力途中でESC / 通りすがり (23/12/21(Thu) 15:50) #14081 1703141423.jpg/77KB
│└Nomal Re[2]: フォーム入力途中でESC / 篤姫 (23/12/22(Fri) 09:05) #14083
Nomal フォーム入力途中でESC / ONnoji (23/12/21(Thu) 20:31) #14082 ←Now
  └Nomal Re[2]: フォーム入力途中でESC / 篤姫 (23/12/22(Fri) 09:09) #14084
    └Nomal Re[3]: フォーム入力途中でESC / ONnoji (23/12/22(Fri) 11:32) #14085
      └Nomal Re[4]: フォーム入力途中でESC / 篤姫 (23/12/22(Fri) 17:08) #14086

All 上記ツリーを一括表示 / 上記ツリーをトピック表示
 
上記の記事へ返信

Mode/  Pass/

HOME HELP 新規作成 新着記事 ツリー表示 スレッド表示 トピック表示 ファイル一覧 検索 過去ログ

- Child Tree -
- Antispam Version -