Foxtable(狐表)用户栏目专家坐堂 → 自定义函数里面e.cancel 要转换成什么写法?


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

主题:自定义函数里面e.cancel 要转换成什么写法?

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


加好友 发短信
等级:六尾狐 帖子:1219 积分:8467 威望:0 精华:0 注册:2016/2/2 21:52:00
自定义函数里面e.cancel 要转换成什么写法?  发帖心情 Post By:2018/7/24 9:18:00 [只看该作者]

自定义函数里面e.cancel 要转换成什么写法?

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


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

不明白你的意思,请具体说明你的问题。

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


加好友 发短信
等级:狐精 帖子:3358 积分:24758 威望:0 精华:0 注册:2012/3/26 21:47:00
  发帖心情 Post By:2018/7/24 9:32:00 [只看该作者]

return nothing

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


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

比如在表事件keydown中,有如下代码,为了代码简洁,我想放到自定义函数中, 其中的e.cancel 在自定义函数中还可以继续使用吗?
  '按下delete键
   ElseIf e.KeyCode = Keys.Delete Then


   Dim Result As DialogResult
   Result = MessageBox.Show("是否确认删除?", "提示", MessageBoxButtons.YesNo, MessageBoxIcon.Question)
   If Result = DialogResult.Yes 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\" & r("已接收文件")      '拼凑本地路径
       ' msgbox(str_path)
      '  If FileSys.FileExists(str_path) Then '如果本地文件已经存在
      '      FileSys.DeleteFile(str_path) '则删除之以便重新下载
      '  End If   

          If  ftp1.DeleteFile(r("附件"))  = True Then
            r("附件")=Nothing  '清空表格中显示的文件名
            msgbox("文件删除成功!")
          Else 
            msgbox("文件删除失败!")
          End If       
         r.Save
     Else
         '主动刷新当前表格,不然虽然取消了删除,但被删除单元格的内容会不见
         Dim t As Table = CurrentTable
         Dim temp As String = t.Filter
         t.DataTable.Load(False)     'false表示不要在执行加载之前执行 BeforSaveDatarow事件(如执行,则文件协作表中会把编辑者删掉)
         t.Filter = temp

     End If

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


加好友 发短信
等级:六尾狐 帖子:1219 积分:8467 威望:0 精华:0 注册:2016/2/2 21:52:00
  发帖心情 Post By:2018/7/24 10:06:00 [只看该作者]

问题二: 为什么下面这段代码,在执行else分支后,当前表格的  第一行会被清空,但刷新后又会再出来?    以前没有使用自定义函数的时候是正常的

     If e.KeyCode = Keys.Delete  Then       '按下del键    
           Dim Result As DialogResult
           Result = MessageBox.Show("是否确认删除?", "提示", MessageBoxButtons.YesNo, MessageBoxIcon.Question)
           If Result = DialogResult.Yes Then     '如果点击的是 ,则删除,否则不删除    
               e.Cancel = True '且取消此次按键          
               Functions.Execute("FtpProcess","fileDelete",TablePath,e.Table.name)    '后面两个参数用不上,但为了自定函数保持一致还是要写上
 ---->> Else
               '主动刷新当前表格,不然虽然取消了删除,但被删除单元格的内容会不见
               Dim t As Table = CurrentTable
               Dim temp As String = t.Filter
               t.DataTable.Load(False)     'false表示不要在执行加载之前执行 BeforSaveDatarow事件(如执行,则文件协作表中会把编辑者删掉)
               t.Filter = temp
           End If
      end if


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


加好友 发短信
等级:八尾狐 帖子:1916 积分:17158 威望:0 精华:0 注册:2014/7/29 19:09:00
  发帖心情 Post By:2018/7/24 10:17:00 [只看该作者]

传递e参数到函数中就可以用了

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


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

1、把e参数传递到函数里面去;

 

2、具体做一个实例发上来测试才知道。


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


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

我是想问 在自定义函数里面  想禁止当前行修改   用e.cancel=true 是不行的,要怎么改?

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


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

以下是引用ycwk在2018/7/24 11:29:00的发言:
我是想问 在自定义函数里面  想禁止当前行修改   用e.cancel=true 是不行的,要怎么改?

 

1、调用函数的时候,把e参数传递进去;

 

2、函数里面获取e参数

 

Dim e = args(0)


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


加好友 发短信
等级:六尾狐 帖子:1219 积分:8467 威望:0 精华:0 注册:2016/2/2 21:52:00
  发帖心情 Post By:2018/7/24 17:36:00 [只看该作者]

在表的keydown 事件中编写如下代码,经调试发现,是在msgbox(1) 后, 光标移到第一行后,该列的附件列内容才消失,难道 keydown 事件之后还执行了什么代码?

Dim cname As String = e.Table.cols(e.Table.colsel).name    
'Dim r As Row = e.Table.rows(e.Table.rowsel)
Dim TableName As String = e.Table.name
'msgbox(TableName)
Dim TablePath As String = "/各表附件/" & TableName & "/"

If user.Group="管理员" Then 
    If cname = "附件"  Then
       If  e.Control = True AndAlso e.KeyCode = Keys.V Then     '按下ctrl+V
           Functions.Execute("FtpProcess","fileupload",TablePath,e.Table.name,e)    '把e参数当作变量传进去
       ElseIf e.Control=True AndAlso e.keyCode =keys.C Then    '按下ctrl+c键             
           Functions.Execute("FtpProcess","filedownload",TablePath,e.Table.name,e)    '后面两个参数用不上,但为了自定函数保持一致还是要写上    '把e参数当作变量传进去
       ElseIf e.KeyCode = Keys.Delete  Then        '按下del键           
           Functions.Execute("FtpProcess","fileDelete",TablePath,e.Table.name,e)    '后面两个参数用不上,但为了自定函数保持一致还是要写上 '把e参数当作变量传进去
       End If
    End If   
End If  '如果 user.group="管理员" 结束
msgbox(1)

 回到顶部
总数 13 1 2 下一页