投稿日 | : 2004/06/29(Tue) 16:18 |
投稿者 | : ゆーみん |
Eメール | : |
URL | : |
タイトル | : プログレスバーを置いたフォームのモーダル |
すいません、お願い致します。
ある親フォーム(Form1)で「実行ボタン」をクリックすると
進捗状況表示フォーム(Form2)を表示させる といった
ことをしたく、下記のようなコードをForm1側に書いてます。
Form2にはプログレスバーを置いてます。
--------------Form1側に記述----------------------
With Form2
.ProgressBar1.Min = 0
.ProgressBar1.Max = 50000
.Show (★1)
Dim lngCount As Long
For lngCount = .ProgressBar1.Min To .ProgressBar1.Max
.ProgressBar1.Value = lngCount
DoEvents (★2)
Next lngCount
End With
Unload Form2
MsgBox "終了しました"
----------------------------------------------
で、行ないたいことは、Form2が表示されている間は、
Form1にある他のボタンをクリックしたりと「他の処理」
をさせないようにしたいのです。
(案1)
★1に「vbModal」を追加
勿論「Form2」が閉じるまで、Form1の操作は不可になるので
良いのですが、肝心のプログレスバーまで動かなくなります。
(案2)
★1に「vbModal」の指定をせずに、★2に doeventsを指定しない
「Form2」が閉じるまで、Form1の操作は不可になりOKで、
プログレスバーも動いてOKなのですが、
「Form2」が半透明のような感じで表示され、Form2に配置した
ラベル等の文字が表示されない。
(案3)
★1に「vbModal」の指定をせずに、★2に doeventsを入れる
Form2も半透明ではなく、配置したラベルも表示されOKで、
プログレスバーも動いてOKなのですが、親フォームのForm1で
操作が出来てしまいNGです。
このような「進捗状況」を「別フォーム」に表示するといった
ことを実施する場合、どのようにするのが、一般的なのでしょうか?
プログレスバー自体使用したことがなく、根本的に可笑しなことを
言っているかもしれませんが、ご容赦ください。