Foxtable(狐表)用户栏目专家坐堂 → 检查剪贴板中复制的文件的文件名是否符合要求?


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

主题:检查剪贴板中复制的文件的文件名是否符合要求?

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


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

Dim cname As String = e.Table.cols(e.Table.colsel).name
Dim r As Row = e.Table.rows(e.Table.rowsel)
If cname = "已接收文件" AndAlso e.Control = True AndAlso e.KeyCode = Keys.V Then
    e.Cancel = True '且取消此次按键
    'msgbox(1)
    e.Table.FinishEditing
    Dim ls = r.DataRow.Lines(cname)
    For Each Str_path As String In Clipboard.GetFileDropList
        'msgbox(str_path)
        Dim Index1 As Integer
        Dim Str_file As String
        Index1 = Str_path.LastIndexOf("\") '最后一次出现\符号的位置
        Str_file=Str_path.SubString(Index1+1)     '从最后一个\符号后开始截取
        '上传数据
        Dim ftp1 As new ftpclient
        ftp1.host="172.16.5.89"
        ftp1.Account = "administrator"
        ftp1.password = "Admin1234"
        ftp1.RootDir="/各表附件/收发文件管理表/已接收文件/"
        If Str_file.Contains( e.Table.Name & "_" & "ID" & r("ID") & "_")  Then
            If  ftp1.upload(Str_path,Str_file)=True     '上传文件到ftp文件到指定的位置
                msgbox("文件上传成功!")
            End If
        Else
            msgbox("文件名不符合命名规范,请重命名后上传!")
            Return '结束循环
        End If
        ls.add(Str_file)
    Next
    r.DataRow.Lines(cname) = ls
    r.Save
End If

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


加好友 发短信
等级:六尾狐 帖子:1218 积分:8451 威望:0 精华:0 注册:2016/2/2 21:52:00
  发帖心情 Post By:2018/4/11 14:50:00 [只看该作者]

剪切的代码是下面这样写的,但是总感觉不好。    表格里的内容除了用  CurrentTable.Current("已接收文件") 表示外,还可以用   r.datarow.lines(cname)   这种方式写吗?       
 e.Table.cols(e.Table.colsel).name  表示什么意思呢?   e.Table.rows(e.Table.rowsel)   呢? 哪里有相关说明?
    
' 按下ctrl+X
'Dim cname As String = e.Table.cols(e.Table.colsel).name
'Dim r As Row = e.Table.rows(e.Table.rowsel)
If cname = "已接收文件" AndAlso e.Control = True AndAlso e.KeyCode = Keys.X Then
'msgbox(1)
    e.Cancel = True '且取消此次按键
    e.Table.FinishEditing
    'Dim ls = e.Row.DataRow.Lines(e.Col.name)
   ' For Each Str_path As String   '    In Clipboard.GetFileDropList
        'msgbox(str_path)
     '   Dim Index1 As Integer
     '   Dim Str_file As String
        '下载数据
        Dim ftp1 As new ftpclient
        ftp1.host="172.16.5.89"
        ftp1.Account = "administrator"
        ftp1.password = "Admin1234"
        ftp1.RootDir="/各表附件/收发文件管理表/已接收文件/"   
        'Dim str As String= r.DataRow.Lines(cname)

        Dim str_path=ProjectPath & "RemoteFiles\" & CurrentTable.Current("已接收文件")
       ' msgbox(str_path)
        If FileSys.FileExists(str_path) Then '如果本地文件已经存在
            FileSys.DeleteFile(str_path) '则删除之以便重新下载
        End If   

          If ftp1.Download(CurrentTable.Current("已接收文件"),str_path) = True Then
            ftp1.DeleteFile(CurrentTable.Current("已接收文件"))

            '以下三行为将文件路径复制到剪贴板中
            Dim ls As new System.Collections.Specialized.StringCollection
            ls.add(str_path)
            My.Computer.Clipboard.SetFileDropList(ls)
            CurrentTable.Current("已接收文件")=Nothing
            msgbox("复制成功")
            'Messagebox.show("复制成功!","提示",MessageBoxButtons.OK,MessageBoxIcon.Information)
          End If       

     r.Save
End If

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


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


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


加好友 发短信
等级:六尾狐 帖子:1218 积分:8451 威望:0 精华:0 注册:2016/2/2 21:52:00
  发帖心情 Post By:2018/4/11 15:50:00 [只看该作者]

为什么 ctrl+x 的这段代码可以生效  ,ctrl+c的这段代码不起作用。   

' 按下ctrl+C   
'Dim cname As String = e.Table.cols(e.Table.colsel).name
'Dim r As Row = e.Table.rows(e.Table.rowsel)
If cname = "已接收文件" AndAlso e.Control = True AndAlso e.KeyCode = Keys.C Then
'msgbox(1)
    e.Cancel = True '且取消此次按键
    e.Table.FinishEditing
        Dim ftp1 As new ftpclient
        ftp1.host="172.16.5.89"
        ftp1.Account = "administrator"
        ftp1.password = "Admin1234"
        ftp1.RootDir="/各表附件/收发文件管理表/已接收文件/"   
        'Dim str As String= r.DataRow.Lines(cname)

        Dim str_path=ProjectPath & "RemoteFiles\" & CurrentTable.Current("已接收文件")      '拼凑本地路径
       ' msgbox(str_path)
        If FileSys.FileExists(str_path) Then '如果本地文件已经存在
            FileSys.DeleteFile(str_path) '则删除之以便重新下载
        End If   

          If ftp1.Download(CurrentTable.Current("已接收文件"),str_path) = True Then
'msgbox("复制")
            '以下三行为将文件路径复制到剪贴板中
            Dim ls As new System.Collections.Specialized.StringCollection
            ls.add(str_path)
            My.Computer.Clipboard.SetFileDropList(ls)
'msgbox("成功")        
            msgbox("复制成功!")
          End If       
   ' r.Save   '不需要保存
End If



' 按下ctrl+X
'Dim cname As String = e.Table.cols(e.Table.colsel).name
'Dim r As Row = e.Table.rows(e.Table.rowsel)
If cname = "已接收文件" AndAlso e.Control = True AndAlso e.KeyCode = Keys.X Then
'msgbox(1)
    e.Cancel = True '且取消此次按键
    e.Table.FinishEditing
        '下载数据
        Dim ftp1 As new ftpclient
        ftp1.host="172.16.5.89"
        ftp1.Account = "administrator"
        ftp1.password = "Admin1234"
        ftp1.RootDir="/各表附件/收发文件管理表/已接收文件/"   
        'Dim str As String= r.DataRow.Lines(cname)

        Dim str_path=ProjectPath & "RemoteFiles\" & CurrentTable.Current("已接收文件")      '拼凑本地路径
       ' msgbox(str_path)
        If FileSys.FileExists(str_path) Then '如果本地文件已经存在
            FileSys.DeleteFile(str_path) '则删除之以便重新下载
        End If   

          If ftp1.Download(CurrentTable.Current("已接收文件"),str_path) = True Then
            ftp1.DeleteFile(CurrentTable.Current("已接收文件"))        '删除ftp服务器上的文件

            '以下三行为将文件路径复制到剪贴板中
            Dim ls As new System.Collections.Specialized.StringCollection
            ls.add(str_path)
            My.Computer.Clipboard.SetFileDropList(ls)

            CurrentTable.Current("已接收文件")=Nothing  '清空表格中显示的文件名
            msgbox("剪切成功")
          End If       
     r.Save
End If

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


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

不生效指什么?你加入msgbox了没有?弹出的各个值是否正确?

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


加好友 发短信
等级:六尾狐 帖子:1218 积分:8451 威望:0 精华:0 注册:2016/2/2 21:52:00
  发帖心情 Post By:2018/4/11 16:18:00 [只看该作者]

msgbox都能弹出,ftp上的文件也被复制到本地了,但是就是在桌面或其它地方按 ctrl+v的时候,文件并没有被复制过去,
但是如果把msgbox("复制成功")  放到  复制到剪贴板的三句话前面就可以,放在后面就不行  


   If ftp1.Download(CurrentTable.Current("已接收文件"),str_path) = True Then
               msgbox("复制成功!")       'msgbox放这里就可以
            '以下三行为将文件路径复制到剪贴板 中
            Dim ls As new System.Collections.Specialized.StringCollection
            ls.add(str_path)
            My.Computer.Clipboard.SetFileDropList(ls)
  
              '  msgbox("复制成功!")        'msgbox放这里就不行
    end if
[此贴子已经被作者于2018/4/11 16:25:26编辑过]

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


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

确实和msgbox有冲突,弹出msgbox的时候,会复制弹出的提示的内容到剪切板,覆盖了原先的设置。

 

你把msgbox写在前面去吧。


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


加好友 发短信
等级:六尾狐 帖子:1218 积分:8451 威望:0 精华:0 注册:2016/2/2 21:52:00
  发帖心情 Post By:2018/4/12 16:48:00 [只看该作者]

有没有办法判断当前的 剪贴板中的文件是要    复制还是要剪切?    以便我在程序中 判断复制完毕后,是否要删除源文件?  

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


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

以下是引用ycwk在2018/4/12 16:48:00的发言:
有没有办法判断当前的 剪贴板中的文件是要    复制还是要剪切?    以便我在程序中 判断复制完毕后,是否要删除源文件?  

 

用一个全局变量记录,如果按下 ctrl+x ,就标记成剪切,如果按下 ctrl+c,就标记成复制。


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


加好友 发短信
等级:六尾狐 帖子:1218 积分:8451 威望:0 精华:0 注册:2016/2/2 21:52:00
  发帖心情 Post By:2018/4/13 9:55:00 [只看该作者]

问题是,我复制不一定是在foxtale中点的呀,有可能在程序还没有启动的时候就点了。   

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