以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  [求助]自定义函数Form错误  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=78097)

--  作者:blsu33
--  发布时间:2015/12/2 8:40:00
--  [求助]自定义函数Form错误
老师,
    Form自定义函数中有误,不知道怎么修改,请老师给看看。
Dim sender = args(0)
Dim e As object= args(1)
’Dim Form As object
Dim dataname As String=e.Form.Name
Dim dt As DataTable=DataTables("Z002菜单生成")
Dim dr As DataRow=dt.Find("编码规则=\'"& sender.Name &"\'")
If dr IsNot Nothing And dr.IsNull("执行命令")=False Then
    Select Case dr("执行命令")
               Case "模拟点击"
            Dim btn As WinForm.Button
            e.Form.Controls(dr("打开对应窗口")).PerformClick()    是否这里写的不对呢?
    End Select
End If

错误提示

图片点击可在新窗口打开查看此主题相关图片如下:qq图片20151202083611.png
图片点击可在新窗口打开查看


--  作者:blsu33
--  发布时间:2015/12/2 8:52:00
--  
哦 老师,
测试其中自定义函数中这部分直接写成
F orms.Controls(“窗口1”)).PerformClick()  

有效不提示错误

--  作者:blsu33
--  发布时间:2015/12/2 10:03:00
--  
红袍老师,
   这个会是什么原因呢?

--  作者:大红袍
--  发布时间:2015/12/2 10:07:00
--  

那这样写

 

sender.Findform.Controls(dr("打开对应窗口")).PerformClick() 

 


--  作者:blsu33
--  发布时间:2015/12/2 10:22:00
--  
老师,
这块又怎么写
            Dim ck As WinForm.Form =Forms(dr("打开对应窗口"))
            If ck<>"" Then
                ck.Open
            Else
                MessageBox.Show("未找到对应窗口,请开发者修改!")
            End If


--  作者:大红袍
--  发布时间:2015/12/2 10:26:00
--  
If Forms.Contains(dr("打开对应窗口")) Then
--  作者:blsu33
--  发布时间:2015/12/2 10:31:00
--  

图片点击可在新窗口打开查看此主题相关图片如下:qq图片20151202102658.png
图片点击可在新窗口打开查看

红袍老师,
  菜单是放到TabControl 总的页面中,是不是,还需要指定哪个页面才行,还是怎么的?

--  作者:blsu33
--  发布时间:2015/12/2 10:48:00
--  
老师,
这个控件是可以找到的
是不是我改的不对
Dim sender = args(0)
Dim e As object= args(1)
Dim dt As DataTable=DataTables("菜单生成")
Dim dr As DataRow=dt.Find("编码规则=\'"& sender.Name &"\'")
If dr IsNot Nothing And dr.IsNull("执行命令")=False Then
    Select Case dr("执行命令")
               Case "模拟点击"
            MessageBox.Show(dr("打开对应窗口"))
            \'MessageBox.Show(sender.Findforms.Controls(dr("打开对应窗口")))\'这句往后就提示了
            sender.Findform.Controls(dr("打开对应窗口")).PerformClick()
            
    End Select
End If

--  作者:大红袍
--  发布时间:2015/12/2 11:22:00
--  

那就不要相对引用。

 

生成的时候,给菜单赋值其窗口名。如 控件.tag = "窗口1"

 

或者直接用一个变量来记录窗口名。