Foxtable(狐表)用户栏目专家坐堂 → [求助]当前单元格的值


  共有3261人关注过本帖树形打印复制链接

主题:[求助]当前单元格的值

帅哥哟,离线,有人找我吗?
jyh7081
  11楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:四尾狐 帖子:951 积分:8371 威望:0 精华:0 注册:2012/10/3 13:25:00
  发帖心情 Post By:2018/7/9 22:00:00 [只看该作者]

老师,加黑代码提示出错。
是这样设置变量吗?

If Forms("语音朗读").opened Then
  Dim f As WinForm.Form = Forms.ActiveForm
  If f IsNot Nothing Then
      Dim web As WinForm.webbrowser = f.controls("webbrowser1").basecontrol
      Forms("语音朗读").controls("TextBox1").text = vars("val")
      Forms("语音朗读").controls("朗读").performclick
      Forms("语音朗读").controls("暂停").checked = True
      web.Document.InvokeScript("eval", new String() {"document.getElementById('" & arr(0) & "').setAttribute('class', '');" })
  End If
End If
[此贴子已经被作者于2018/7/10 7:28:44编辑过]

 回到顶部
帅哥哟,离线,有人找我吗?
有点甜
  12楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2018/7/10 10:26:00 [只看该作者]

Dim web = f.controls("webbrowser1").basecontrol

 回到顶部
帅哥哟,离线,有人找我吗?
jyh7081
  13楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:四尾狐 帖子:951 积分:8371 威望:0 精华:0 注册:2012/10/3 13:25:00
  发帖心情 Post By:2018/7/13 16:47:00 [只看该作者]

按照老师指点,功能都实现了。
我在编辑窗口中的页面集合上又增加了一个页面BBB,在变换div校对时,会出现下列两个错误提示,请老师再帮助看看是哪里的原因?
谢谢!

 


图片点击可在新窗口打开查看此主题相关图片如下:image 1.jpg
图片点击可在新窗口打开查看


 


图片点击可在新窗口打开查看此主题相关图片如下:image 2.jpg
图片点击可在新窗口打开查看 


 

 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:2018-7-13.rar


 回到顶部
帅哥哟,离线,有人找我吗?
有点甜
  14楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2018/7/13 17:28:00 [只看该作者]

1、你的窗口【语音朗读】的窗口关闭了;

 

2、代码改成

 

Dim str1 As String = args(0)
Dim arr() As String = str1.Split("-")
Dim t As Table = Tables(arr(1))
t.Select(t.RowSel,t.Cols(arr(0)).Index)
vars("val") = t.value
'msgbox(vars("val"))

Dim frm As object    '判断并列窗口名称
For Each f As WinForm.Form In Forms
    If f.Tablename = "main" AndAlso f.opened AndAlso f.FormStyle = 0 Then
        If Forms("语音朗读").opened Then
            Dim obj = f.ActiveControl
            If Typeof obj Is winform.webbrowser Then
                Dim web = obj.basecontrol
                Forms("语音朗读").controls("TextBox1").text = vars("val")
                Forms("语音朗读").controls("朗读").performclick
                Forms("语音朗读").controls("暂停").checked = True
                web.Document.InvokeScript("eval", new String() {"document.getElementById('" & arr(0) & "').setAttribute('class', '');" })
            Else
                Return Nothing
            End If
        End If
    End If
Next


 回到顶部
帅哥哟,离线,有人找我吗?
jyh7081
  15楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:四尾狐 帖子:951 积分:8371 威望:0 精华:0 注册:2012/10/3 13:25:00
  发帖心情 Post By:2018/7/15 17:20:00 [只看该作者]

谢谢甜老师的耐心解答!
我还有两个问题:
1、点击“语音校对”按钮后,变换不同div,校对都能及时跟随变换。
但是,如果校对中(就是当前div内容还没有朗读完毕时),点击按钮停止校对,还会出现楼上第一个提示。
这个问题是不是校对采用的“同步朗读”模式造成的?
与朗读窗口中的这段代码有关系吗?能不能避免?

图片点击可在新窗口打开查看此主题相关图片如下:image 1.jpg
图片点击可在新窗口打开查看

2、我想打开朗读窗口,朗读当前网页所有div的文本内容,下列代码是老师以前提供的,我不知道怎样修改,请老师指教,谢谢!
Dim web As New System.Windows.Forms.WebBrowser()
web.Navigate(ProjectPath & "2.html")
Do Until web.ReadyState = 4
    Application.DoEvents
Loop
Dim elems As object = web.Document.GetElementById("bd").GetElementsByTagName("div")
For Each elem As object In elems
    If elem.getattribute("className") = "dc-ccm1" Then
        Dim divs As object = elem.GetElementsByTagName("div")
        For Each div As object In divs
            'output.show(div.innertext)
            'ClipBoard.SetText(div.innertext)    ’写入剪贴板
            Forms("语音朗读").open()
            Forms("语音朗读").Controls("TextBox1").Text = div.innertext
        Next
    End If
Next
[此贴子已经被作者于2018/7/15 17:50:17编辑过]

 回到顶部
