Foxtable(狐表)用户栏目专家坐堂 → [求助]用Clipboard.GetText(),去获取syscmd.Edit.copy()的文本,获取不到的BUG.


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

主题:[求助]用Clipboard.GetText(),去获取syscmd.Edit.copy()的文本,获取不到的BUG.

帅哥哟,离线,有人找我吗?
小猫追老鲨
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:幼狐 帖子:89 积分:619 威望:0 精华:0 注册:2020/4/24 18:55:00
[求助]用Clipboard.GetText(),去获取syscmd.Edit.copy()的文本,获取不到的BUG.  发帖心情 Post By:2024/10/19 8:04:00 [只看该作者]

表格上面做了一个按钮,利用syscmd.Edit.copy()复制表格选中区域的数据,再用Clipboard.GetText()获取复制的内容到变量str,但是老实获取不到值!!!
Dim tb As Table = e.Form.Controls("Table1").Table
 tb.DataTable.AllowCopyHeader =True
tb.Select

ClipBoard.Clear
syscmd.Edit.copy()
System.Threading.Thread.Sleep(1000)

If Clipboard.ContainsText() Then
    Dim str As String = Clipboard.GetText()
    MsgBox("剪贴板包含文本: " & str)
Else
    MsgBox("剪贴板不包含文本")
End If
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:表格复制并写入clipboard失败.foxdb


[此贴子已经被作者于2024/10/19 8:06:19编辑过]

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


加好友 发短信
等级:超级版主 帖子:110008 积分:559828 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2024/10/19 9:44:00 [只看该作者]

不要使用syscmd.Edit.copy。要使用表格提供的复制方法:http://www.foxtable.com/webhelp/topics/2212.htm

Dim tb As Table = e.Form.Controls("Table1").Table
 tb.DataTable.AllowCopyHeader =True
tb.Select
tb.EditCopy
If Clipboard.ContainsText() Then
    Dim str As String = Clipboard.GetText()
    MsgBox("剪贴板包含文本: " & str)
……
[此贴子已经被作者于2024/10/19 9:44:08编辑过]

 回到顶部
帅哥哟,离线,有人找我吗?
小猫追老鲨
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:幼狐 帖子:89 积分:619 威望:0 精华:0 注册:2020/4/24 18:55:00
  发帖心情 Post By:2024/10/19 14:42:00 [只看该作者]

谢谢蓝总!十分感谢!大师果然是大师!
但是CurrentTable.EditCopy()和syscmd.Edit.copy()只能复制表头的字段名(英文),不能复制标题(中文),
后面自己想了个土办法,遍历所选区域的表头和数据,组装到str这个字符串变量,再装进ClipBoard,
土办法比较麻烦,请问蓝老师,想要复制表头的标题行,请问有没有什么自带的简单方法呢:
Dim S As String
If CurrentTable.LeftCol >=0 And CurrentTable.RightCol >=0  Then
    For i As Integer = CurrentTable.LeftCol To CurrentTable.RightCol
        Dim c As Col=CurrentTable.Cols(i)
        If i=CurrentTable.RightCol Then
            s=s & c.Caption & chr(13)
        Else
            s=s & c.Caption & chr(9)
        End If
    Next
End If
If CurrentTable.TopPosition >=0 And CurrentTable.BottomPosition>=0 Then
    For i As Integer =CurrentTable.TopPosition To CurrentTable.BottomPosition
        Dim R As Row =CurrentTable.Rows(i)
        If CurrentTable.LeftCol >=0 And CurrentTable.RightCol >=0  Then
            For j As Integer = CurrentTable.LeftCol To CurrentTable.RightCol
                Dim a As String
                a=CurrentTable.Rows(i)(j)
                If j=CurrentTable.RightCol Then
                    s=s & a & chr(13)
                Else
                    s=s & a & chr(9)
                End If
            Next
        End If
    Next
End If
ClipBoard.SetText(s)
[此贴子已经被作者于2024/10/19 14:50:35编辑过]

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


加好友 发短信
等级:超级版主 帖子:110008 积分:559828 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2024/10/19 14:54:00 [只看该作者]

没有其它办法

 回到顶部