以文本方式查看主题

-  Foxtable(狐表)  (http://www.foxtable.com/bbs/index.asp)
--  专家坐堂  (http://www.foxtable.com/bbs/list.asp?boardid=2)
----  在循环中,如何暂停、继续和停止?  (http://www.foxtable.com/bbs/dispbbs.asp?boardid=2&id=98126)

--  作者:包头123
--  发布时间:2017/3/24 16:15:00
--  在循环中,如何暂停、继续和停止?
版主:
     我有一个表,从第一条记录到最后一条记录,尾朗读其中的备注字段,但希望在朗读过程中,随时能暂停、继续、停止或者退出。
     请问怎么做?

--  作者:有点色
--  发布时间:2017/3/24 16:20:00
--  

参考 http://www.foxtable.com/webhelp/scr/2240.htm

 


--  作者:包头123
--  发布时间:2017/3/24 16:32:00
--  
为什么在选择同步朗读时,无法停止呢?
--  作者:有点色
--  发布时间:2017/3/24 16:57:00
--  
 同步朗读的时候,是无法停止的。要用异步朗读。
--  作者:包头123
--  发布时间:2017/3/24 17:19:00
--  
同步朗读第一条到最后一条记录都能正常朗读,但异步朗读,只朗读最后一条记录的内容。
这个是为什么?

--  作者:有点色
--  发布时间:2017/3/24 17:40:00
--  

在全局代码定义sp变量

 

Public sp As New DotNetSpeech.SpVoice()

 

然后,直接使用sp,而不需要定义 Dim sp


--  作者:包头123
--  发布时间:2017/3/27 11:52:00
--  
版主:
     我就按照你的方式使用的就是不行,还是只朗读最后一条记录,前面的记录全部忽略了。
在全局代码中定义:
Public Speaker As New DotNetSpeech.SpVoice()

设置为异步朗读模式
朗读语句如下:

Dim i As Integer
For i = 0 To Tables("窗口A_Table1").Rows.Count() - 1
    Tables("窗口A_Table1").Position = i

    Application.DoEvents      
    Dim yy As WinForm.ListBox = e.Form.Controls("ListBox1")
    Dim vl As String = e.Form.Controls("TextBox2").Value                                \'获得要朗读的文本
    Speaker.Rate = e.Form.Controls("boxSpeed").Value                                    \'设置语速
    Speaker.Voice = Speaker.GetVoices(String.Empty,String.Empty).Item(yy.SelectedIndex) \'选择语音库
    Speaker.Speak("", DotNetSpeech.SpeechVoiceSpeakFlags.SVSFPurgeBeforeSpeak)          \'停止之前的朗读
    If  e.Form.Controls("rdoAsync").Checked Then
        Speaker.Speak(vl, DotNetSpeech.SpeechVoiceSpeakFlags.SVSFlagsAsync)             \'异步朗读
    Else
        Speaker.Speak(vl, DotNetSpeech.SpeechVoiceSpeakFlags.SVSFDefault)               \'同步朗读
    End If
Next


--  作者:有点色
--  发布时间:2017/3/27 12:16:00
--  

 来看看这个例子 http://www.foxtable.com/bbs/dispbbs.asp?BoardID=2&ID=40332&skin=0