プログラムの進歩状況をプログレスバーをつかっていますが、フロッピーにファイルを保存したり、ソフトウェアをインストールしたりするときに表示される、”プログレスバーもどき”のコントロールはどうしたら入手できますか?
素人には無理でもかまいません。
どなたか教えてくださいませんか?

A 回答 (2件)

>インストールやハードウェアの確認時の画面で表示されるような、そんなのありませんかね。


うーん、進捗ですねー。。。追加のコンポーネントでは、見たことないですが・・・
たぶん、求めているタイプのダイアログがおそらくDLL内にあるのでしょうが、使用方法は公開されてないと思います。もし使用できても、ダイアログを別プロセスで表示するか、ダイアログのプロセス監視をして、現在の状況をダイアログに通知しなければならないと思います。

なので、自分で作成した方が、メンテしやすいと思います。

区切りのないメーターのサンプルです。


フォーム1[Form1]

├ コマンドボタン1[Command1]

└ ピクチャボックス1[Picture1]
  │
  └ ピクチャボックス2[Picture2]

ピクチャボックス2はピクチャボックス1の中に入れてください。

Option Explicit

Private Sub Command1_Click()
  Dim lngWork As Long
  lngWork = 0
  On Error Resume Next
  lngWork = InputBox("パーセンテージを入力してください", "新着状況の値セット", "0")
  On Error GoTo 0
  
  '0~100の値とする
  If lngWork < 0 Then
    lngWork = 0
  ElseIf lngWork > 100 Then
    lngWork = 100
  End If
  
  Call setProgress(lngWork)
End Sub

Private Sub Form_Load()
  With Me
    .ScaleMode = vbPixels
  
    .Command1.Caption = "値セット"
    
    With .Picture1
      .Enabled = False
      .ScaleMode = vbPixels
      .Appearance = 0
      .BorderStyle = 1
      
      .BackColor = Me.BackColor
    End With
    
    With .Picture2
      .ScaleMode = vbPixels
      .Appearance = 0
      .BorderStyle = 0
      .Left = 0
      .Top = 0
      .Height = Me.Picture1.ScaleHeight
    
      .BackColor = &H800000
    End With
    
    Call setProgress(0)
  End With
End Sub

Private Sub setProgress(inPer As Long)
  With Me
    If inPer = 0 Then
      .Picture2.Visible = False
    Else
      .Picture2.Width = .Picture1.Width * (inPer / 100)
      .Picture2.Visible = True
    End If
  End With
End Sub
    • good
    • 0
この回答へのお礼

わざわざサンプル作ってくださってどうもありがとうございます。
なるほど、自分で作っちゃうなんて発想はわたしにはありませんでした。
早速Tryしてみます。

お礼日時:2001/11/13 14:00

>プログラムの進歩状況をプログレスバーをつかっていますが、フロッピーにファイルを保存したり、ソフトウェアをインストールしたりするときに



とありますが、
1.ファイルのコピーを行うのですか?
2.ごみ箱を空にするのですか?フォーマットを行うのですか?
3.ただ単にオリジナルの進捗状況画面を作成したいだけなのでしょうか?

もし1番か2番のような場合はWindowsDLL内にあります。
SHFileOperationという関数なのですが、
http://www.vbvbvb.com/jp/gtips/index.html
でキーワード"SHFileOperation"を打ち込むと、関係したものが出てきます。

3番の場合はコンポーネントで
「Microsoft Wndows Common Controls 5.0(SP2)」
を追加してProgressBarを使用してるのですよね?
それを使用して、アニメーションの追加をするとオリジナルの進捗状況ダイアログが作成できます。
再生するアニメーションはVBのインストール状況にもよりますがおそらく
C:\Program Files\Microsoft Visual Studio\Common\Graphics\Videos
に入っていると思います。
再生方法は
http://www.vbvbvb.com/jp/gtips/index0001.html
の中の1番~11番あたりが参考になると思います。

