项目事件
AfterOpenProject
MainTable = Tables("凭证")
Tables("凭证").Cols("会计科目").DropForm = "科目表目录"
窗口与控件事件
科目表目录_DropDownOpened
Dim tr As WinForm.TreeView = e.Form.Controls("TreeView科目表")
Dim nd As WinForm.TreeNode
Dim dt As DataTable = DataTables("科目表")
tr.StopRedraw()
tr.Nodes.Clear
Dim gz As String = "424"
For Each dr As DataRow In dt.Select("","科目代码")
If dr.IsNull("科目代码") = False AndAlso dr("科目代码").Length = val(gz(0)) Then
'nd = tr.Nodes.Add(dr("科目代码"),dr("科目代码") & " " & dr("科目名称"))
nd = tr.Nodes.Add(dr("科目代码"),dr("科目代码") & dr("科目名称"))
Functions.Execute("AddChildren",nd,dt,gz,1)
End If
Next
tr.ResumeRedraw()
科目表目录_TreeView科目表_NodeMouseClick
Dim dr As DataRow = DataTables("科目表").find("科目代码='" & e.Node.name & "'") '获取生成此节点的DataRow
If dr IsNot Nothing Then
e.Form.DropDownBox.Value = dr("科目代码") '这行不是多余的,省略此行,无法在表中正常使用此下拉窗口输入数据.
e.Form.DropDownBox.CloseDropdown()
Tables("凭证").Current("科目名称") = dr("科目名称")
Tables("凭证").Current("第四列") = e.Node.FullPath '输出2列
End If
自定义函数
AddChildren
Dim nd As WinForm.TreeNode = args(0)
Dim dt As DataTable = args(1)
Dim gz As String = args(2)
Dim idx As Integer = args(3)
If idx < gz.Length Then
For Each dr As DataRow In dt.Select("","科目代码") '按代码顺序添加
Dim km As String = dr("科目代码")
If km.StartsWith(nd.name) AndAlso km.Length = nd.Name.Length + val(gz(idx)) Then
Dim sum As Integer = 0
For i As Integer = 0 To gz.Length - 1
sum += val(gz(i))
If km.Length = sum Then
'Dim cd As Winform.TreeNode = nd.Nodes.Add(km,km & " " & dr("科目名称"))
Dim cd As Winform.TreeNode = nd.Nodes.Add(km,km & dr("科目名称"))
Functions.Execute("AddChildren",cd,dt,gz,idx+1)
Exit For
End If
Next
End If
Next
End If