在没有循环体下用DoEvents,是不是和没有用一样的呀,
我有一个是处理数据库的,但是不需要用到循环,我又想加一个进度条,怎么样搞呀?
我现在用了DoEvents没有效果,还是一样要等执行完了才会滚动
要怎么样解决

解决方案 »

  1.   

    在你处理数据库的各条语句中间加入DoEvents
      

  2.   

    如果你单步跟踪你就会发现,处理数据库的语句一旦执行,VB就会等待处理结果,如果处理没有完成,根本不会执行到你的doEvents语句。如果需要长时间的访问数据库而又不让用户觉得死机可以在数据库访问之间弹出一个置顶窗口,并在窗口中放置gif动画或者提示之类的东西。
      

  3.   

    那时gif也不会播放的,都会停在那里
      

  4.   

    to kafa(求问者) 忘了说了,做一个DLL,调用DLL中的窗体,该窗体上放置gif,这时候的gif是会动的
      

  5.   

    dll中的窗体,没做过,能说明白点吗?谢谢
      

  6.   

    或者你可以先弹出窗口播放gif,然后再执行数据库语句 呵呵~
      

  7.   

    用dll 里的也不可以,那个图片还没有显示出来,程序都不会动了,要等执行完了,才会显示
      

  8.   

    怎么可能呢?我一直是这样做的,给你看看我的源代码吧dll中包含一个窗体FrmMessage,该窗体仅仅是一个gif控件和一个label用来显示信息在dll工程里面的一个类模块中,定义如下函数Public Function CreateWaitFrm(ByVal sGifPath As String, sMessage As String) As Object
        Dim f As Object
        On Error GoTo ErrorHandle
        If sGifPath = "" Then
            sGifPath = GetSetting("Test", "AppPath", "AppPath", "C:\")
        End If
        Screen.MousePointer = vbHourglass
        If Right(Trim(sGifPath), 1) <> "\" Then
            sGifPath = Trim(sGifPath) & "\"
        End If
        FrmMessage.mstrWaitPath = sGifPath          '这两个变量是等待窗体中是用到的目的在于
        FrmMessage.lblMessage.Caption = sMessage    '确定gif文件和显示的提示字符串
        Set f = FrmMessage
           
        SetWindowPos f.hwnd, HWND_TOPMOST, 0, 0, 0, 0, SWP_NOMOVE Or SWP_NOSIZE Or SWP_SHOWWINDOW Or SWP_NOACTIVATE       '把窗体置顶
        f.Refresh
        Set CreateWaitFrm = f
        Exit Function
    ErrorHandle:
         MsgBox "产生等待窗体出错: " & Error
    End Function主程序在引用了该dll之后用下面的语句调用Dim ObjFrmWait As Object
    Set ObjFrmWait = CreateWaitFrm("", "正在操作,请稍候")
    '中间放上你的数据库处理程序。
    Unload ObjFrmWait
    Set ObjFrmWait = Nothing
    我们一直是这样处理的,在数据库长时间处理的过程中gif图片会动,免得用户觉得死机。如果还有什么问题可能就是在gif显示控件上,如果需要我们用的那个控件请和我QQ联系:71429660
      

  9.   

    FrmMessage.mstrWaitPath = sGifPath          '这两个变量是等待窗体中是用到的目的在于你这个是那里来的呀?为什么老是不会显示出那个窗口呀
      

  10.   

    Dim ObjFrmWait As Object
    Set ObjFrmWait = CreateWaitFrm("", "正在操作,请稍候")你这样还不可以调用呀,还要写一个dim name as new class1
    kk.CreateWaitFrm(...)这样才可以