注册 登录
编程论坛 VB6论坛

command 属性设置

a535080459 发布于 2015-03-09 20:13, 1432 次点击
单击command之后运行程序,但由于程序大长,运行结束需要20分钟左右,我想中途结束或者暂停,就像调试那样,怎么设置呢?调试状态下设置 end 程序后,程序确实停了,不过窗体也没响应了,只能关了VB,再重新打开。想过Timer 的Enabled属性来控制,但Timer的循环时间太短啊 ,请问各位大神 command的属性中有没有通过  false或 true来控制command下的程序结束或暂停,或者通过其他控件 实现同样的效果也可以,如果设置全局热键的话 请大神 写一下代码!本人小白一枚,请各位大神帮忙!
4 回复
#2
lianyicq2015-03-10 10:10
试试设一布尔型全程变量pause,初值为false,窗体上新建一按钮,点击按钮后pause=true


Dim pause As Boolean
Dim i As Long
Private Sub Command1_Click()
  pause = Not (pause)
  If pause = False Then Form1.Caption = i
End Sub

Private Sub Form_Load()
  Me.Show
  While (1)
    DoEvents
    If pause = False Then
       i = i + 1
    End If
  Wend
End Sub
#3
a5350804592015-03-10 10:58
回复 2楼 lianyicq
请问版主 大大,假如我程序里有一个 Do...loop 循环,改怎么处理呢?如下:
Dim pause As Boolean
Private Declare Sub Sleep Lib "kernel32.DLL" (ByVal dwMilliseconds As Long)
Dim i As Long
Private Sub Command1_Click()
  pause = Not (pause)
  If pause = False Then
  'Form1.Caption = i
  Do
  Sleep (1000)
  Print i
  Loop
End Sub

Private Sub Form_Load()
  Me.Show
  While (1)
    DoEvents
    If pause = False Then
       i = i + 1
    End If
  Wend
End Sub

再次点击 Command1 的话会发生程序停止 但窗体无法响应。但我不知道程序是因pause = False停止下来的,还是因为窗体无响应导致程序停下来的。主要问题是怎么才能退出 Do 循环呢?
#4
lianyicq2015-03-10 11:30
程序代码:
Dim pause As Boolean
Private Declare Sub Sleep Lib "kernel32.DLL" (ByVal dwMilliseconds As Long)
Dim i As Long
Dim CMD_Exit As Boolean

Private Sub Command1_Click()
  pause = Not (pause)
  Command1.Caption = "已暂停"
  If pause = False Then CMD_Exit = True
End Sub

Private Sub Form_Load()
  Me.Show
  Do
  If CMD_Exit = True Then Command1.Caption = "已退出循环": Command1.Enabled = False: Exit Sub
  DoEvents
  Form1.Caption = "Pause"
  If pause = False Then
     Form1.Caption = "Executing"
     Sleep (1000)
     Print i
  End If
  Loop
End Sub

#5
a5350804592015-03-10 13:41
非常非常感谢  lianyicq版主  大大!你太强了!无限崇拜啊 !问题已经解决了,像我这种水平适合看哪些书籍资料或者 大大 有没有个人视频讲解 什么的。小白本人正在自学“Visual Basic vb编程从入门到精通(第3版) ”,还有什么 大大可指导的?
1