HOME
HELP
新規作成
新着記事
ツリー表示
スレッド表示
トピック表示
ファイル一覧
検索
過去ログ
[ スレッド内全6レス(親記事-6 表示) ] <<
0
>>
■14080
/ 親記事)
フォーム入力途中でESC
▼
■
□投稿者/ 篤姫
-(2023/12/21(Thu) 13:01:41)
桐10S Windows10
フォームで入力途中にESCで入力を中止した時に
指定のコマンドボタンにフォーカスを移動させたいのですが
よろしくお願いします。
引用返信
[メール受信/OFF]
削除キー/
編集
削除
■14081
/ ResNo.1)
Re[1]: フォーム入力途中でESC
▲
▼
■
□投稿者/ 通りすがり
-(2023/12/21(Thu) 15:50:23)
指定のコマンドボタンを実行じゃダメですか?
1014×592 => 250×145
1703141423.jpg
/
77KB
引用返信
[メール受信/OFF]
削除キー/
編集
削除
■14082
/ ResNo.2)
Re[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]
削除キー/
編集
削除
■14083
/ ResNo.3)
Re[2]: フォーム入力途中でESC
▲
▼
■
□投稿者/ 篤姫
-(2023/12/22(Fri) 09:05:49)
通りすがりさん
ありがとうございます。
やってみます。
引用返信
[メール受信/OFF]
削除キー/
編集
削除
■14084
/ ResNo.4)
Re[2]: フォーム入力途中でESC
▲
▼
■
□投稿者/ 篤姫
-(2023/12/22(Fri) 09:09:00)
ONnojiさん
ご指導いただいたイベント勉強します。
ありがとうございます。
引用返信
[メール受信/OFF]
削除キー/
編集
削除
■14085
/ ResNo.5)
Re[3]: フォーム入力途中でESC
▲
▼
■
□投稿者/ ONnoji
-(2023/12/22(Fri) 11:32:19)
2023/12/22(Fri) 16:54:20 編集(投稿者)
蛇足です。
┌when 手続き"テキスト_9::入力後("2023年12月22日",0,0)"を実行開始しました
│
│ :テキスト_9
│ :&return : -1
│ :&return : 0
│
└end
┌when 手続き"フォーム::タイマー1( )"を実行開始しました
│
│ :&return : 1
│
└end
[入力後]イベントハンドラの引数:&モード/長整数
入力したデータが確定されたか、キャンセルされたかを示す番号が格納されます。
値 説明
1 確定
0 [Esc]キーによるキャンセル
↑これは論理値と同じなので
if ( .not &モード )
:
end
とすれば、[Esc] キーを検出することになります。
このように便利なのですが、フォーム上にテキストボックスが多数ある時には、
それぞれのオブジェクトごとに[入力後]イベントハンドラを作成しなければなりません。
何故ならば、ファミリには[入力後]イベントハンドラが無いからです。
・・・・・・・・・・・・・・・・・・・・・・
なので、テキストボックスが多数ある時には、コツコツと作るしかありません。(^^ゞ
これは愚直で格好悪く思えますが、一目瞭然なのでヨシだと思います。
◇ ◇ ◇ ◇ ◇ ◇ ◇ ◇ ◇ ◇ ◇
格好悪いのを嫌って、[キーダウン]イベントで対応する方法も考えられますが、
常時[キーダウン]イベントをオンにしておくのは無駄に[キーダウン]イベントが発生するのでデバッグし難いです。
・・・・・・・・・・・・・・・・・・・
なので、エディタに進入した時に限り[キーダウン]イベントをオンにして、
それ以外の時には[キーダウン]イベントをオフにするのがスマートです。
・・・・・・
しかし、スマートにしようとすると、今度はプログラムが複雑になります。
なので、[キーダウン]イベントよりも、[入力後]イベントの方が優れていると思いますよ。
なお、[実行コマンド:ESCキー]の方が簡便で面倒臭くないのでお勧めします。
私だったら[Esc] キーを2度押してね!を採用すると思いますよ。
引用返信
[メール受信/OFF]
削除キー/
編集
削除
■14086
/ ResNo.6)
Re[4]: フォーム入力途中でESC
▲
▼
■
□投稿者/ 篤姫
-(2023/12/22(Fri) 17:08:37)
ONnojiさん
実行コマンドで処理を検討しています。
現在週末で業務処理を行っていますので
時間がある時にやってみます。
ありがとうございます。
引用返信
[メール受信/OFF]
削除キー/
編集
削除
このスレッドをツリーで一括表示
スレッド内ページ移動 / <<
0
>>
このスレッドに書きこむ
入力内容にタグは利用できません。
他人を中傷する記事は管理者の判断で予告無く削除されます。
半角カナは使用しないでください。文字化けの原因になります。
名前、コメントは必須記入項目です。記入漏れはエラーになります。
入力内容の一部は、次回投稿時の手間を省くためブラウザに記録されます。
削除キーを覚えておくと、自分の記事の編集・削除ができます。
URLは自動的にリンクされます。
記事中に No*** のように書くとその記事にリンクされます(No は半角英字/*** は半角数字)。
使用例:
No123 → 記事No123の記事リンクになります(指定表示)。
No123,130,134 → 記事No123/130/134 の記事リンクになります(複数表示)。
No123-130 → 記事No123〜130 の記事リンクになります(連続表示)。
■お願い−−−−−−−
質問には、できるだけ「OS・桐 Ver」等ご記入願います
将来ここに掲載されました内容を、桐のファイルへ変換予定です。
できましたら、3,500文字以内位での投稿お願い致します
■ご注意(Comment)−−−−−
通常モード・・・通常文章等
図表モード・・・等幅表示(イベントや数字等を記入したとき:
初期設定
)
■
解決しましたら最下段にチェックを入れてください
■
引用文は、最小限に、お願いいたします
Name
/
E-Mail
/
└> 関連するレス記事をメールで受信しますか?
NO
YES
/ アドレス
非公開
公開
Title
/
メッセージ中には下記URLと同じURLを書き込まないで下さい
URL
/
Comment/ 通常モード->
図表モード->
(適当に改行して下さい/半角10000文字以内)
File
/
アップ可能拡張子=> /
.gif
/
.jpg
/
.jpeg
/
.png
/.txt/.lzh/.zip/.mid
圧縮ファイル[lzh,zip]は、事前に解凍してご利用下さい。
1) 太字の拡張子は画像として認識されます。
2) 画像は初期状態で縮小サイズ250×250ピクセル以下で表示されます。
3) 同名ファイルがある、またはファイル名が不適切な場合、
ファイル名が自動変更されます。
4) アップ可能ファイルサイズは1回
100KB
(1KB=1024Bytes)までです。
5) ファイルアップ時はプレビューは利用できません。
6) スレッド内の合計ファイルサイズ:[77/500KB]
残り:[423KB]
パスワード
/
半角小文字で「ケイ・アイ・アール・アイ」を入力
削除キー
/
(半角8文字以内)
解決済み!
BOX/
解決したらチェックしてください!
プレビュー/
Mode/
通常管理
表示許可
Pass/
HOME
HELP
新規作成
新着記事
ツリー表示
スレッド表示
トピック表示
ファイル一覧
検索
過去ログ
-
Child Tree
-
-
Antispam Version
-