処理中にキャンセルを使えるようにする
ここに載せてあるソースコードは、参考のために載せてあります
サンプルコードは、一番下に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 |