FC2ブログ

タブコントロールでキー入力イベントが発生しない!?

商品管理ソフトではタブコントールを使って、[商品検索]画面と[新規入力]画面を切り替えています。
[商品検索]で検索キーワードを入力し[検索実行]ボタンをクリックすると検索結果を表示できます。
ただここでも、マウスを使わずキー入力で検索実行できた方が早いので、ショートカットキーを設定しようとしました。
しかしここで問題発生です。

フォームの[キーボードイベント取得]を「はい」に設定してあるのですが、キー入力イベントが発生しないのです。
見落としがないか何度もコードをチェックしましたが、ありません。
そこでいつものようにWEBを探したところ、同じ問題を指摘している記事がひとつだけ見つかりました。
Microsoftフォーラムでの質問で、どうもAccess 2010ではこの問題が起こり、2007では起こらない模様です。
私の開発環境も2010です。
しかし結局、解決方法は載っていませんでした。

しかたがないので、他の方法で目的を達成することを考えることにしました。

検索タブの中の一部のテキストボックスでは、数字しか入力を受け付けないようにKeyPressイベント・プロシージャを使っており、同じ機能を別モジュールでもよく使うので、標準モジュールに記述し呼び出していますが、ちゃんと機能していました。
ということは、標準モジュールを使い関数的に作ればうまくいくかもしれないと思い、やってみたら正解でした。

スポンサーサイト



theme : プログラミング
genre : コンピュータ

開いたフォームがアクティブにならない

現在運用中のPOSレジソフトを少し変更することにしました。
従来は、販売処理完了後メッセージボックスを表示させ、確認後レジ画面を初期化していたのですが、
メッセージボックスは小さくて目立たないので、新しくフォームを作りそこにお釣りを表示させることにしました。

それ自体簡単なことなのですが、問題が発生しました。
メッセージボックスの時はそれがアクティブになっていたのに、フォームに変えたらアクティブにならないのです。
アクティブだとキー入力を受け付けますが、そうでないと受け付けず、マウス・クリックが必要となるのです。
レジ処理はできるだけ迅速に行う必要があり、できるだけマウスを使わずにキー操作でできるように設計しています。
だからまずいのです。

VBAからではなく単純にフォームを開くと、当然ですがそのフォームがアクティブになります。
メインフォームのVBAからそのフォームを開くとアクティブにはならないのです。

いろいろ試行錯誤し考えた結果、フォームを開く元のイベントがGotFocusだったからということに気づきました。
メイン・フォームのコントロールがフォーカスを取得したときのイベント・プロシージャで他のフォームを開いてもフォーカスは移るはずがありません。

ということで、別のイベント(キー入力)プロシージャに処理を移し、そこから開くようにしたらアクティブになりました。
私よりも上級のプログラマーなら当たり前の話かもしれませんが、意外な落とし穴でした。
何より私は、独学・自己流プログラマーなもんで...
何事も経験が重要ですね~

theme : プログラミング
genre : コンピュータ

プロフィール

tasys

Author:tasys
FC2ブログへようこそ!

カレンダー
プルダウン 降順 昇順 年別

08月 | 2016年09月 | 10月
- - - - 1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 -


最新記事
最新コメント
カテゴリ
天気予報

-天気予報コム- -FC2-
フリーエリア
検索フォーム
リンク
ブロとも申請フォーム

この人とブロともになる

QRコード
QRコード