プロが教えるわが家の防犯対策術!

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

A 回答 (2件)

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



とありますが、
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

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


うーん、進捗ですねー。。。追加のコンポーネントでは、見たことないですが・・・
たぶん、求めているタイプのダイアログがおそらく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

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