• ベストアンサー

プログレスバーの表示方法

VB6.0 SP5 WINDOWS2000 で開発しています。 処理中のフォームをEnabled=Falseにして、 プログレスバーだけを別のフォームに表示させて、 処理中はプログレスバーのValueをどんどん増やす。 終わるとプログレスバーのフォームを閉じて、 処理してたフォームをEnabled=Trueにしるのですが、 プログレスバーを表示させてるフォームが、変なんです。 プログレスバーが増えている状態の時、 そのフォームが透けてるような、後ろのフォームとまざってるような、 そんな感じになるんです。 これをきれいに表示させたいのですが、何か良い方法はないものでしょうか?

質問者が選んだベストアンサー

  • ベストアンサー
  • shippo
  • ベストアンサー率38% (1216/3175)
回答No.2

プログレスバーを表示させたときに「DoEvents」を記述してみたらどうでしょうか? 例)Form1が基準ページでForm2がプログレスバーのページ Dim n As Long Form2.ProgressBar1.Max = 10000 Form2.Show 0 DoEvents For n=1 to 10000 Form2.ProgressBar1.Value = n Next n Unload Form2 で大丈夫だと思いますよ。

その他の回答 (1)

  • TAGOSAKU7
  • ベストアンサー率65% (276/422)
回答No.1
参考URL:
http://oshiete1.goo.ne.jp/kotaeru.php3?q=823580

