【】Top
【】VB.NET
【】VB6.0
【】メールマガジンの購読
【】メールマガジンの解除
【】会社概要
【】お問い合わせ
姉妹サイト「バーチャルコネクション!」はこちらです。
姉妹サイト「七福神のメールでビンゴ!」はこちらです。
●24時間365日の安心をあなたにAT-LINK専用サーバ・サービスお勧めのサーバです。
|
|
|
|
|
進行状況を表示する
|
|
【注意書き】 ●VB.NET を使っているものとします。 ●動作環境は、Windows XX を使用しているとします。
.NET でも、進行状況を表示することが可能です。
この機能を使えば、簡単に、 処理のかかる時間などの進行状況などを 視覚効果でユーザーに伝える事が可能になってきます。
フォームに次の様なコードを記述します
-----------VB.NETコーディングここから-------------------
1.フォームに、ピクチャボックスコントロール、 ボタンコントロール、 タイマーコントロール を配置します。 下記は、デフォルトのオブジェクトの名前と配置を示しています。
┏━━━━━━━━━━━━━━━━━━┓ ┃PictureBox1 ┃ ┃ ┃ ┗━━━━━━━━━━━━━━━━━━┛ ┏━━━━━━━━┓┏━━━━━━━━┓ ┃Button1 ┃┃Button2 ┃ ┗━━━━━━━━┛┗━━━━━━━━┛
-------------------------------------------- (フォーム外) ┏━━━━━━━━┓ ┃Timer1 ┃ ┗━━━━━━━━┛
2.ボタンコントロールの Button1 text プロパティに「開始」と記述します。 Button2 text プロパティに「停止」と記述します。
※説明用のためです。必須ではありません。
┏━━━━━━━━━━━━━━━━━━┓ ┃PictureBox1 ┃ ┃ ┃ ┗━━━━━━━━━━━━━━━━━━┛ ┏━━━━━━━━┓┏━━━━━━━━┓ ┃開始 ┃┃停止 ┃ ┗━━━━━━━━┛┗━━━━━━━━┛
-------------------------------------------- (フォーム外) ┏━━━━━━━━┓ ┃Timer1 ┃ ┗━━━━━━━━┛
3.フォームをダブルクリックして、 フォームロードイベントのコード編集を開始して、 次のコードを記述します。
Dim sngPercen As Single 'パーセンテージ 0.00〜1.00 (0%〜100%)
'パーセントでピクチャボックスを塗ります Sub Set_Picbar(ByVal pic As PictureBox, _ ByVal sngPercent As Single, _ Optional ByVal fBorderCase As Boolean = False)
Dim g As Graphics '描画グラフィック
Dim strPercent As String '文字列のためのパーセンテージ Dim intX As Integer '文字列描画のためのX座標 Dim intY As Integer '文字列描画のためのY座標 Dim intPercent 'パーセンテージの書き換え '塗りつぶす全体の領域です Dim objRectangle As New Rectangle(0, 0, _ pic.Width * sngPercent, pic.Height)
'塗りつぶす前の背景を灰色にしています pic.BackColor = System.Drawing.Color.DarkGray
'描画領域とグラフィックオブジェクトの作成です pic.Image = New Bitmap(pic.Width, pic.Height) g = Graphics.FromImage(pic.Image)
'パーセントのチェックです intPercent = Int(100 * sngPercent + 0.5) '処理が完了する前に100%にならないようにしています If intPercent = 0 Then If Not fBorderCase Then intPercent = 1 End If ElseIf intPercent = 100 Then If Not fBorderCase Then intPercent = 99 End If End If
'パーセントの文字を形成しています strPercent = Format$(intPercent) & "%"
'バーを青色で印字しています g.FillRectangle(Brushes.Blue, objRectangle)
'パーセントを白色で印字しています intX = pic.Width / 2 intY = pic.Height / 2 g.DrawString(strPercent, _ Me.Font, Brushes.White, intX, intY)
'開放 g.Dispose()
End Sub
Private Sub Timer1_Tick(ByVal sender As System.Object, _ ByVal e As System.EventArgs) Handles Timer1.Tick
'1%づつ最大100%までインクリメント sngPercen = sngPercen + 0.01 If sngPercen >= 1 Then Timer1.Enabled = False Set_Picbar(PictureBox1, 1, True) MsgBox("やったぁ完了!") Exit Sub End If
Set_Picbar(PictureBox1, sngPercen)
End Sub
Private Sub Button1_Click(ByVal sender As System.Object, _ ByVal e As System.EventArgs) Handles Button1.Click Timer1.Enabled = True sngPercen = 0
End Sub
Private Sub Button2_Click(ByVal sender As System.Object, _ ByVal e As System.EventArgs) Handles Button2.Click
Timer1.Enabled = False MsgBox("中断しました")
End Sub
Private Sub Form1_Load(ByVal sender As System.Object, _ ByVal e As System.EventArgs) Handles MyBase.Load Timer1.Enabled = False Timer1.Interval = 100 Set_Picbar(PictureBox1, 0, True)
End Sub
4.ビルドして実行します。
5.フォームに表示された ボタン「開始」を押します。
6.パーセンテージを加算しながらバーが青色に塗りつぶされていきます
7.そのまま放置して100%に達すると 「やったぁ完了!」メッセージが表示されます。
-----------VB.NETコーディングここまで-------------------
本サンプルでは、汎用性を高めるために あえてプログレスバーを使用しない 方法でそのサンプルを作成しています。
本サンプルでは、 Set_Picbar サブルーチンを作成し、 パーセンテージ(0〜1)と描画先オブジェクトのピクチャボックスを 必須の引数で渡しています。
また、省略可能な引数として fBorderCase (True or False)を設置。 これは、万が一 進行している処理が未完のまま 切捨て、四捨五入等で パーセンテージが 0 または 100 になってしまう場合、 これを回避するために用意しているフラグ変数です。
通常は、開始するときと、完了したときに True 指定する以外は、 省略(False)可能です。
本サンプルでは、タイマーで処理の過程を実現しています。
導入の際には、タイマー、ボタンコントロールは不要です。
|
http://anetm.com/dev/d.cgi?SC=DTDTL&o=OuO
Copyright(c)2001-2004 Ai Net Makoto 記事・情報の無断転載を禁止します。
|
|
|
|
|
|
|