これ何て呼びますか Part2

いつもお世話になっております。

以下の疑問点が出ています。
どなたか答えをご存知の方がおりましたらご回答願います。

[現象]
Form1からForm2を呼び出し、Form1をhideしても
Form1が隠れない。

[条件]
Form1のボタンをクリック後、すぐに何でもいい(フォルダを開いたウィンドウとか)のでウィンドウを最前面に表示してください。


[プログラム]
--form1--
Private Sub Command1_Click()

On Error GoTo ERROR_END

Screen.MousePointer = vbHourglass

'請求書作成画面に移行
Form2.Show

Screen.MousePointer = vbDefault

Exit Sub


ERROR_END:

Screen.MousePointer = vbDefault

MsgBox Error(Err)
End Sub

Private Sub Form_Load()

Me.Show
Screen.MousePointer = vbDefault

End Sub

--form2--
Private Sub Form_Load()

Dim i, strsql

For i = 0 To 50000000
strsql = "時間稼ぎ"
Next

Me.Show
Form1.Hide
Screen.MousePointer = vbDefault

End Sub

[Form]
Form1にコマンドボタンを一つ配置するだけでOKです。

[環境]
WinXP SP1
VB6.0 SP6

[その他]
WIN98ではこの事象は起こらないと報告受けてます。
バグならばバグと、PGミスならミスと明確に答えていただけると大変助かります。
どうぞよろしくお願いします。

A 回答 (2件)

VB6.0(SP5)でやってみましたが、いちおう動作しています。

ただし・・・

For i = 0 To 50000000
strsql = "時間稼ぎ"
Next

で1分以上かかります。DoEvents が入っていないので、その間操作が出来ません。
Form1 を非表示にするには、Form1でForm2を表示した後に行っても良いと思います。(Form2でForm1を閉じません)

請求書作成画面に移行
Form2.Show
Screen.MousePointer = vbDefault
Form1.Hide
Exit Sub
    • good
    • 0
この回答へのお礼

ご回答ありがとうございます。

>For i = 0 To 50000000
については根拠のある数値ではありません。
ただ、表示するまでに時間をかけたいから空回ししているだけなので。。。

>その間操作が出来ません
については、画面下にあるバーから開いている
フォルダを表示していただくだけなので、今の段階では問題ないと考えています。
参考に示していただいたプログラムなのですが、
実際はそのように作成して、この現象が起こってしまったので、分かりやすくするために上記のように展開して掲載させて頂きました。

お礼日時:2004/12/27 15:15

Win2k/6.0Sp5ですが、全く問題ないです(^^;


一応コンパイルしてexeでも試しましたが・・・

気になることがいくつかあったので。
1.LoadイベントにMe.Showは不要
FormをShowすることでLoadをしているので、不要だと思います。
2.#1さんがおっしゃっている通り、隠すタイミングがForm2の表示直後なのであれば、Form1側でMe.Hideとすべきです。
Form1.Hideとするとややこしくなるので止めたほうが良いですね。もし、Form1がロードされていない(いてはいけない)状況では、このメソッドでインスタンスが作成されてしまいますから。
コードを見る限り「Formの暗黙のインスタンス」についてよく理解されていないように思います。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています


おすすめ情報