⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 bldtree.frm

📁 远程访问sql server 的源码
💻 FRM
字号:
VERSION 5.00
Object = "{6B7E6392-850A-101B-AFC0-4210102A8DA7}#1.3#0"; "COMCTL32.OCX"
Begin VB.Form Form1 
   Caption         =   "Form1"
   ClientHeight    =   5400
   ClientLeft      =   2475
   ClientTop       =   1710
   ClientWidth     =   7455
   LinkTopic       =   "Form1"
   PaletteMode     =   1  'UseZOrder
   ScaleHeight     =   5400
   ScaleWidth      =   7455
   Begin VB.Frame Frame2 
      Height          =   735
      Left            =   4800
      TabIndex        =   8
      Top             =   3480
      Width           =   2535
      Begin VB.CommandButton cmdClear 
         Caption         =   "Clear Treeview"
         Height          =   375
         Left            =   240
         TabIndex        =   9
         Top             =   240
         Width           =   2055
      End
   End
   Begin VB.CommandButton cmdClose 
      Caption         =   "Close"
      Height          =   375
      Left            =   5040
      TabIndex        =   2
      Top             =   4320
      Width           =   2055
   End
   Begin VB.Frame Frame1 
      Height          =   3375
      Left            =   4800
      TabIndex        =   1
      Top             =   120
      Width           =   2535
      Begin VB.CommandButton cmdRemove 
         Caption         =   "Remove Node"
         Height          =   375
         Left            =   240
         TabIndex        =   10
         Top             =   2760
         Width           =   2055
      End
      Begin VB.CommandButton cmdChild 
         Caption         =   "Add Child"
         Height          =   375
         Left            =   240
         TabIndex        =   7
         Top             =   2280
         Width           =   2055
      End
      Begin VB.CommandButton cmdPrevious 
         Caption         =   "Add Previous Sibling"
         Height          =   375
         Left            =   240
         TabIndex        =   6
         Top             =   1800
         Width           =   2055
      End
      Begin VB.CommandButton cmdNext 
         Caption         =   "Add Next Sibling"
         Height          =   375
         Left            =   240
         TabIndex        =   5
         Top             =   1320
         Width           =   2055
      End
      Begin VB.CommandButton cmdLast 
         Caption         =   "Add Last Sibling"
         Height          =   375
         Left            =   240
         TabIndex        =   4
         Top             =   840
         Width           =   2055
      End
      Begin VB.CommandButton cmdFirst 
         Caption         =   "Add First Sibling"
         Height          =   375
         Left            =   240
         TabIndex        =   3
         Top             =   360
         Width           =   2055
      End
   End
   Begin ComctlLib.TreeView TreeView1 
      Height          =   4335
      Left            =   240
      TabIndex        =   0
      Top             =   360
      Width           =   3855
      _ExtentX        =   6800
      _ExtentY        =   7646
      _Version        =   327682
      Style           =   7
      ImageList       =   "ImageList1"
      BorderStyle     =   1
      Appearance      =   1
   End
   Begin ComctlLib.ImageList ImageList1 
      Left            =   4200
      Top             =   120
      _ExtentX        =   1005
      _ExtentY        =   1005
      BackColor       =   -2147483643
      ImageWidth      =   16
      ImageHeight     =   16
      MaskColor       =   12632256
      _Version        =   327682
      BeginProperty Images {0713E8C2-850A-101B-AFC0-4210102A8DA7} 
         NumListImages   =   2
         BeginProperty ListImage1 {0713E8C3-850A-101B-AFC0-4210102A8DA7} 
            Picture         =   "bldtree.frx":0000
            Key             =   ""
         EndProperty
         BeginProperty ListImage2 {0713E8C3-850A-101B-AFC0-4210102A8DA7} 
            Picture         =   "bldtree.frx":031A
            Key             =   ""
         EndProperty
      EndProperty
   End
End
Attribute VB_Name = "Form1"
Attribute VB_GlobalNameSpace = False
Attribute VB_Creatable = False
Attribute VB_PredeclaredId = True
Attribute VB_Exposed = False
'这个例子演示了如何向一个TreeView控件增加、减少结点
'增加结点的方式包括了增加“兄弟姐妹”结点:这种情况也四种增加方式,分别
'是最初、最后、下一个和上一个。也包含了增加子结点的方式
'这样就使用了TreeView控件中的这5种关系。
'另外,该例子也演示例如何通过拖放操作来对结点进行位置上的改变
'拖放操作是比较广泛的一种Windows操作,在本例子之后将对其进行介绍

Option Explicit

