Mein VB6-Programm friert einfach ein, wenn ...

16/11/2007 - 12:35 von Gernot Santen | Report spam
Hallo,

ich habe folgendes Problem mit VB6 und einem normalen Standard-Menü bei
folgendem einfachen Code:
Wenn ich im Menü meines Programms auf Start -> Starte Form 1 klicke,
öffnet sich, nachdem der Zàhler bei 10000 angelangt ist, die leere
Form1.frm. So soll es sein!
Klicke ich aber mit der Maus, wàhrend der Zàhler hochzàhlt, noch einmal in
das inzwischen deaktivierte (disable) Menü auf den ausgegrauten Menüpunkt
"Start", friert mein VB6-Programm ein. Nur noch der Timer làuft ordentlich
weiter.

Das Programm besteht aus der Form Main.frm und einer leeren Form1.frm. Der
Inhalt von Main.frm
Option Explicit

Private Declare Function Num2Time Lib "QPRO32.DLL" (ByVal Time As Long) As
String
Private Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)
Private TimerStart As Boolean

Private TimeCount As Long

Private Sub Form_Initialize()
TimeCount = 0
Text1.Text = 0
Text2.Text = "Vergangene Zeit: " & Num2Time(TimeCount) & " [hh:mm:ss]"
End Sub

Private Sub Form1Start_Click()
Dim Counter As Variant
TimeCount = 0

TimerStart = True
Start.Enabled = False
For Counter = 1 To 100000
DoEvents
Text1.Text = Counter
Next Counter
TimerStart = False
Form1.Show 1
Unload Form1
Set Form1 = Nothing
Start.Enabled = True
End Sub

Private Sub Timer1_Timer()
If TimerStart Then TimeCount = TimeCount + 1
Text2.Text = "Vergangene Zeit: " & Num2Time(TimeCount) & " [hh:mm:ss]"
End Sub

Private Sub Form_Unload(Cancel As Integer)
Unload Me
End Sub

Woran liegt das? Ist das ein Fehler von VB6? Liegt das evtl. an der
falschen Verwendung des Menüs?

Wie kann ich erreichen, dass mein Programm nicht mehr einfriert? Kann ich
irgendwie verhindern, dass mein Programm auf das erneute Anklicken des
Menüpunktes reagiert?


Vielen Dank für eure Hinweise
Gernor Santen
 

Lesen sie die antworten

#1 Michael Monarch
16/11/2007 - 13:29 | Warnen spam
Servus Gernot,

ist die Form 'Main.frm' eine MDI-Form und wenn ja, ist die Eigenschaft
'MDIChild' von Form1.frm auf True gesetzt?

Wenn nicht, hast du mit dem 2ten click ins Menü den Fokus auf die Main.frm
gesetzt und Form1.frm befindet sich im Hintergrund.

Beachtet auch mal die Eigenschaft "ShowInTaskbar', wenn bei form1.frm die
Eigenschaft 'MDIChild' auf false gesetzt ist.

mfg michael monarch

"Gernot Santen" wrote:



Hallo,

ich habe folgendes Problem mit VB6 und einem normalen Standard-Menü bei
folgendem einfachen Code:
Wenn ich im Menü meines Programms auf Start -> Starte Form 1 klicke,
öffnet sich, nachdem der Zàhler bei 10000 angelangt ist, die leere
Form1.frm. So soll es sein!
Klicke ich aber mit der Maus, wàhrend der Zàhler hochzàhlt, noch einmal in
das inzwischen deaktivierte (disable) Menü auf den ausgegrauten Menüpunkt
"Start", friert mein VB6-Programm ein. Nur noch der Timer làuft ordentlich
weiter.

Das Programm besteht aus der Form Main.frm und einer leeren Form1.frm. Der
Inhalt von Main.frm
Option Explicit

Private Declare Function Num2Time Lib "QPRO32.DLL" (ByVal Time As Long) As
String
Private Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)
Private TimerStart As Boolean

Private TimeCount As Long

Private Sub Form_Initialize()
TimeCount = 0
Text1.Text = 0
Text2.Text = "Vergangene Zeit: " & Num2Time(TimeCount) & " [hh:mm:ss]"
End Sub

Private Sub Form1Start_Click()
Dim Counter As Variant
TimeCount = 0

TimerStart = True
Start.Enabled = False
For Counter = 1 To 100000
DoEvents
Text1.Text = Counter
Next Counter
TimerStart = False
Form1.Show 1
Unload Form1
Set Form1 = Nothing
Start.Enabled = True
End Sub

Private Sub Timer1_Timer()
If TimerStart Then TimeCount = TimeCount + 1
Text2.Text = "Vergangene Zeit: " & Num2Time(TimeCount) & " [hh:mm:ss]"
End Sub

Private Sub Form_Unload(Cancel As Integer)
Unload Me
End Sub

Woran liegt das? Ist das ein Fehler von VB6? Liegt das evtl. an der
falschen Verwendung des Menüs?

Wie kann ich erreichen, dass mein Programm nicht mehr einfriert? Kann ich
irgendwie verhindern, dass mein Programm auf das erneute Anklicken des
Menüpunktes reagiert?


Vielen Dank für eure Hinweise
Gernor Santen

Ähnliche fragen