|
Tipp 0354
|
Schleifen vorzeitig abbrechen
|
|
|
Autor/Einsender: Datum: |
|
Gerhard Leutkircher 20.08.2003 |
|
Entwicklungsumgebung: |
|
VB 6 |
|
|
Soll dem Benutzer die Möglichkeit gegeben werden einen Prozess abzubrechen oder auf Tastaturereignisse zu reagieren, ist
DoEvents für einfache Operationen recht hilfreich. Allerdings sollte diese Funktion sehr sparsam
eingesetzt werden, da z.B. eine Schleife durch die laufende Übergabe des Prozesses an das Betriebssystem um den Faktor 10.000 verlangsamt wird.
|
Eine wesentlich bessere Möglichkeit eventuell vorhandene Maus- bzw. Tastatur-Ereignisse abzuarbeiten, bietet hier die API-Funktion
GetInputState, mit der überprüft werden kann, ob überhaupt solche Ereignisse vorliegen.
|
|
|
Option Explicit
Private Declare Function GetInputState Lib "user32" () As Long
Dim m_blnCancel As Boolean
Private Sub Form_Load()
cmdAbbrechen.Enabled = False
cmdAbbrechen.Visible = False
cmdBeenden.Move cmdAbbrechen.Left, cmdAbbrechen.Top
cmdBeenden.Cancel = True
End Sub
Private Sub cmdAbbrechen_Click()
m_blnCancel = True
End Sub
Private Sub cmdStart_Click()
Dim i As Long
m_blnCancel = False
ToogleButtons
cmdAbbrechen.Cancel = True
For i = 1 To 100000
Me.Cls
Me.CurrentX = 520
Me.CurrentY = 400
Me.Print CStr(i)
If GetInputState() Then
DoEvents
If m_blnCancel Then Exit For
End If
Next
ToogleButtons
cmdBeenden.Cancel = True
End Sub
Private Sub ToogleButtons()
cmdStart.Enabled = Not cmdStart.Enabled
cmdAbbrechen.Enabled = Not cmdAbbrechen.Enabled
cmdAbbrechen.Visible = Not cmdAbbrechen.Visible
cmdBeenden.Enabled = Not cmdBeenden.Enabled
cmdBeenden.Visible = Not cmdBeenden.Visible
DoEvents
End Sub
|
|
|
Windows-Version |
95 |
|
|
98/SE |
|
|
ME |
|
|
NT |
|
|
2000 |
|
|
XP |
|
|
Vista |
|
|
Win
7 |
|
|
|
VB-Version |
VBA 5 |
|
|
VBA 6 |
|
|
VB 4/16 |
|
|
VB 4/32 |
|
|
VB 5 |
|
|
VB 6 |
|
|
|
|
Download (2,8 kB)
|
Downloads bisher: [ 839 ]
|
|
|