ちょっといまいち質問をしっかり把握できてません。
はずしてたらごめんなさい。
    • good
    • 0
この回答へのお礼

返事がおくれましてすみません。
いろんなアニメーションがあるんですね。
参考になりました。
どうもありがとうございました。

「3.ただ単にオリジナルの進捗状況画面を作成したい 」のです。
プログレスバーの機能はそのままで、
縦の線のないようなビジュアルにしたいのです。
"Common Controls 6.0"のプログレスバーはちょっと古い感じで・・・。
(インストールやハードウェアの確認時の画面で表示されるような)
そんなのありませんかね。

お礼日時:2001/11/13 08:21

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

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

Qバイクのメーターの見方について

バイクはヤマハFZR250というバイクなのですが、バイクの売却を考えて
いて走行距離が知りたいのでメーターを確認したのですが
2つ上と下にメーターがついてまして、上のメーターは95567の
ような5ケタで、下のメーターは5703となってまして
下メーターの横のはkmがついているのですが、下メーターには
5ケタ分のカウンター表示がないみたいなのですが

初心者的な質問ですみませんが、一体どのように解釈すればいいの
でしょうか?走行距離何kmなんでしょう?

おくわしい方いましたら教えてください、よろしくお願いします。

Aベストアンサー

上は、そのバイクがこの世の中を走り回った距離
下一桁は 100m単位になっているので
9556.7km
走行距離とはこれのこと

下のメーターはリセットできる機能を持っている
メーターの横や上や文字盤辺りに つまみみたいなのありませんか?
それを押したりまわしたりすると カウンターが0になります
一般的にはガソリンを入れる時に0に戻すことで。ガソリンを入れてから何km走ったかの目安になります。
これも下一桁は100m単位ですので
570.3km ということになります
中古で売買するときには意味の無いものですでの無視してかまいません。

Q[VB6]プログレスバーコントロールの使用法について

環境:VB6.0+SP5, DB: Adaptive Server AnyWhere

こんにちは。
プログレスバーコントロールの使い方について質問させていただきます。

データベースにクエリを投げて、レコードセットを取得する関数myFunctionを次のように書きました。
ここで処理の進捗に合わせてプログレスバーを表示する機能を追加したいと思います。

参考書を調べた結果、↓のようなもの組み込めば良いのだろうと考えましたが、
繰り返し文の中身をどう記述して良いものかわかりません。

申し訳ありませんがお力を貸して頂けないでしょうか?
また、もっとスマートな方法があれば、そちらも教えていただけると助かります。
/////////////////////////////////////////////////////
'プログレスバーコントロールを設置したフォームを呼び出す
frm_progressBar.Show
frm_progressBar.ProgressBar1.Visible = True
frm_progressBar.ProgressBar1.Max = q_rs!rNum

For i = 1 To q_rs!rNum
frm_progressBar.ProgressBar1.Value = i
'レコード取得
Next i
//////////////////////////////////////////////////////

Public Function myFunction(query As String) As Recordset

Dim p_rs As Recordset 'DBから取得したレコードセット
Set p_rs = New ADODB.Recordset

Dim q_rs As Recordset 'レコード件数を格納
Set q_rs = New ADODB.Recordset

Dim i As Integer '

'テーブルのレコード件数を取得
Set q_rs = con.Execute("SELECT COUNT(*) as rNum FROM AppEnd_Logs", , adCmdText)

p_rs.CursorLocation = adUseClient
p_rs.Open query, con, adOpenStatic

Set myFuncsion = p_rs

q_rs.Close
Set q_rs = Nothing
End Function

環境:VB6.0+SP5, DB: Adaptive Server AnyWhere

こんにちは。
プログレスバーコントロールの使い方について質問させていただきます。

データベースにクエリを投げて、レコードセットを取得する関数myFunctionを次のように書きました。
ここで処理の進捗に合わせてプログレスバーを表示する機能を追加したいと思います。

