例外「EInvalidOperation」を回避するには?

解決


majide  2012-04-06 13:51:32  No: 41882  IP: 192.*.*.*

あるフォームの中で、複数のパネルを条件によって表示/非表示にしています。
その中で、あるComboBoxにカーソルを当て、キーボードから値を入力していくと
下記の例外ダイアログが表示されます。

---------------------------
<アプリ名>
---------------------------
無効/非表示ウィンドウにはフォーカスを設定できません.
---------------------------
OK   
---------------------------

このComboBox自体にはイベントは設定されていませんが、
ComboBoxに文字を入力していくと、文字数に関係なく上記エラーが発生します。


メッセージでネットを検索した所、SetFocusまわりが怪しいという事で調べると、
いくつかSetFocusを使っている部分もありましたが、上記の通りComboBoxに
文字入力した時のイベント処理はなにもありませんので、なぜこのエラーが
発生するのかわからくなってしまっています。

念のために、それぞれのpanel.visibleでSetFocusが実行されるのを抑止した
つもりですが、それでも状況は変わりません。

なにかアドバイスなどありましたらお願いできますでしょうか?

編集 削除
ない  2012-04-06 15:50:51  No: 41883  IP: 192.*.*.*

何個のパネルを切り替えているのか分かりませんが、
ソース上、いったんすべて表示にして、実行。
このときは、エラーが出ないんですよね?
で、そのあと、1つずつパネルの非表示をするようにして
実行し、どのパネルでエラーになるのかで
特定しないと難しいようなきがします。

回答になっていないかも知れませんが・・・。

編集 削除
けど  2012-04-06 22:30:03  No: 41884  IP: 192.*.*.*

とりま騙されたと思って
XX.SetFocus を ActiveControl:=XX に全て変えてテストしてみてください

編集 削除
majide  2012-04-09 10:41:39  No: 41885  IP: 192.*.*.*

ないさん、けどさん、レスありがとうございます。
色々やってはみましたが、やはり解消できませんでした。
メッセージは出るものの実害はない事や、その画面を利用する
頻度も少ないので、ひとまずしばらく様子見としたいと思います。

編集 削除
KHE00221  2012-04-11 01:36:58  No: 41886  IP: 192.*.*.*

①  とりあえず  SetFocus を全部コメントにしてみる
②  1個づつ元に戻してどこの SetFocus で発生しているか確認する
③  何故そこの SetFocus が実行されているか考える

編集 削除
majide  2012-04-17 08:49:21  No: 41887  IP: 192.*.*.*

レスをくださった皆様、ありがとうございました。
パネル表示回りを再確認して書いた所、現象は発生しなくなりました。
原因が特定できませんでしたが、とりあえず解決とさせていただきます。

編集 削除