【】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 記事・情報の無断転載を禁止します。

「これがほしかった!厳選サンプルツール集」の注意点
●当サイトはリンクフリーです。
2024/04/19(金)00:05 更新