参考書を調べた結果、↓のようなもの組み込めば良いのだろうと考えましたが、
繰り返し文の中身をどう記述して良いものかわかりません。

申し訳ありませんがお力を貸して頂けな...続きを読む

Aベストアンサー

ソースを見る限りだとレコード件数分だけ「何か」させたいのですよね?で、1件処理したらプログレスバーをびょーんって伸ばしたいんだと思うのですが...違います?

1.プログレスバーの使い方はよいようですが、minも設定することをおすすめします。
2.「繰り返し文の中身をどう記述して良いものかわかりません。」
→繰り返し文とはfor文のところを指していますよね。何をさせたいか分からないので答えようがありません。申し訳ないです。ひょっとして、自作関数の使い方を聞いてます?
3.「また、もっとスマートな方法があれば、そちらも教えていただけると助かります。」
→私なら、myFunctionはRecordsetではなく件数を返すようにします。あとはこんな感じかな?
-----------------
'プログレスバーフォーム表示
load frm_progressBar
frm_progressBar.show
with frm_progressBar.ProgressBar1
 .min = 0
 .max = myFunction(ぱらめた)
 .value = 0
end with

'件数分だけぐるぐる回す(.max-1しているのは0から開始しているため)
for i = 0 to frm_progressBar.ProgressBar1.max-1 step 1

 'レコード取得
 <<処理ロジック>>


 'プログレスバーをびょーんって伸ばす
 frm_progressBar.ProgressBar1.value += 1

next i
-----------------
さらにやるなら、frm_progressBarに「let property」でプロパティを作り、それを使ってカウントアップやmin/max値を設定できるようにするくらいです。

ソースを見る限りだとレコード件数分だけ「何か」させたいのですよね?で、1件処理したらプログレスバーをびょーんって伸ばしたいんだと思うのですが...違います?

1.プログレスバーの使い方はよいようですが、minも設定することをおすすめします。
2.「繰り返し文の中身をどう記述して良いものかわかりません。」
→繰り返し文とはfor文のところを指していますよね。何をさせたいか分からないので答えようがありません。申し訳ないです。ひょっとして、自作関数の使い方を聞いてます?
3.「また、もっとスマ...続きを読む

Q125ccバイクのメーターなのですが

125ccバイクのメーターなのですが

バイク用のメーターがついてない状態で、

スマートフォン 
やナビのGPSスピードメーターでも、
法律上問題ないですか?

スピードがわかって、
バックライトもついてるのでOKですかね。

Aベストアンサー

法律上は、無理です。
GPSを使った方法は移動距離とその時間から速度を計算します。
サンプルを何点か取って、それぞれの速度を計算し、その移動平均又は区間平
均を表示しているのが、一般的だと思います。早い話が、過去の速度でしかな
いことになります。それと、GPSの精度はそんなに高くありません。
法律上、当然ですが現在のデータでないといけないのです。

じゃバイク搭載のデジタル式のメータはどうだ? と言うことになりますが、
速度表示の原理は同じです。
違うところは、機械式と同じタイヤの回転数から速度を拾い出していますので、
タイヤ径がすり減って異常でない限り精度は保証されます。
また、非常に短い時間でのサンプリング計算を行っていますので、実速度に非
常に近い数値を示し、法の上の精度内に納めています。

Qvb.net コピーの進捗をプログレスバーで

質問ばかりでもうしわけないのですが
タイトルにあるようにコピーの状況を
プログレスバーで表示できたらなと思い作成したのですが
うまく動きません。
プログレスバー自身単独では動くのですがコピーと合わせると
フリーズしてしまいます。
プログラミング経験と発想力が乏しいのでご教授いただけたら幸いです

Private Sub Bt_1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Bt_1.Click

Dim fname1 As String = "C:\フォルダ名A"
Dim fname2 As String = "C:\フォルダ名B"
Dim ber1 As Integer