Dim mnIndex As Integer  ' 存放一个结点的索引
Dim mbIndrag As Boolean ' 拖放操作的信号标志
Dim moDragNode As Object ' 被拖动的条目

Private Sub cmdChild_Click()
    '用tvwChild方式来增加一个结点
    Dim oNodex As Node
    Dim skey As String
    Dim iIndex As Integer
        
    '如果没有当前选中的结点,则出错。
    '因为必须在增加结点之前指定好位置
    On Error GoTo myerr
    '检测是否选中一个结点,并获取其索引
    iIndex = TreeView1.SelectedItem.Index
    skey = GetNextKey() ' 调用函数,自动为要添加的项生成一个关键词
    Set oNodex = TreeView1.Nodes.Add(iIndex, tvwChild, skey, "Child " & skey, 1, 2)
    oNodex.EnsureVisible '确认新添的结点可见
    Exit Sub
myerr:
    '如果出现错误,则通知用户,先从TreeView中选择一个结点
    MsgBox ("必须先选择一个结点才能添加!" & vbCrLf _
       & "如果TreeView是空的,那么就用Add Last Sibling按钮添加一个结点!")
    Exit Sub
End Sub

Private Sub cmdClear_Click()
    Cls
    TreeView1.Nodes.Clear
End Sub

Private Sub cmdClose_Click()
    Unload Me
End Sub

Private Sub cmdFirst_Click()
    '用关系tvwFirst添加结点
    Dim skey As String
    Dim iIndex As Integer
    
    '如果没有当前选中的结点,则出错。
    '因为必须在增加结点之前指定好位置
    On Error GoTo myerr
    '检测是否选中一个结点,并获取其索引
    iIndex = TreeView1.SelectedItem.Index
    skey = GetNextKey() ' 为新添加的结点生成关键词
    TreeView1.Nodes.Add iIndex, tvwFirst, skey, "First " & skey, 1, 2
    Exit Sub
myerr:
    '如果出现错误,则通知用户,先从TreeView中选择一个结点
    MsgBox ("必须先选择一个结点才能添加!" & vbCrLf _
       & "如果TreeView是空的,那么就用Add Last Sibling按钮添加一个结点!")
    Exit Sub
End Sub

Private Sub cmdLast_Click()
    '用关系tvwLast添加一个结点
    Dim skey As String
    skey = GetNextKey()
    
    '如果没有当前选中的结点,则出错。
    '因为必须在增加结点之前指定好位置
    On Error GoTo myerr
    TreeView1.Nodes.Add TreeView1.SelectedItem.Index, tvwLast, skey, "Last " & skey, 1, 2
    Exit Sub
myerr:
    '如果没有其他被选中的结点,则添加一个Root结点
    TreeView1.Nodes.Add , tvwLast, skey, "Last " & skey, 1, 2
    Exit Sub
End Sub

'*****************************************************************
'功能: 返回一个不会重复的关键词
'输入: 空
'输出:
'  GetNextKey  String
'实现算法很简单,只是在每次添加新结点的时候,对所有结点的数量加1
'由于每个Key是唯一的,因此如果用户可以删除结点,则这个算法不适用
'本例子允许删除结点,不过,还是演示了这种方法
'******************************************************************
Private Function GetNextKey() As String
    Dim sNewKey As String
    Dim iHold As Integer
    Dim i As Integer
    
    On Error GoTo myerr
    '如果TreeView为空,则下行代码将会出错。
    iHold = Val(TreeView1.Nodes(1).Key)
    For i = 1 To TreeView1.Nodes.Count
        If Val(TreeView1.Nodes(i).Key) > iHold Then
            iHold = Val(TreeView1.Nodes(i).Key)
        End If
    Next
    iHold = iHold + 1
    sNewKey = CStr(iHold) & "_"
    GetNextKey = sNewKey
    Exit Function
myerr:
    '如果TreeView为空,则新增的结点为第一个结点,索引为1
    GetNextKey = "1_"
    Exit Function
End Function

Private Sub cmdNext_Click()
    '用tvwNext添加结点
    Dim skey As String
    Dim iIndex As Integer
    
    '如果没有当前选中的结点,则出错。
    '因为必须在增加结点之前指定好位置
    On Error GoTo myerr
    iIndex = TreeView1.SelectedItem.Index
    skey = GetNextKey()
    TreeView1.Nodes.Add iIndex, tvwNext, skey, "Next " & skey, 1, 2
    Exit Sub
myerr:
    '如果出现错误,则通知用户,先从TreeView中选择一个结点
    MsgBox ("必须先选择一个结点才能添加!" & vbCrLf _
       & "如果TreeView是空的,那么就用Add Last Sibling按钮添加一个结点!")
    Exit Sub
