以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  内部函数传e  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=180058)

--  作者:cd_tdh
--  发布时间:2022/9/26 9:29:00
--  内部函数传e

老师,内部函数传e还是没怎么搞懂,请老师看看

内部函数代码如下:

Dim e As Object = Args(0)
Dim dr As DataRow = DataTables("用户管理").Find("姓名 = \'" & _UserName & "\'")
If dr Is Nothing Then
    MessageBox.Show("你没有该权限!", "提示", MessageBoxButtons.OK)
    Return ""    \'该返回那个值,不在执行后续按钮中新增的代码?
Else
    Dim Str As String = dr("功能权限")
    Dim nm = e.sender.Name
    If Str.IndexOf(nm) = -1 Then \'0满足条件,-1不满足条件
        MessageBox.Show("你没有权限")
        Return ""   \'该返回那个值,不在执行后续按钮中新增的代码?
    End If
End If

 

窗口中按钮调用代码如下:

Functions.Execute("功能权限",e,"新增")
Tables("中标项目管理").AddNew()

 


--  作者:有点蓝
--  发布时间:2022/9/26 9:39:00
--  
和e参数没有一点关系,根据需要返回一个值,然后判断这个值是否符合预期即可
比如返回true
Return true
然后判断
if Functions.Execute("功能权限",e,"新增") = false then
Tables("中标项目管理").AddNew()
endif

也可以返回其它任意值
比如返回有权限返回1,无权限返回0
If dr Is Nothing Then
    MessageBox.Show("你没有该权限!", "提示", MessageBoxButtons.OK)
    Return 0    \'该返回那个值,不在执行后续按钮中新增的代码?
Else
    Dim Str As String = dr("功能权限")
    Dim nm = e.sender.Name
    If Str.IndexOf(nm) = -1 Then \'0满足条件,-1不满足条件
        MessageBox.Show("你没有权限")
        Return 0  \'该返回那个值,不在执行后续按钮中新增的代码?
    End If
End If
return 1

然后判断
if Functions.Execute("功能权限",e,"新增") = 1 then
Tables("中标项目管理").AddNew()
endif

--  作者:cd_tdh
--  发布时间:2022/9/26 10:03:00
--  

Functions.Execute("功能权限",e,"新增")

怎么把按钮名称传到内部函数呢,调用的时候在写一次按钮名称,觉得不方便。

 

Dim e As Object = Args(0)
Dim dr As DataRow = DataTables("用户管理").Find("姓名 = \'" & _UserName & "\'")
If dr Is Nothing Then
    MessageBox.Show("你没有权限!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Warning)
    Return True
Else
    Dim Str As String = dr("功能权限")
    Dim nm = e.sender.Name
    If Str.IndexOf(nm) = -1 Then \'0满足条件,-1不满足条件
        MessageBox.Show("你没有权限!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Warning)
        Return True
    End If
End If

[此贴子已经被作者于2022/9/26 10:04:42编辑过]

--  作者:有点蓝
--  发布时间:2022/9/26 10:06:00
--  
如果是在click事件里使用的,和正常方式使用e参数即可,比如e.sender就是正在点击的按钮
--  作者:cd_tdh
--  发布时间:2022/9/26 10:13:00
--  

明白了,直接这样就行了

Functions.Execute("功能权限",e)

[此贴子已经被作者于2022/9/26 10:13:18编辑过]