If IO.Directory.Exists(fname1) = True Then
Me.Lb_1.Text = "テキスト文字"

For ber1 = 0 To 20
Me.ProgressBar1.Value = ber1

System.IO.File.Copy("コピー元テキストファイルA", "コピー先テキストファイルA", True)
My.Computer.FileSystem.CopyDirectory("コピー元フォルダA", "コピー先フォルダA", True)
My.Computer.FileSystem.CopyDirectory("コピー元フォルダB", "コピー先フォルダB", True)
Next ber1

If IO.Directory.Exists(fname2) = True Then
System.IO.File.Copy("コピー元ファイルB", "コピー先ファイルB", True)
End If

MessageBox.Show("終了報告テキスト", "タブ名")
' System.IO.Directory.Delete("コピー元", True)
Me.ProgressBar1.Value = 0
Application.Exit()

こんな感じで作成しております。
ファイル自身が1GBぐらいあるので
フリーズしていないかプログレスバーや%表示でしらせたいので
教えていただけると助かります。

よろしくお願いします。

質問ばかりでもうしわけないのですが
タイトルにあるようにコピーの状況を
プログレスバーで表示できたらなと思い作成したのですが
うまく動きません。
プログレスバー自身単独では動くのですがコピーと合わせると
フリーズしてしまいます。
プログラミング経験と発想力が乏しいのでご教授いただけたら幸いです

Private Sub Bt_1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Bt_1.Click

Dim fname1 As String = "C:\フォルダ名A"
Dim fname2...続きを読む

Aベストアンサー

難しいですね・・・ 私は、VBはできませんが読むならって程度ですが。。。

ファイルのコピーを行う処理が重たくて、進度を表示したいというのはわかります。
なぜループと質問者さんのソースでのコピーでは、プログレスバーの動きが違うかというと、ループでは100回転するとしたら100回同じ場所を通るので、何回通ったというのが分かるのですが、コピーだとコピーの処理で1回となります。なのでコピーの場合は、コピーが終了したらプログレスバーがすべて動きます。(説明へたでスミマセン)

そこで、調べたのですがマルチスレッドで処理を行うっていいみたいです。
リンク先で議論?されてるみたいなので参考程度にお願いします。

何もわからなくてすみません。。。 orz

参考URL:http://homepage1.nifty.com/MADIA/vb/vb_bbs2/200506/200506_05060090.html

Qバイクのスピードメーター

バイクのワイヤー式スピードメーターの回転数は国産メーカーのモノは皆、共通ですか。 例えばホンダのバイクにカワサキ車のスピードメーター付けたとしても速度表示は同じになるのでしょうか。

Aベストアンサー

スピードメーターのホイール側ギアはJIS規格で仕様が決まっており、60キロメートル時に1400回転となっています。

そのためタイヤ径が極端に違わない限り、メーカーに関係なく同じほぼスピードを指します(個体差や誤差はあります)。

因みに国内4メーカーで、フロントホイールからワイヤーでスピードを取り出している機種であればメーター側の取り付け方法が同じですので、殆どそのまま取り付けることが出来ます。

逆にホイール側はメーカーによって取り付け方法が違ったり、取り出しワイヤーの先端形状が違ったりして互換性の無い場合が多いです。

Q(;゜д゜)ユーザーフォームでプログレスバーを使いたいが・・・存在していない!!(;゜д゜)

お世話になっております。
プログレスバーについて教えて下さい。
ユーザーフォームを使いそこにプログレスバーが配置できるとネット上で調べたので使おうと思いました。
ところが・・・ツールボックスにプログレスバーがありません(;゜д゜)ァ....
探してみたのですがどこにも見つかりません。エクセルが壊れているのでしょうか?

また、プログレスバーについてどういう風にやったらできるのかというのを見ていたのですがどう動いているのか理解力が無いため理解が出来ません・・・
下記のようなコードがあり作動している間はバーを動かしたいのですがどうしたらいいでしょうか・・・

