Foxtable(狐表)用户栏目专家坐堂 → ValidateEdit


  共有2284人关注过本帖树形打印复制链接

主题:ValidateEdit

美女呀,离线,留言给我吧!
lfz123
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:二尾狐 帖子:530 积分:4613 威望:0 精华:0 注册:2018/3/24 18:04:00
ValidateEdit  发帖心情 Post By:2018/12/25 16:50:00 [只看该作者]

我在表事件的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

 回到顶部
帅哥,在线噢!
有点蓝
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:111414 积分:567140 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By: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
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:二尾狐 帖子:530 积分:4613 威望:0 精华:0 注册:2018/3/24 18:04:00
回复:(有点蓝)If e.Table.name = "凭证.凭证明细" ...  发帖心情 Post By:2018/12/26 10:39:00 [只看该作者]

好像还是实现不了呢!


 回到顶部
帅哥,在线噢!
有点蓝
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:111414 积分:567140 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2018/12/26 10:46:00 [只看该作者]

上传具体实例测试

 回到顶部
美女呀,离线,留言给我吧!
lfz123
  5楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:二尾狐 帖子:530 积分:4613 威望:0 精华:0 注册:2018/3/24 18:04:00
回复:(有点蓝)If e.Table.name = "凭证.凭证明细" ...  发帖心情 Post By:2018/12/26 10:59:00 [只看该作者]

我重新在帮助文件里面做了一个示例,不过不是下拉目录树,是下拉表,麻烦您在帮我看下呗!
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:自定义录入界面之三.foxdb



 回到顶部
帅哥,在线噢!
有点蓝
  6楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:111414 积分:567140 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By: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
  7楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:二尾狐 帖子:530 积分:4613 威望:0 精华:0 注册:2018/3/24 18:04:00
回复:(有点蓝)这个事件触发的时候,下拉已经关闭,...  发帖心情 Post By:2018/12/26 11:25:00 [只看该作者]

我把这段代码屏蔽掉
'If e.Col.DroppedDown Then '如果下拉窗口已经打开
    'e.Col.CloseDropDown() '则关闭下拉窗口
'End If
还是不行,您说的就是这个事件触发时下拉窗口已经关闭,和关闭下来的代码是没有关系的,所以不能执行,是这样理解吗?

 回到顶部
美女呀,离线,留言给我吧!
lfz123
  8楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:二尾狐 帖子:530 积分:4613 威望:0 精华:0 注册:2018/3/24 18:04:00
回复:(lfz123)回复:(有点蓝)这个事件触发的时候...  发帖心情 Post By:2018/12/26 11:28:00 [只看该作者]

按照您的方法可以了,自己在仔细体会下,这个方法很有用,我在用这个思路试着解决下下拉目录树的输入问题,感恩您!

 回到顶部