メニュー画面を開いて、コマンドボタンを押すと、処理が実行され、
処理中です。という文字を表示するフォームを開きます。
その後処理が終わると文字を表示したフォームを閉じます。
このとき、メニュー画面が他のアプリケーションの1つ裏に隠れてしまう現象が
おきるんですがなぜでしょうか。
その原因がわからいのでご教授お願いします。
ちなみにソースは
以下のようになります。
★mainフォームでメッセージを表示する処理を呼びます。
Call pb_ShoriMessage("処理中", KINO_NAME, True)
★標準モジュールにてメッセージの処理を行います
Public Function pb_ShoriMessage(losMesWindow As String, losMesCaption As String, lobOpenClose As Boolean)
If lobOpenClose = True Then
'処理中メッセージを表示
Screen.MousePointer = vbHourglass
pb_MessageWindow losMesWindow
frmMessage.Caption = losMesCaption
frmMessage.Show
DoEvents
Else
'処理中メッセージを非表示
Unload frmMessage
Screen.MousePointer = vbDefault
DoEvents
End If
' 戻り値をTrueに設定
pb_ShoriMessage = True
End Function
★そして他の標準モジュールにて非表示にする処理を呼びます。
Call pb_ShoriMessage("", KINO_NAME, False)
以上よろしくお願いします。
わたしが考えているのは
メニュー画面が非アクティブになるためだと思いますが、
なぜ非アクティブになるのかがわからないのです。
frmMessage.Showで、メニュー画面は非アクティブになります。
メニュー画面だけですか?
APIで、常に手前に画面を表示させる方法もありますが。
ところで、
>★そして他の標準モジュールにて非表示にする処理を呼びます。
って、メニュー画面じゃないんですか?
影さんさっそくのご回答ありがとうございます。
表示しているのはメニュー画面とこのfrmMessageの2画面です。
その他にアプリケーションが立ち上がっている状態です。
ソースを抜粋しているため、見難くて申し訳ありません。
>★そして他の標準モジュールにて非表示にする処理を呼びます。
って、メニュー画面じゃないんですか?
上記の件ですが、メニュー画面ではないところでfrmMessageを非表示する処理を
呼んでいます。
そうなんですか。
恐らくのところ、ほいこさんご推測の通りだと思います。
処理中を表示するフォームを表示してから、非表示にするまでの間に、他のアプリが起動すれば、有り得る現象ではないでしょうか?
(・・・自信無い。間違ってたらごめんなさい m(_ _)m)
API使うのも面倒ですね(僕が嫌なだけで、ネット検索すれば、ひっかかります)。
うーん、じゃあ・・・。
>2005/02/21(月) 15:26:53
のご発言から。
標準モジュール「frmMessage.Show」を、
「frmMessage.Show ,main」に改変してみてはいかがですか?
詳細は、ヘルプの「Showメソッド」を参照して下さい。
>標準モジュール「frmMessage.Show」を、
>「frmMessage.Show ,main」に改変してみてはいかがですか?
>詳細は、ヘルプの「Showメソッド」を参照して下さい。
これを試してみたところ、やはりメニュー画面が背面に隠れてしまいました。
結局原因はわからず。。。
対処法として
メニュー画面が背面に隠れた後に frmMain.showを行うことで
前面に表示させました。
影さんいろいろありがとうございました。
ツイート | ![]() |