Private Sub Worksheet_SelectionChange(ByVal Target As Excel.Range)
Dim r As Range
For Each r In Target
MyProc r
Next
End Sub

Sub MyProc(Target As Range)





End Sub

お世話になっております。
プログレスバーについて教えて下さい。
ユーザーフォームを使いそこにプログレスバーが配置できるとネット上で調べたので使おうと思いました。
ところが・・・ツールボックスにプログレスバーがありません(;゜д゜)ァ....
探してみたのですがどこにも見つかりません。エクセルが壊れているのでしょうか?

また、プログレスバーについてどういう風にやったらできるのかというのを見ていたのですがどう動いているのか理解力が無いため理解が出来ません・・・
下記のようなコ...続きを読む

Aベストアンサー

回答にある
>プログレスバーはEXCELで提供されていたのですね。
は、少し表現について補足したいと思います。
今、私のツールバーでは、プログレスバーのアイコンが出ていますが、過去に下記下記A-2かB-1をやったためと思います。
http://www.asahi-net.or.jp/~ZN3Y-NGI/YNxv9g1810.html
のA-2の操作、B-1の操作。
2001,2003で、今まで使ってなければ、出てこないのだと思います(「上記WEBで標準では」という意味)。
マイクロソフトでも他社でも(現実には余りないが)よいが、プログレスバーのコントロールとしてのオブジェクトを提供してくれて、ユーザーが参照設定して(使うという宣言)しまえば、ツールボックスにアイコンが現れるようになります。それをユーザーフォーム上にD&Dすれば(ラベルなどで類似物を自作しないで)使えます。
後はプロパティを設定すればよい。プログラムか操作かどちらかで。
ーー
もうひとつの問題は
ただし上記WEBにある、処理件数 / 総件数 * 100 に当たるものが、質問者の場合何なのかが難しい問題で、分子・分母に来る計数を
何をどう捉えるかがあります。
ーー
さらにもうひとつの問題は
時間が進行し、状況が変化して、表示するタイミングをどう捕まえるかは、そう易しい問題では無いと思うのですが。
ーー
多数のディスク読み込みや、書き込みなどの多件数処理などが時間のほとんどを占めるものは上記WEB上の例のように、考えやすいですが。それでも毎レコード処理するごとに余分な、表示のための処理をしている。
格好よいものですが、難しい点が有ると思う。。

回答にある
>プログレスバーはEXCELで提供されていたのですね。
は、少し表現について補足したいと思います。
今、私のツールバーでは、プログレスバーのアイコンが出ていますが、過去に下記下記A-2かB-1をやったためと思います。
http://www.asahi-net.or.jp/~ZN3Y-NGI/YNxv9g1810.html
のA-2の操作、B-1の操作。
2001,2003で、今まで使ってなければ、出てこないのだと思います(「上記WEBで標準では」という意味)。
マイクロソフトでも他社でも(現実には余りないが)よいが、プログレスバー...続きを読む

Q画像のメーターはバイクのメータでしょうか?

画像のメーターはバイクのメータでしょうか?
あるいは何か機械などのメーターでしょうか?
メーターの裏側の差込口は四角いです。
ここに何かが差し込まれ回転してメーターが回る構造になってると思うのですが。
メーカーは日本精機とローマ字で書いてあります。
よろしくお願いします。

Aベストアンサー

ヤマハ、SR400のスピードメーターとタコメーターです。

Qプログレスバー

アクセス+VBAです。

処理に時間がかかる場合に横のバーの進み具合で表示するのをプログレスバーっていうんでしょうか?

それを、アクセスで利用できませんか?
方法を教えて下さい。

Aベストアンサー

コモンコントロールのプログレスバーを使うって方法もあります。
http://www.moug.net/tech/acvba/0060023.htm

しかし環境によって動作がどうなのかとか心配なので、私の場合は次の 2種類のどちらかですね。

