以文本方式查看主题 - Foxtable(狐表) (http://foxtable.com/bbs/index.asp) -- 专家坐堂 (http://foxtable.com/bbs/list.asp?boardid=2) ---- 自定义函数里面e.cancel 要转换成什么写法? (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=122370) |
-- 作者:ycwk -- 发布时间:2018/7/24 9:18:00 -- 自定义函数里面e.cancel 要转换成什么写法? 自定义函数里面e.cancel 要转换成什么写法? |
-- 作者:有点甜 -- 发布时间:2018/7/24 9:21:00 -- 不明白你的意思,请具体说明你的问题。 |
-- 作者:rjh4078 -- 发布时间:2018/7/24 9:32:00 -- return nothing |
-- 作者:ycwk -- 发布时间: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 -- 发布时间: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 -- 发布时间:2018/7/24 10:17:00 -- 传递e参数到函数中就可以用了 |
-- 作者:有点甜 -- 发布时间:2018/7/24 10:23:00 -- 1、把e参数传递到函数里面去;
2、具体做一个实例发上来测试才知道。 |
-- 作者:ycwk -- 发布时间:2018/7/24 11:29:00 -- 我是想问 在自定义函数里面 想禁止当前行修改 用e.cancel=true 是不行的,要怎么改? |
-- 作者:有点甜 -- 发布时间: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 -- 发布时间: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)
|