[リストへもどる]
一括表示

投稿時間: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です。

このような「進捗状況」を「別フォーム」に表示するといった
ことを実施する場合、どのようにするのが、一般的なのでしょうか?
プログレスバー自体使用したことがなく、根本的に可笑しなことを
言っているかもしれませんが、ご容赦ください。

投稿時間:2004/06/29(Tue) 16:28
投稿者名:nanashi
Eメール:
URL :
タイトル:
Re: プログレスバーを置いたフォームのモーダル
単純に、Form1のEnabledをFalseにするってのは?

投稿時間:2004/06/30(Wed) 18:00
投稿者名:ゆーみん
Eメール:
URL :
タイトル:
解決: プログレスバーを置いたフォームのモーダル
> 単純に、Form1のEnabledをFalseにするってのは?

あぁ、そういう手段もあったのですね。
色々と工夫してやってみます。
nanashi様、有難う御座いました。