関連するQ&A

  • プログレスバーについて

    VBで開発をしているのですが、一つの処理(関数)で時間のかかる処理があって、その経過をプログレスバーで表示させようと思ってるのですが、関数内の処理の進み具合を表示することってできるのでしょうか? ちなみに、関数はDLLです。 何かよい方法がありましたら、教えていただきたいと思っております。よろしくお願いします。

  • ACCESSでのプログレスバー表示について

    ACCESSでのプログレスバー表示をしようと考えています。 EXCELでは別フォームでのプログレスバー表示ができたのですが、 ACCESSではうまくいきません。 Web上でのサンプルも同一画面内でのプログレスバー表示でMeを使うものばかりです。 別画面でフォームを表示して制御することはACCESSでできるのでしょうか?

  • プログレスバーでの経過状況表示

    vb.netでのtimerのようなものをやりたくてvbaでプログレスバーを使用して経過状況を表示するプログラムを作りました。プログレスバー自体での視覚的な経過状況表示はできたのですが、現在のパーセンテージをlabelに表示することができません。 Private Sub CommandButton4_Click() Dim i As Long Application.Visible = False i = 1 For i = i To 1000000 UserForm1.ProgressBar1.Value = i / 1000000*100 UserForm1.Label1.Caption =UserForm1.ProgressBar1.Value i = i + 1E-44 Next Application.Visible = True End Sub 上記のようにするとプログラム終了時にlabel1に現在のプログレスバーの値が表示されますが、進行中には表示されないのです。これを進行中も表示させるにはどうしたら良いのでしょうか?

  • VB.NETでブラウザのフォームに入力する方法について

    VB.NETでブラウザに表示されたWEBページのフォームに データを入力したり、ラジオボタンの設定をしたりしたいのですが、 入力内容によってフォームの入力欄がEnabled = True や Falseに 切り替わる入力欄がある場合、VBでそのエレメントに データを設定してもフォームを送信などをした際に反映されていません。 例えばラジオボタンで選択A、選択B、その他という3つの選択があって、 その他を選択すると、テキスト入力エリアが入力可能になるというフォームです。 ブラウザに直接手動で設定を変更すれば、入力欄のEnabledが切り替わるのですが、 VBでラジオボタンを設定した場合は切り替わらず、Enabled = False の状態のまま VBでデータを設定しても受け付けられないようです。 この為、VBでデータを設定した際に、別の欄のEnabledの状態を変えたいのですが、 どのような方法でやれば良いでしょうか。ご教授いただければ幸いです。

  • javascriptによるプログレスバーの表示制御

    javascriptで任意の処理を実行中に、HTMLのプログレスバーの表示を制御する方法をご教示ください。 ただし、JQueryなどのライブラリは使わないものとします。 実現したい処理は以下です。 (1):処理開始時にプログレスバーを表示  (HTMLに定義されている<progress>を表示) (2):処理A実行 (3):プログレスバーの進捗を50%に更新 (4):処理B実行 (5):プログレスバーの進捗を100%に更新 (6):処理終了時にプログレスバーを非表示 上記を実現するために、例えば以下のようなコードを書いても、(1)~(6)の全処理が終わった結果が画面に反映されるため、画面上はプログレスバーは表示されません。 <progress id="prog" max="100" value="0" style="display:none">Loading...</progress> <script> //(1):処理開始時にプログレスバーを表示 document.getElementById("prog").style.display = 'block'; //(2):処理A実行(仮の処理としてsleep) Sleep(3); //(3):プログレスバーの進捗を50%に更新 document.getElementById("prog").value = '50'; //(4):処理B実行(仮の処理としてsleep) Sleep(3); //(5):プログレスバーの進捗を100%に更新 document.getElementById("prog").value = '100'; //(6):処理終了時にプログレスバーを非表示 document.getElementById("prog").style.display = 'none'; //Sleepメソッド(テスト用) function Sleep(T){ var d1 = new Date().getTime(); var d2 = new Date().getTime(); while( d2 < d1+1000*T ){ d2=new Date().getTime(); } return; }; </script> プログレスバーの進捗を更新する度に、画面にその内容を反映するにはどのようにしたらよいのでしょうか。

  • ListViewの使い方

    windows2000(sp3) vb6.0(sp5) で開発中です。 ListViewのチェックを付ける機能を使っているのですが、 ある処理中はチェックを付けさせたくありません。 そこで、ListViewのEnabled=Falseとしたら、ListView が灰色で表示され、かっこ悪くなってしまいました。 Enabledのほかに、チェックを付けさせない様にする方法 はないでしょうか? ご存知の方がいらっしゃいましたら、ご教示願います。 よろしくお願いいたします。

  • C# or VB プログレスバー

    プログレスバーで進行状況を表示する処理を入れています。 http://dobon.net/vb/dotnet/programing/progressdialog.html 上記のサイトをパクってとりあえず作ってみました。きちんとできているのですが 1つだけ問題があって try { ProgressDialog pd = new ProgressDialog(); //ダイアログのタイトルを設定 pd.Title = "カウントアップ"; //プログレスバーの最小値を設定 pd.Minimum = 0; //プログレスバーの最大値を設定 pd.Maximum = 10; //プログレスバーの初期値を設定 pd.Value = 0; //進行状況ダイアログを表示する pd.Show(this); //処理を開始 for (int i = 1; i <= 10; i++) { //プログレスバーの値を変更する pd.Value = i; //メッセージを変更する pd.Message = i.ToString() + "番目を処理中..."; //キャンセルされた時はループを抜ける if (pd.Canceled) break; //1秒間待機する(本来なら何らかの処理を行う) System.Threading.Thread.Sleep(1000); } //ダイアログを閉じる pd.Close(); } catch { MessageBox.Show("error"); } こんな感じで使い、プログレスバー表示中に例外が走るとMessageBoxがモーダレスで 表示されてしまいます。プログレスバー表示前だとモーダルのままです。 色々調べたところ原因は裏でスレッドが走っているからだと思います。たぶん・・ ところが対処法となると少々困っています。モーダルでMessageBoxを表示させたいのですが どうすればよいのでしょうか?教えてください。

  • 他アプリのボタンの状態を知りたい

    他アプリのボタンがVBでいうところの「Enabled」の状態が"farce"か"true"なのかを取得したい場合のAPIと使い方を教えて欲しい 環境はVB6SP5環境の開発です

  • プログレスバーの再描画について

    現在,画像データの変換ソフトを作っており,変換計算中に,変換されたファイルの経過状態を示すためにプログレスバーをつけております. プログレスバーは,経過状態に合わせて正常に動作するのですが,別のウィンドウ等に切り替えたりした時にプログレスバーの動作が止まってしまい,変換が終了したときにプログレスバーの終了状態だけが表示されてしまいます. そこで,質問なのですが,どのようにしたらウィンドウを切り替えたときなどにもプログレスバーが再描画されるでしょうか? 現在,変換計算とプログレスバーを別スレッドにはしていないのですがそれが原因なのでしょうか. 現在の環境はWindowsXP VisualC++6.0です. ご教授お願いいたします.

  • エクセル VBA チェックボックスについて

    よろしくお願い致します。 OS:XP エクセル2003 VBAのことは、まったくの初心者です。 質問なのですが、下記のようなチェックボックス7にチェックが入れば、チェックボックス8~11に自由にチェックが入れれるようになり、逆にチャックボックス7にチェックが入ってない場合は、チェックボックス8~11のチェックはクリアされ、チェックできないものを作りました。 ここから、チェックボックス7にチェック入れたあとは、必ずチェックボックス9~11のどれかにチェックが入っている状態(ラジオボタンのような)で、チェックボックス7にチェックが入ってなかったら、8~11のチェックがクリアで尚且つ、チェックができなくなるようにするにはどうすればよいでしょうか? よろしくお願い致します。 Private Sub CheckBox7_Click() If CheckBox7.Value = True Then CheckBox8.Enabled = True CheckBox9.Enabled = True CheckBox10.Enabled = True CheckBox11.Enabled = True Else CheckBox8.Value = False CheckBox9.Value = False CheckBox10.Value = False CheckBox11.Value = False CheckBox8.Enabled = False CheckBox9.Enabled = False CheckBox10.Enabled = False CheckBox11.Enabled = False End If End Sub

専門家に質問してみよう