以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  如何在不同窗口间调用共享的方法?  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=52114)

--  作者:wh420
--  发布时间:2014/6/9 14:43:00
--  如何在不同窗口间调用共享的方法?

环境:

1、在一个停靠窗口中放置了导航栏,导航栏有若干页面。每切换到不同页面就能实现不同的目录树导航(如切换A界面是按数据库记录的时间导航,切换B界面是按记录的“专业“导航)

2、有一个添加记录的独立窗口A、编辑窗口B

问:

每个目录树导航都有一套实现导航的方法,那么如何在关闭窗口A和窗口B的时调用这些共享方法来刷新所有导航树?这个共享方法的调用如何实现请老师给一些提示或参考。

 


--  作者:有点甜
--  发布时间:2014/6/9 14:45:00
--  

 把代码定义成一个函数来调用。

 

http://www.foxtable.com/help/topics/1486.htm

 


--  作者:wh420
--  发布时间:2014/6/9 14:52:00
--  

再请教,假设这样一段代码如何用函数来调用?

Dim dt As DataTable
Dim
b As New GroupTableBuilder("统计表1",DataTables("订单"))
b
.Groups.AddDef("日期",DateGroupEnum.Year,"年")
b
.Groups.AddDef("日期",DateGroupEnum.Month,"")
b
.Groups.AddDef("产品")
b
.Totals.AddDef("客户",AggregateEnum.Count,"订单数")

dt = b.Build(False)
Dim
trv As WinForm.TreeView = e.Form.Controls("TreeView1")
trv
.BuildTree(dt, "||产品")
trv
.StopRedraw
For
Each nd As WinForm.TreeNode In trv.AllNodes
Dim Year As Integer = nd.DataRow("")
Dim Month As Integer = nd.DataRow("")
Dim Product As String = nd.DataRow("产品")
Select Case nd.Level
Case 0
nd.Text = nd.text & "(" & dt.Compute("Sum(订单数)"," = " & Year) & ")"
Case 1
nd.Text = nd.text & "(" & dt.Compute("Sum(订单数)"," = " & Year & " And = " & Month) & ")"
Case 2
nd.Text = nd.text & "(" & nd.DataRow("订单数") & ")"
End Select
Next

trv
.Nodes.Insert("显示所有行","显示所有行(" & dt.Compute("Sum(订单数)") & "条)",0)
trv
.ResumeRedraw


--  作者:有点甜
--  发布时间:2014/6/9 14:57:00
--  

 做一个内部函数,参考2楼,贴入代码,即可。

 

Dim dt As DataTable
Dim b As New GroupTableBuilder("统计表1",DataTables("订单"))
b.Groups.AddDef("日期",DateGroupEnum.Year,"年")
b.Groups.AddDef("日期",DateGroupEnum.Month,"月")
b.Groups.AddDef("产品")
b.Totals.AddDef("客户",AggregateEnum.Count,"订单数")

dt = b.Build(False)
Dim trv As WinForm.TreeView = Forms("窗口xxx").Controls("TreeView1")
trv.BuildTree(dt, "年|月|产品")
trv.StopRedraw
For Each nd As WinForm.TreeNode In trv.AllNodes
    Dim Year As Integer = nd.DataRow("年")
    Dim Month As Integer = nd.DataRow("月")
    Dim Product As String = nd.DataRow("产品")
    Select Case nd.Level
        Case 0
            nd.Text = nd.text & "年(" & dt.Compute("Sum(订单数)","年 = " & Year) & "条)"
        Case 1
            nd.Text = nd.text & "月(" & dt.Compute("Sum(订单数)","年 = " & Year & " And 月 = " & Month) & "条)"
        Case 2
            nd.Text = nd.text & "(" & nd.DataRow("订单数") & "条)"
    End Select
Next
trv.Nodes.Insert("显示所有行","显示所有行(" & dt.Compute("Sum(订单数)") & "条)",0)
trv.ResumeRedraw


--  作者:wh420
--  发布时间:2014/6/9 15:50:00
--  

非常感谢,会了。