帅哥哟,离线,有人找我吗?
有点甜
  16楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2018/7/15 18:57:00 [只看该作者]

1、出现提示,请加入msgbox,定位出错位置。你不要把朗读窗口关闭。

 

2、点击div的时候,记录此webbrowser对象,如

 

vars("web") = forms.activeform.activecontrol

 

需要朗读的时候,直接使用 vars("web")


 回到顶部
帅哥哟,离线,有人找我吗?
jyh7081
  17楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:四尾狐 帖子:951 积分:8371 威望:0 精华:0 注册:2012/10/3 13:25:00
  发帖心情 Post By:2018/7/16 11:51:00 [只看该作者]

第一个问题,增加一句暂停代码,然后增加一个关闭朗读窗口的按钮,不会报错。

但是,把关闭按钮合并进来或者模拟点击关闭按钮,都不行。

这个怎样解决?

If e.Form.Controls("语音校对").text ="语音校对" Then
    e.Form.Controls("语音校对").text ="校对中..."
    e.Form.Controls("语音校对").BackColor = Color.red
    Forms("语音朗读").open(-1000,0)
    Forms("语音朗读").baseform.Hide()
   
Else
    e.Form.Controls("语音校对").text ="语音校对"
    e.Form.Controls("语音校对").BackColor = Color.Transparent
    Forms("语音朗读").Controls("TextBox1").text = "校对结束"   '清空
    Forms("语音朗读").controls("暂停").checked = True  
   
    Forms("语音朗读").close
    'e.Form.Controls("关闭").Select() '单击关闭按钮
    'Sendkeys.Send("{Enter}")
End If

 

第二个问题:vars("web") = forms.activeform.activecontrol  这个放哪里?

调用的时候,Forms("语音朗读").Controls("TextBox1").Text = vars("web")

函数和Forms("语音朗读")的afterload里是Forms("语音朗读").Controls("TextBox1").Text =vars("val"),用不用修改?


 回到顶部
帅哥哟,离线,有人找我吗?
有点甜
  18楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2018/7/16 12:21:00 [只看该作者]

1、你点击暂停的时候,代码还在执行朗读的,这个时候不能关闭窗口。如果要关闭窗口,你要在朗读代码那里判断和关闭。你可以设置一个全局变量。

 

2、代码放在点击div,div获取到焦点的地方。


 回到顶部
帅哥哟,离线,有人找我吗?
jyh7081
  19楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:四尾狐 帖子:951 积分:8371 威望:0 精华:0 注册:2012/10/3 13:25:00
  发帖心情 Post By:2018/7/18 9:20:00 [只看该作者]

1、我把“语音朗读”窗口打开后的默认朗读模式设置为“异步朗读”,这样就能在朗读过程中点击“停止”按钮,正常关闭“语音朗读”窗口了。
但是,出现一个新问题,我在“校对”按钮中模拟点击“停止”按钮,关闭“语音朗读”窗口的代码为什么没起作用呢?而且,在“校对”过程中点击不同的div,会把div当前行的文字在光标处断成两行。
切换校对按钮的代码如下:

If e.Form.Controls("语音校对").text ="语音校对" Then
    e.Form.Controls("语音校对").text ="校对中..."
    e.Form.Controls("语音校对").BackColor = Color.red
    Forms("语音朗读").open(-1000,-1000)
    Forms("语音朗读").baseform.Hide()
   
Else
    e.Form.Controls("语音校对").text ="语音校对"
    e.Form.Controls("语音校对").BackColor = Color.Transparent
    If Forms("语音朗读").opened Then
        Forms("语音朗读").Controls("停止").Select()
        Sendkeys.Send("{Enter}")
        Forms("语音朗读").close
    End If
End If


2、朗读当前网页所有div的文本内容,还是做不了。

请老师有空再给看一看。谢谢!

 

 下载信息  [文件大小:   下载次数: ]
点击浏览该文件:2018-7-18当前值.rar


 回到顶部
帅哥哟,离线,有人找我吗?
有点甜
  20楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2018/7/18 11:10:00 [只看该作者]

1、模拟点击参考

 

http://www.foxtable.com/webhelp/scr/2309.htm

 

请在朗读的过程中判断是否停止关闭窗口,不要直接关闭啊。用vars变量记录是否需要关闭窗口啊。

 

2、得到web对象以后,就写代码如,细节自己加入msgbox调整

 

Dim web = vars("web")
Dim elems As object = web.Document.GetElementById("bd").GetElementsByTagName("div")
For Each elem As object In elems
    If elem.getattribute("className") = "dc-ccm1" Then
        Dim divs As object = elem.GetElementsByTagName("div")
        For Each div As object In divs
            'output.show(div.innertext)
            'ClipBoard.SetText(div.innertext)    ’写入剪贴板
            Forms("语音朗读").open()
            Forms("语音朗读").Controls("TextBox1").Text = div.innertext
        Next
    End If
Next
 
3、请自己看懂代码理解代码后增加自己所需要的功能。看不懂理解不了的前提下不要乱用别人不成熟的实例。如果自己要做语音,请参考
 
 

 回到顶部
总数 31 上一页 1 2 3 4 下一页