1) ラベルをプログレスバー風に使う。
ラベルをフォームに貼り付け、凹んだ外観にします。
その上に重ねるようにもう1枚のラベルを貼り、背景を青にします。
青いラベルの位置を微調整し、最大に広がった時の幅を覚えておきます。
(プロパティウィンドウで確認するのではなく、MsgBox Label2.Width で確認)
あとは処理のループに合わせて Label2 の Width を 0~最大値に変化させていきます。
処理 1回あたりの変化の度合いは最大幅と処理回数から割り出してください。


2) Access ウィンドウのステータスバーに表示
これはユーザーフォームではなくて Access のウィンドウのステータスバーに表示させる機能です。
http://www.accessclub.jp/samplefile/samplefile_87.htm

コモンコントロールのプログレスバーを使うって方法もあります。
http://www.moug.net/tech/acvba/0060023.htm

しかし環境によって動作がどうなのかとか心配なので、私の場合は次の 2種類のどちらかですね。

1) ラベルをプログレスバー風に使う。
ラベルをフォームに貼り付け、凹んだ外観にします。
その上に重ねるようにもう1枚のラベルを貼り、背景を青にします。
青いラベルの位置を微調整し、最大に広がった時の幅を覚えておきます。
(プロパティウィンドウで確認するのではなく、MsgBox Label2.W...続きを読む

Q中古バイクってメーター改ざん率99%なのでは?(修正)

中古バイクってメーター改ざん率99%なのでは?(修正)

だって中古車市場を見ても全部、走行距離1万~2万ちょっとが殆どじゃない
どう考えてもおかしいでしょ・・・

特に年式が古いGSX1100S刀のような旧式のバイクの市場に出てる走行距離が
何で1万~2万ちょいだらけなのか?

2000年式のファイナルの走行距離が1万~1万5千ぐらいが相場なのに
80年~90年の20年前のバイクの走行距離が同じ1万~1万5千が相場なんてありえますか??


中古バイクってどう考えてもメーター改ざんしてるんじゃないですか?


私はたまにしかバイク乗りませんが、それでも2年~3年所持してただけでバイクの走行距離は3万に近いです。

Aベストアンサー

全部が全部じゃないと思いますが、アルでしょうね。
今乗ってるバイクは、100ccスクーターなのですが、買った時の走行距離が11000kmでした。
これだけしか走ってない筈なのに、納車後3週間でプーリーがぶっ壊れました。
新品に部品交換したら、見違えるように最高速がアップしました。
もう長いこと変えてない感じがしました。
それとフロントタイヤがかなり減っていて、もっと走ってるだろ?!絶対!って感じでした。

しかし、あまり乗らないバイクが存在するのも事実です。
以前持っていたバイク(250ccのネイキッド)は、23年間所有してて44000kmしか走りませんでした。
平均年間走行距離は2000kmにも満たないです。

でもまあ、80年代のバイクが1万km台はさすがに少なすぎですよね~。
もしかしたら、戻しじゃなく、1周してるのかもしれませんよ。
今日び、車は100万キロで一周ですが、バイクは10万キロで一周が大半ですからね。

Qプログレスバー

picBar.Width = (picProgress.Width / lCount) * i
labCount.Caption = CStr(i) & "/" & CStr(lCount)
wRs.MoveNext
i = i + 1
DoEvents
で実行したのですが
labCountの方は2/3などとちゃんと表示されるのですが
picBarの方は白いままです。
なぜでしょうか?
教えてください。

Aベストアンサー

可能性だけの話ですが、
右辺式の(picProgress.Width / lCount) * i
において、picProgress.WidthがlCountに対して十分に小さい場合、
(picProgress.Width / lCount)の結果が1より小さかったために、
整数化させた際に0になってしまったのだと思います。
i * picProgress.Width / lCount に代えてみてはいかがでしょうか?


人気Q&Aランキング

おすすめ情報