以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  求助参数的传递  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=124296)

--  作者:ljz
--  发布时间:2018/9/4 8:21:00
--  求助参数的传递
各位大腕,早上好。
        请教一下。将 form1,btg1,True 这个字符串保存在某表某格dr("参数")中,如何写表达式,用dr("参数")代替以下代码中的红底部分代码?

Select Case e.Path
    Case "test.htm"
        Dim wb As New weui
        wb.AddForm("","form1","test.htm")
        With wb.AddButtonGroup("form1","btg1",True)  
\'
垂直排列
            .Add("btn1"
"
按钮")
            .Add("btn4"
"
按钮""reset")
            .Add("btn5"
"
按钮", "", "http://www.foxtable.com"\'单击这个按钮可以打开foxtable主页
        End With
        With wb.AddButtonGroup("form1","btg2"False)  
\'
水平排列
            .Add("btn6"
"
按钮")
            .Add("btn7"
"
按钮").Kind = 2
        End With
        With wb.AddButtonGroup("form1","btg3"False)
            .Add("btn8"
"
按钮").Kind = 0
            .Add("btn9"
"
按钮").Kind = 1
        
End With
        e.WriteString(wb.Build) 
\'生成网页

End
 Select
--  作者:有点甜
--  发布时间:2018/9/4 8:33:00
--  

 

With wb.AddButtonGroup(dr("参数1"),dr("参数2"),dr("参数3"))  \'垂直排列


--  作者:有点甜
--  发布时间:2018/9/4 8:35:00
--  

如果是字符串 form1,btg1,True 你可以分割以后再使用

 

http://www.foxtable.com/webhelp/scr/0245.htm

 


--  作者:ljz
--  发布时间:2018/9/4 10:49:00
--  
谢谢有点甜!
我的意思是想更进一步

    dr(“参数”)里在不同的情况下,可能有2个参数、也可能有3个参数,是否用类似.Add(dr("参数").split(“,”))表达 ?
Select Case e.Path
    Case "test.htm"
        Dim wb As New weui
        wb.AddForm("","form1","test.htm")
        With wb.AddButtonGroup("form1","btg1",True)  
\'
垂直排列
            .Add("btn1"
"
按钮")
            .Add("btn4"
"
按钮""reset")
            .Add("btn5"
"
按钮", "", "http://www.foxtable.com"\'单击这个按钮可以打开foxtable主页
        End With
        With wb.AddButtonGroup("form1","btg2"False)  
\'
水平排列
            .Add("btn6"
"
按钮")
            .Add("btn7"
"
按钮").Kind = 2
        End With
        With wb.AddButtonGroup("form1","btg3"False)
            .Add("btn8"
"
按钮").Kind = 0
            .Add("btn9"
"
按钮").Kind = 1
        
End With
        e.WriteString(wb.Build) 
\'生成网页

End
 Select

--  作者:有点甜
--  发布时间:2018/9/4 10:55:00
--  

你可以加上判断,如

 

Dim ary = dr("参数").split(",")

If ary.length = 2 then

 

ElseIf ary.length = 3 Then

 

End If

 

没有办法直接用字符串add进去的。


--  作者:ljz
--  发布时间:2018/9/4 12:41:00
--  
之前看过一个自定义函数。代码是这样的,就不必考虑后面参数的数量。但是不懂原理是否一下。

try
  
  If dr("参数") IsNot Nothing Then 
      Dim cs() As String
      cs =dr("参数").Split(",")\'分离参数
      If cs.Length - 1=0 Then \'如果没参数,则执行functions.execute(函数名)
      
           Functions.execute(cs(0))\'执行指定函数
      
    ElseIf cs.Length - 1>0 Then \'如果有参数,则将dr("参数")分解为函数名和参数执行functions.execute(函数名,参数1,参数2,……)

        Dim objs As New List(Of object)
        Dim Names() As object        
        For i As Integer =1 To cs.Length -1
            If cs(i) = "e" Then
                objs.Add(e)
            Else
                Functions.remove("函数")
                Dim Code As String
                Code = "return " & cs(i)
                Functions.Add("函数",Code)
                Functions.Complie()
                Dim obj = Functions.Execute("函数")
                objs.Add(obj)
            End If
        Next

        Names=objs.ToArray() \'将集合转换为数组
       Functions.execute(cs(0),Names)\'执行指定函数
    End If
End If
catch ex As exception
End try


--  作者:有点甜
--  发布时间:2018/9/4 12:44:00
--  

参考

 

http://www.foxtable.com/webhelp/scr/1487.htm