処理中にキャンセルを使えるようにする

<戻る

ここに載せてあるソースコードは、参考のために載せてあります

サンプルコードは、一番下にLZHとしてあります








'-/-
'処理中にキャンセルを使う
'-/-
'このサンプルは、余りプロパティウィンドウでプロパティを設定していません。
'
'このサンプルは、無断で配布することは禁止しています。
'必ず作者にメール(ken3@24h.co.jp)で伝えてからにして下さい。
Option Explicit
Dim FlgCancel As Boolean 'このフラグ(ただのグローバル変数)が重要

Private Sub Command1_Click()
    Dim picSW, picSH, jMax, jNow, jCenter
    
    With Picture1 'Picture1の処理が多いのでWithステートメントを使う(これを使うと、わずかだけ処理が高速に)
            
        picSW = .ScaleWidth 'Picture1の横幅代入
        picSH = .ScaleHeight '同じく縦幅代入
        jCenter = picSW / 2 - 20 'Printメソッドで中心よりにする(-20は、適当に)
        FlgCancel = False 'グローバル変数なので初期設定
        jMax = 1000 '処理待ちの最大値
        
        For jNow = 0 To jMax 'jNowからjMaxまでループ処理
        
            .Cls 'Picture1の表示内容を消す
            .CurrentX = jCenter 'Printメソッドの表示位置を決める
            
            Picture1.Print Int((jNow / jMax) * 100) & "%" 'パーセントを計算し表示
            Picture1.Line (0, 0)-((jNow / jMax) * picSW, picSH), RGB(255, 255, 0), BF '現在の処理位置をバーで表示
            .Refresh '強制的に描く (最後にDoEventsがあるから無くてもOk)
            
            DoEvents '何かイベントが起きていないか探す
            
            If FlgCancel = True Then 'フラグの内容が変更されてないか確認する
            
                Exit For '変更されていれば強制的に処理を中断
                
            End If
            
            'どこでもいいけどココに処理を置いて下さい
            
        Next
        
    End With
    
End Sub

Private Sub Command2_Click()
    
    FlgCancel = True 'フラグの変更
    
End Sub

Private Sub Form_Load()

    With Picture1
    
        .BackColor = RGB(255, 255, 255) 'Picture1の背景を真っ白にする
        .AutoRedraw = True 'Picture1に表示された内容がチラツかないようにする
        .ScaleMode = 3 'Picture1の座標をピクセルにする
        .DrawMode = 7 'Picture1に描いた物が反転表示になるようにする
        .ForeColor = RGB(0, 0, 0) 'Printメソッドで黒色で描くようにする
        
    End With
    
End Sub


<戻る

Sample01.lzh


http://www.vector.co.jp/authors/VA015521/