以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  [求助]用Clipboard.GetText(),去获取syscmd.Edit.copy()的文本,获取不到的BUG.  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=193833)

--  作者:小猫追老鲨
--  发布时间:2024/10/19 8:04:00
--  [求助]用Clipboard.GetText(),去获取syscmd.Edit.copy()的文本,获取不到的BUG.
表格上面做了一个按钮,利用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编辑过]

--  作者:有点蓝
--  发布时间: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编辑过]

--  作者:小猫追老鲨
--  发布时间: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编辑过]

--  作者:有点蓝
--  发布时间:2024/10/19 14:54:00
--  
没有其它办法