投稿日 | : 2006/02/23(Thu) 13:34 |
投稿者 | : うみ |
Eメール | : |
URL | : http://www.geocities.jp/pentadect/Project1.lzh |
タイトル | : 同じフォームが二つロードされる。 |
いつもお世話になっております。
私の開発歴は約半年ですが、その前に1年ほどVBのソースを解読したり
していました。
開発環境はWindowsXp Pro Sp2 + VB6Sp6です
さて、皆様に伺いたいのは
「自作のクラスを利用すると、Form_loadイベントが二回発生することがある。」
ことに対する対処です。
あるFormの上のMsFlexGrid上から色々な操作をするクラスを作りました。
その中にGridの任意のカラム上でEnterキーを押すと、別のFormを呼ぶ
機能をつけました。
元Formも呼び出されるFormもそのクラスが入っています。
Formを普通に開くと特に変なことはおきないのですが、よそのForm
から呼ばれて起動したときだけ、そのクラスの読み込みをForm_Load
イベント内に入れると、読み込み後だいたい0.1秒後くらいにもう
一度最初からForm_Loadイベントが開始されてしまいます。
元のForm_loadイベントも進行します。
しょうがないのでForm_Resizeイベント内に移動してもForm_Resize
イベント内でもう一度Form_Loadが始まります。
この現象の後は元のFormと呼びだされたFormのほかにもう一枚
見えないFormが発生して、呼びだされたFormと元のFormを閉じ
ても、消えません。
F8でトレースしていくと再現するときとしないときがあります。
再現したときは、特に脈絡もなく不意にLoadイベントが発生
しました。
キーイベントが二回発生することがあるのでそのせいかとも
思ったのですが、呼び出されるFormから自作のクラスをはずすと
発生しません。
この問題は必ず発生するわけではなく、呼び出し先のFormに
よっては起きたり、起きなかったりします。
ちなみにforms(i).name=フォーム名で開いているか確認し、unloadすると、
なぜかform_loadでループします。
このクラスを作るのにものすごい時間をかけたので、できれば使いた
いので皆様よろしく御願いします。
hhttp://www.geocities.jp/pentadect/Project1.lzh
にサンプルをあげました。
このサンプルを開くと、F_元が開きカラムが二つあるMsFlexGridが表示されます。
右のカラムをクリックしてエンターすると、F_先が正常に表示されます。
左のカラムをクリックしてエンターすると、F_受注が異常な状態で表示されます。
どなたかお知恵をお貸しください。
※このクラスの制作にはこのサイトのサンプルを参考にさせていただきました。
この場を借りて御礼申し上げます。