End Sub

Private Sub cmdPrevious_Click()
    '用tvwPrevious添加结点
    Dim skey As String
    Dim iIndex As Integer
    
    '如果没有当前选中的结点,则出错。
    '因为必须在增加结点之前指定好位置
    On Error GoTo myerr
    iIndex = TreeView1.SelectedItem.Index
    skey = GetNextKey()
    TreeView1.Nodes.Add iIndex, tvwPrevious, skey, "Previous " & skey, 1, 2
    Exit Sub
myerr:
    '如果出现错误,则通知用户,先从TreeView中选择一个结点
    MsgBox ("必须先选择一个结点才能添加!" & vbCrLf _
       & "如果TreeView是空的,那么就用Add Last Sibling按钮添加一个结点!")
    Exit Sub
End Sub

Private Sub cmdRemove_Click()
    '删除被选结点
    Dim iIndex As Integer
    
    '如果没有当前选中的结点,则出错。
    '因为必须在增加结点之前指定好位置
    On Error GoTo myerr
    iIndex = TreeView1.SelectedItem.Index
    TreeView1.Nodes.Remove iIndex '删除一个结点以及它的所有子结点
    Exit Sub
myerr:
    '如果出现错误,则通知用户,先从TreeView中选择一个结点
    MsgBox ("必须先选择一个结点才能添加!" & vbCrLf _
       & "如果TreeView是空的,那么就用Add Last Sibling按钮添加一个结点!")
    Exit Sub
End Sub

Private Sub Form_Load()
    '预先设置好TreeView,不让其为空
    Set moDragNode = Nothing
    cmdLast_Click
    cmdLast_Click
    TreeView1.Nodes(1).Selected = True
    cmdChild_Click
End Sub

Private Sub TreeView1_DragDrop(Source As Control, x As Single, y As Single)
    '如果用户没有移动鼠标,或目标位置不正确,则不执行拖放
    '并将拖放操作标志设为False
    If TreeView1.DropHighlight Is Nothing Then
        mbIndrag = False
        Exit Sub
    Else
        '将被拖放的结点的父结点属性设置为目的结点
        On Error GoTo checkerror '防止出现循环拖动
        Set moDragNode.Parent = TreeView1.DropHighlight
        '清屏,并在屏幕上打印出一行字,显示拖放后结点的位置关系
        Cls
        Print TreeView1.DropHighlight.Text & _
        " is parent of " & moDragNode.Text
        
        ' 清除用来标志拖放目的地的高亮显示设置
        Set TreeView1.DropHighlight = Nothing
        '拖放结束,将操作标志符设置为False
        mbIndrag = False
        '清除被拖放的结点在源位置的结点
        Set moDragNode = Nothing
        Exit Sub
    End If
 
checkerror:
    Const CircularError = 35614
    If Err.Number = CircularError Then
        Dim msg As String
        msg = "不能将一个父结点拖放变成自身子节点的子结点!"

        If MsgBox(msg, vbExclamation & vbOKCancel) = vbOK Then
            mbIndrag = False
            Set TreeView1.DropHighlight = Nothing
            Exit Sub
        End If
    End If
End Sub

Private Sub TreeView1_DragOver(Source As Control, x As Single, y As Single, State As Integer)
    If mbIndrag = True Then
        '当鼠标移到正确的目的控件上时,高亮显示该控件
        Set TreeView1.DropHighlight = TreeView1.HitTest(x, y)
    End If
End Sub

Private Sub TreeView1_MouseDown(Button As Integer, Shift As Integer, x As Single, y As Single)
    Set TreeView1.DropHighlight = TreeView1.HitTest(x, y)
    
    '确定是在一个结点对象之上
    If Not TreeView1.DropHighlight Is Nothing Then
        '将moDragNode结点设置为将要被选择的结点
        '如果不这样做,那就要直到单击完结点后才选择结点
        TreeView1.SelectedItem = TreeView1.HitTest(x, y)
        Set moDragNode = TreeView1.SelectedItem '设置该结点为要拖动的对象
    End If
    Set TreeView1.DropHighlight = Nothing
End Sub

Private Sub TreeView1_MouseMove(Button As Integer, Shift As Integer, x As Single, y As Single)
    '确定鼠标左键按下状态
    If Button = vbLeftButton Then '标志一个拖动操作
        mbIndrag = True '设置拖放标志为True
        ' 设置拖放时的图标显示情况
        TreeView1.DragIcon = TreeView1.SelectedItem.CreateDragImage
        TreeView1.Drag vbBeginDrag ' 开始拖动操作
    End If
End Sub

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -