Foxtable(狐表)用户栏目专家坐堂 → 从“级码”中提取“单位编码”


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

主题:从“级码”中提取“单位编码”

帅哥,在线噢!
jhxb8821
  31楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:三尾狐 帖子:707 积分:5039 威望:0 精华:0 注册:2016/4/15 22:24:00
  发帖心情 Post By:2023/7/22 18:17:00 [只看该作者]

老师,编码可能是2位,也可能4位,6位,8位,10位,或者12位,不固定。

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


加好友 发短信
等级:超级版主 帖子:107864 积分:548683 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2023/7/24 8:51:00 [只看该作者]

有没有什么固定的规则?如果没有,随意的位数没有办法处理

 回到顶部
帅哥,在线噢!
jhxb8821
  33楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:三尾狐 帖子:707 积分:5039 威望:0 精华:0 注册:2016/4/15 22:24:00
  发帖心情 Post By:2023/7/27 15:19:00 [只看该作者]

蓝老师,帮助里有“带查找功能的下拉目录树”代码,能不能实现使用首拼进行查找?


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


加好友 发短信
等级:超级版主 帖子:107864 积分:548683 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2023/7/27 15:29:00 [只看该作者]

可以的,在遍历的时候把字符转换为拼音(http://www.foxtable.com/webhelp/topics/3279.htm),再比较即可

 回到顶部
帅哥,在线噢!
jhxb8821
  35楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:三尾狐 帖子:707 积分:5039 威望:0 精华:0 注册:2016/4/15 22:24:00
  发帖心情 Post By:2023/7/27 15:35:00 [只看该作者]

好,我试试

 回到顶部
帅哥,在线噢!
jhxb8821
  36楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:三尾狐 帖子:707 积分:5039 威望:0 精华:0 注册:2016/4/15 22:24:00
  发帖心情 Post By:2023/7/27 16:07:00 [只看该作者]

Button控件的Click事件代码设置为:

Dim txt As String = e.Form.DropDownBox.Text
If
txt = "" Then '
如果下拉框没有输入内容,则无需查询
    Return
End
If
Dim
trv As WinForm.TreeViewe.Form.Controls("TreeView1")
Dim
Start As Integer
Dim
idx As Integer = - 1
If
trv.SelectedNode IsNot Nothing Then '
获取当前节点位置.
    Dim FullName As String = trv.SelectedNode.FullName
    For i As Integer = 0 To trv.AllNodes.count - 1
        If trv.AllNodes(i).FullName = FullName  Then
            Start = i
            Exit For
        End If
    Next
End
If
For
i As Integer = Start + 1 To trv.AllNodes.count - 1  '
从当前节点的下一个节点开始查找
    Dim nd As WinForm.TreeNode = trv.AllNodes(i)
    If nd.Text.IndexOf(txt) >= 0 Then
        trv.SelectedNode = nd
        nd.EnsureVisible
        idx = i '
将找到的位置复制给变量idx
        Exit For
    End If
Next
If
  idx = -1 Then 'idx
的值如果等于初始值-1,表示没有找到下一个符合条件的节点,那么从第一个节点开始重新查找.
    For i As Integer = 0 To Start - 1
        Dim nd As WinForm.TreeNode = trv.AllNodes(i)
        If nd.Text.IndexOf(txt) >= 0 Then
            trv.SelectedNode = nd
            nd.EnsureVisible
            Exit For
        End If
    Next
End
If
trv
.Select()

DropDownBoxTextChanged事件代码设置为:

Dim drp As WinForm.DropDownBox = e.sender
If
drp.DroppedDown Then '
如果下拉窗口已经打开
    Dim trv As WinForm.TreeView = Forms("
窗口1").Controls("TreeView1")
    If drp.Text > "" Then '
如果内容不为空
        For Each nd As WinForm.TreeNode In trv.AllNodes
            If nd.Text.IndexOf(drp.Text) >= 0 Then
                trv.StopRedraw()
                trv.SelectedNode = nd
                nd.EnsureVisible()
                trv.ResumeRedraw()
                Exit For
            End If
        Next
    End If
End
If

应该在这两处进行修改来实现首拼查找,看了半天却弄不明白,不知道怎么修改,请老师修改一下


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


加好友 发短信
等级:超级版主 帖子:107864 积分:548683 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2023/7/27 16:18:00 [只看该作者]

能看的出来是哪几句代码在判断节点名称的吗

 回到顶部
帅哥,在线噢!
jhxb8821
  38楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:三尾狐 帖子:707 积分:5039 威望:0 精华:0 注册:2016/4/15 22:24:00
  发帖心情 Post By:2023/7/27 16:29:00 [只看该作者]

Button控件的Click事件代码设置为:

Dim txt As String = e.Form.DropDownBox.Text
If
 txt = "" Then '
如果下拉框没有输入内容,则无需查询
    Return
End
 If
Dim
 trv As WinForm.TreeView =  e.Form.Controls("TreeView1")
Dim
 Start As Integer
Dim
 idx As Integer = - 1
If
 trv.SelectedNode IsNot Nothing Then '
获取当前节点位置.
    Dim FullName As String = trv.SelectedNode.FullName
    For i As Integer = 0 To trv.AllNodes.count - 1
        If trv.AllNodes(i).FullName = FullName  Then
            Start = i
            Exit For
        End If
    Next
End
 If
For
 i As Integer = Start + 1 To trv.AllNodes.count - 1  '
从当前节点的下一个节点开始查找
    Dim nd As WinForm.TreeNode = trv.AllNodes(i)
    If nd.Text.IndexOf(txt) >= 0 Then
        trv.SelectedNode = nd
        nd.EnsureVisible
        idx = i '
将找到的位置复制给变量idx
        Exit For
    End If
Next
If
  idx = -1 Then 'idx
的值如果等于初始值-1,表示没有找到下一个符合条件的节点,那么从第一个节点开始重新查找.

    For i As Integer = 0 To Start - 1
        Dim nd As WinForm.TreeNode = trv.AllNodes(i)
        If nd.Text.IndexOf(txt) >= 0 Then
            trv.SelectedNode = nd
            nd.EnsureVisible
            Exit For
        End If
    Next
End
 If

trv
.Select()

DropDownBoxTextChanged事件代码设置为:

Dim drp As WinForm.DropDownBox = e.sender
If
 drp.DroppedDown Then '
如果下拉窗口已经打开
    Dim trv As WinForm.TreeView = Forms("
窗口1").Controls("TreeView1")
    If drp.Text > "" Then '
如果内容不为空
        For Each nd As WinForm.TreeNode In trv.AllNodes
            If nd.Text.IndexOf(drp.Text) >= 0 Then
                trv.StopRedraw()
                trv.SelectedNode = nd
                nd.EnsureVisible()
                trv.ResumeRedraw()
                Exit For
            End If
        Next

    End If
End
 If

红色代码这里面吧


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


加好友 发短信
等级:超级版主 帖子:107864 积分:548683 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2023/7/27 17:04:00 [只看该作者]

只有4行代码是判断名称用的,能找到吗?比如

If trv.AllNodes(i).FullName = FullName  Then

把这些代码改为判断拼音
[此贴子已经被作者于2023/7/27 17:04:22编辑过]

 回到顶部
帅哥,在线噢!
jhxb8821
  40楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:三尾狐 帖子:707 积分:5039 威望:0 精华:0 注册:2016/4/15 22:24:00
  发帖心情 Post By:2023/7/27 17:19:00 [只看该作者]

Button控件的Click事件代码设置为:

Dim txt As String = e.Form.DropDownBox.Text
If
txt = "" Then '
如果下拉框没有输入内容,则无需查询
    Return
End
If
Dim
trv As WinForm.TreeViewe.Form.Controls("TreeView1")
Dim
Start As Integer
Dim
idx As Integer = - 1
If
trv.SelectedNode IsNot Nothing Then '
获取当前节点位置.
   Dim
GetNamePY As String = trv.SelectedNode. GetNamePY
    For i As Integer = 0 To trv.AllNodes.count - 1
        If trv.AllNodes(i).FullName =
GetNamePY  Then
            Start = i
            Exit For
        End If
    Next
End
If
For
i As Integer = Start + 1 To trv.AllNodes.count - 1  '
从当前节点的下一个节点开始查找
    Dim nd As WinForm.TreeNode = trv.AllNodes(i)
    If nd.Text.IndexOf(txt) >= 0 Then
        trv.SelectedNode = nd
        nd.EnsureVisible
        idx = i '
将找到的位置复制给变量idx
        Exit For
    End If
Next
If
  idx = -1 Then 'idx
的值如果等于初始值-1,表示没有找到下一个符合条件的节点,那么从第一个节点开始重新查找.
    For i As Integer = 0 To Start - 1
        Dim nd As WinForm.TreeNode = trv.AllNodes(i)
        If nd.Text.IndexOf(txt) >= 0 Then
            trv.SelectedNode = nd
            nd.EnsureVisible
            Exit For
        End If
    Next
End
If
trv
.Select()

DropDownBoxTextChanged事件代码设置为:

Dim drp As WinForm.DropDownBox = e.sender
If
drp.DroppedDown Then '
如果下拉窗口已经打开
    Dim trv As WinForm.TreeView = Forms("
窗口1").Controls("TreeView1")
    If drp.Text > "" Then '
如果内容不为空
        For Each nd As WinForm.TreeNode In trv.AllNodes
            If nd.Text.IndexOf(drp.Text) >= 0 Then
                trv.StopRedraw()
                trv.SelectedNode = nd
                nd.EnsureVisible()
                trv.ResumeRedraw()
                Exit For
            End If
        Next
    End If
End
If

蓝老师,这样改行吗?哪里还要改?


 回到顶部
总数 64 上一页 1 2 3 4 5 6 7 下一页