商品コード(半角5桁)の入力欄があるとします。5桁目を入力したら,商品コードの次の欄にカーソールを自動移動させる機能のことです。
この要望は、汎用機システムをダウンサイジングする際、よく登場します。
汎用機のデータエントリー系のオンライン画面では, ごく当たり前にこの機能は実装されてます。
理由としては、データ入力は右手はテンキーのみに常駐し,左手は伝票の束に常駐させるスタイルが定着しています。
この背景から、エンターキーによる項目飛ばし問題が頻繁に起こると思っています。
エンターキーのキーストロークすら手間だというので, Autotab機能が好まれるようです。
汎用機でのカーソル制御は端末シュミレータが行っており,アプリとは別次元でコントロールされますので,アプリへの負担はありません。
クラサバアプリで実現可能なのか?
プロパティ設定では無理。( 断言してますが、私が知らないだけだったら御免なさい。教えて下さい。)
WinFormでは Textboxのmaxlangth で可能かな? と思いましたが、指定文字以上の時、制約が働くが、Eventは発生しない。
ChangeEvent等を使って作り込めば出来なくはない。MaskedTextBoxを使えばEventが起こるので、こちらの作り込みはTextboxより楽。しかし、いずれにしても、Event内でカーソル制御することになるので、如何なものかと思います。
(Access.VBAではできるそうな。なまじできているから、できない言ったら、技術力を疑われたりするからヤになってしまう。)
Webアプリではどうか,こちらも、Maxlengthプロパティはありますが, Eventはない。標準機能では無理。
Eventでサーバー処理させるは非現実的です。Javascriptで作ると可能か? changeEvent等をハンドリングすれば可能だか、業務使用の場合、セキュリティの都合でScriptをOffにしていたりするので、Scriptに依存するのも考え物。
結局無理ということにしています。
ところが、世の汎用機ユーザーに提案する時に、この辺りの説明が抜け落ちたりしているので、結果として、使い難くなったとの評価されることがあります。
WebはWebの,クラサバはクラサバの制約があるっことを、ダウンサイジング提案者は認識して欲しいモノです。ハイ。
かくも難しきは、共通認識。