以文本方式查看主题

-  Foxtable(狐表)  (http://www.foxtable.com/bbs/index.asp)
--  专家坐堂  (http://www.foxtable.com/bbs/list.asp?boardid=2)
----  ValidateEdit  (http://www.foxtable.com/bbs/dispbbs.asp?boardid=2&id=129277)

--  作者:lfz123
--  发布时间:2018/12/25 16:50:00
--  ValidateEdit
我在表事件的ValidateEdit写了如下代码:想实现如果输入的内容不包括在会计科目里面就取消输入呢
If e.Table.name = "凭证.凭证明细" Then
    If e.Col.name = "会计科目_一级科目" Then
        If e.Col.DroppedDown Then
            Dim trv As WinForm.TreeView = Forms("会计科目下拉").Controls("TreeView1")
            If e.Text > "" Then \'如果内容不为空
                For Each nd As WinForm.TreeNode In trv.AllNodes
                    If nd.FullPath.Contains(e.Text)  Then
                        Return
                    Else
                        e.cancel  = True \'取消
                    End If
                Next
            End If
        End If
    End If
End If

--  作者:有点蓝
--  发布时间:2018/12/25 17:14:00
--  
If e.Table.name = "凭证.凭证明细" Then
    If e.Col.name = "会计科目_一级科目" Then
        If e.Col.DroppedDown Then
            Dim trv As WinForm.TreeView = Forms("会计科目下拉").Controls("TreeView1")
            If e.Text > "" Then \'如果内容不为空
                For Each nd As WinForm.TreeNode In trv.AllNodes
                    If nd.FullPath.Contains(e.Text)  Then
                        Return
                    End If
                Next
                e.cancel  = True \'取消
            End If
        End If
    End If
End If

--  作者:lfz123
--  发布时间:2018/12/26 10:39:00
--  回复:(有点蓝)If e.Table.name = "凭证.凭证明细" ...
好像还是实现不了呢!


--  作者:有点蓝
--  发布时间:2018/12/26 10:46:00
--  
上传具体实例测试
--  作者:lfz123
--  发布时间:2018/12/26 10:59:00
--  回复:(有点蓝)If e.Table.name = "凭证.凭证明细" ...
我重新在帮助文件里面做了一个示例,不过不是下拉目录树,是下拉表,麻烦您在帮我看下呗!
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:自定义录入界面之三.foxdb



--  作者:有点蓝
--  发布时间:2018/12/26 11:11:00
--  
这个事件触发的时候,下拉已经关闭,无法从下拉里取值。直接从表格里查吧

If e.Table.name = "订单" Then
    If e.Col.name = "客户ID" Then
        If e.Text > "" Then \'如果内容不为空
            Dim dr As DataRow = DataTables("客户").Find("客户ID=\'" & e.Text & "\'")
            If dr Is Nothing Then
                e.cancel  = True \'取消
                MessageBox.Show("请输入有效客户ID")
            End If
        End If
    End If
End If

--  作者:lfz123
--  发布时间:2018/12/26 11:25:00
--  回复:(有点蓝)这个事件触发的时候,下拉已经关闭,...
我把这段代码屏蔽掉
\'If e.Col.DroppedDown Then \'如果下拉窗口已经打开
    \'e.Col.CloseDropDown() \'则关闭下拉窗口
\'End If
还是不行,您说的就是这个事件触发时下拉窗口已经关闭,和关闭下来的代码是没有关系的,所以不能执行,是这样理解吗?

--  作者:lfz123
--  发布时间:2018/12/26 11:28:00
--  回复:(lfz123)回复:(有点蓝)这个事件触发的时候...
按照您的方法可以了,自己在仔细体会下,这个方法很有用,我在用这个思路试着解决下下拉目录树的输入问题,感恩您!