我编辑的程序中将地域信息用“字母”+“数字”表示,全球地域为a,洲为b,国家为c,省为d,市县为e,数字为地域的编号。如湖南是省,如果它的地域编号为5,则它在TreeView控件中对应的关键字为d5。
'AreaLevel表示限定选择地域的级别
'0-表示无限制
'1-表示选择洲
'2-表示选择国家
'3-表示选择省
'4-表示选择市/县
'5-表示可以选择国家、省、市/县
Private Sub TreeView1_DblClick()
Dim TmpStr As String
If AreaLevel > 0 And AreaLevel < 5 And AreaLevel <> MyArea.AreaType Then
Select Case AreaLevel
Case 1
TmpStr = "洲"
Case 2
TmpStr = "国家"
Case 3
TmpStr = "省"
Case 4
TmpStr = "市/县"
End Select
MsgBox "请选择 " + TmpStr
Exit Sub
Else
If AreaLevel = 5 Then '选择国家、省、市/县
If MyArea.AreaType < 2 Or MyArea.AreaType > 4 Then
MsgBox "请选择 国家、省、市或县"
Exit Sub
End If
End If
If AreaLevel = 6 Then '选择省、市/县
If MyArea.AreaType < 3 Or MyArea.AreaType > 4 Then
MsgBox "请选择 省、市或县"
Exit Sub
End If
End If
End If
CurArea.AreaId = MyArea.AreaId
CurArea.AreaName = MyArea.AreaName
CurArea.AreaType = MyArea.AreaType
ClickOK = True
Unload Me
End Sub
但我在模块中自定义了过程Add_AreaToTree()
代码:
Public Sub Add_AreaToTree(TreeView1 As TreeView)
Dim Id As Long
Dim TmpNode As Node
Dim CurKey, UpperKey As String
'读取地域数据
MyArea.Load_Area
i = 0
Do While Arr_AreaName(i) <> ""
'生成地域对应的键,格式为“字母”+“数字”
'字母为:全球地域为a,洲为b,国家为c,省为d,等等
'数字为:地域的编号
CurKey = Chr(Asc("a") + Arr_AreaType(i))
CurKey = CurKey + Trim(Str(Arr_AreaId(i)))
'找到上一级节点
UpperKey = ""
If Arr_AreaUpper(i) = 0 Then
UpperKey = "a0"
Else
j = 0
Do While Arr_AreaName(j) <> ""
If Arr_AreaId(j) = Arr_AreaUpper(i) Then
UpperKey = Chr(Asc("a") + Arr_AreaType(j))
UpperKey = UpperKey + Trim(Str(Arr_AreaId(j)))
End If
j = j + 1
Loop
End If
'如果找到上一级地域,则将当地域添加到TreeView的相应位置
If UpperKey <> "" Then
If MyArea.HaveSon(Arr_AreaId(i)) = True Then
Set TmpNode = TreeView1.Nodes.Add(UpperKey, _
tvwChild, CurKey, Arr_AreaName(i), 1, 3)
TmpNode.ExpandedImage = 2
Else
Set TmpNode = TreeView1.Nodes.Add(UpperKey, _
tvwChild, CurKey, Arr_AreaName(i), 4, 5)
End If
If FocusAreaName <> "" And Arr_AreaName(i) = FocusAreaName Then
TmpNode.Selected = True
FocusKey = CurKey
End If
If FocusAreaId > 0 And Arr_AreaId(i) = FocusAreaId Then
TmpNode.Selected = True
FocusKey = CurKey
End If
If FocusKey <> "" And CurKey = FocusKey Then
TmpNode.Selected = True
End If
End If
i = i + 1
Loop
End Sub
可程序运行时我双击TreeView时,提示“请选择省、市或县”。
如果谁看了有觉得缺少代码提供,我这边可提供,谢谢!
'AreaLevel表示限定选择地域的级别
'0-表示无限制
'1-表示选择洲
'2-表示选择国家
'3-表示选择省
'4-表示选择市/县
'5-表示可以选择国家、省、市/县
Private Sub TreeView1_DblClick()
Dim TmpStr As String
If AreaLevel > 0 And AreaLevel < 5 And AreaLevel <> MyArea.AreaType Then
Select Case AreaLevel
Case 1
TmpStr = "洲"
Case 2
TmpStr = "国家"
Case 3
TmpStr = "省"
Case 4
TmpStr = "市/县"
End Select
MsgBox "请选择 " + TmpStr
Exit Sub
Else
If AreaLevel = 5 Then '选择国家、省、市/县
If MyArea.AreaType < 2 Or MyArea.AreaType > 4 Then
MsgBox "请选择 国家、省、市或县"
Exit Sub
End If
End If
If AreaLevel = 6 Then '选择省、市/县
If MyArea.AreaType < 3 Or MyArea.AreaType > 4 Then
MsgBox "请选择 省、市或县"
Exit Sub
End If
End If
End If
CurArea.AreaId = MyArea.AreaId
CurArea.AreaName = MyArea.AreaName
CurArea.AreaType = MyArea.AreaType
ClickOK = True
Unload Me
End Sub
但我在模块中自定义了过程Add_AreaToTree()
代码:
Public Sub Add_AreaToTree(TreeView1 As TreeView)
Dim Id As Long
Dim TmpNode As Node
Dim CurKey, UpperKey As String
'读取地域数据
MyArea.Load_Area
i = 0
Do While Arr_AreaName(i) <> ""
'生成地域对应的键,格式为“字母”+“数字”
'字母为:全球地域为a,洲为b,国家为c,省为d,等等
'数字为:地域的编号
CurKey = Chr(Asc("a") + Arr_AreaType(i))
CurKey = CurKey + Trim(Str(Arr_AreaId(i)))
'找到上一级节点
UpperKey = ""
If Arr_AreaUpper(i) = 0 Then
UpperKey = "a0"
Else
j = 0
Do While Arr_AreaName(j) <> ""
If Arr_AreaId(j) = Arr_AreaUpper(i) Then
UpperKey = Chr(Asc("a") + Arr_AreaType(j))
UpperKey = UpperKey + Trim(Str(Arr_AreaId(j)))
End If
j = j + 1
Loop
End If
'如果找到上一级地域,则将当地域添加到TreeView的相应位置
If UpperKey <> "" Then
If MyArea.HaveSon(Arr_AreaId(i)) = True Then
Set TmpNode = TreeView1.Nodes.Add(UpperKey, _
tvwChild, CurKey, Arr_AreaName(i), 1, 3)
TmpNode.ExpandedImage = 2
Else
Set TmpNode = TreeView1.Nodes.Add(UpperKey, _
tvwChild, CurKey, Arr_AreaName(i), 4, 5)
End If
If FocusAreaName <> "" And Arr_AreaName(i) = FocusAreaName Then
TmpNode.Selected = True
FocusKey = CurKey
End If
If FocusAreaId > 0 And Arr_AreaId(i) = FocusAreaId Then
TmpNode.Selected = True
FocusKey = CurKey
End If
If FocusKey <> "" And CurKey = FocusKey Then
TmpNode.Selected = True
End If
End If
i = i + 1
Loop
End Sub
可程序运行时我双击TreeView时,提示“请选择省、市或县”。
如果谁看了有觉得缺少代码提供,我这边可提供,谢谢!
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货