*请问怎样用TreeView控件可以像Foxmail一样给节点更名?

sundna 2001-08-31 10:16:58

更名或新增加一个节点时那个TEXT输入框是怎样搞出来的?
...全文
120 7 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
dzbswl 2001-08-31
  • 打赏
  • 举报
回复
学习学习,收藏起来
一川烟草123 2001-08-31
  • 打赏
  • 举报
回复
tv.Nodes.Add strkey, tvwChild, pdno, "New Group"
tv.Nodes(pdno).Selected = True
tv.StartLabelEdit
playyuer 2001-08-31
  • 打赏
  • 举报
回复
'实现
'1.从 Listview 拖拽 Item 加到 Treeview 的 Node
'2.添加 Treeview 节点时,可自动滚动
'3.编辑节点的 Text
'Objects:
'Form1、Treeview1、Listview1、Timer1、Command1
Option Explicit
Private Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) As Long
Private Const WM_VSCROLL = &H115
Private Const WM_HSCROLL = &H114
Dim bIsLvwItemDblClick As Boolean
Dim bIsTvwNodeDblClick As Boolean
Dim mfX As Single
Dim mfY As Single
Private Enum ScrollDirection
VScrollBarUp = 0
HScrollBarRight = 1
VScrollBarDown = 2
HScrollBarLeft = 3
End Enum
Dim sdX As ScrollDirection
Private Sub Command1_Click()
Dim Nodex As MSComctlLib.Node
If TreeView1.SelectedItem Is Nothing Then
Set Nodex = TreeView1.Nodes.Add(, , GetNextKey(), "")
Else
Set Nodex = TreeView1.Nodes.Add(TreeView1.SelectedItem, tvwChild, GetNextKey() & ListView1.SelectedItem.Text, ListView1.SelectedItem.Text)

End If
Nodex.Selected = True
'TreeView1.SelectedItem.Expanded = True

TreeView1.StartLabelEdit


End Sub

Private Sub Form_DragOver(Source As Control, x As Single, y As Single, State As Integer)
If Source Is TreeView1 Then
Timer1.Enabled = False
End If
End Sub
Private Sub Form_Load()
Dim i As Integer
Timer1.Enabled = False
Timer1.Interval = 200
TreeView1.Style = tvwTreelinesPlusMinusPictureText
For i = 1 To 50
TreeView1.Nodes.Add , , GetNextKey, "Node " & i
Next i
TreeView1.HideSelection = False

TreeView1.LabelEdit = tvwManual

ListView1.ListItems.Add , , "cc"
ListView1.ListItems.Add , , "dd"

ListView1.OLEDragMode = ccOLEDragAutomatic
ListView1.LabelEdit = lvwManual
ListView1.HideSelection = False
End Sub
Private Sub ListView1_DblClick()
If bIsLvwItemDblClick Then
MsgBox ListView1.SelectedItem.Text
End If
End Sub
Private Sub ListView1_MouseMove(Button As Integer, Shift As Integer, x As Single, y As Single)
If Button = vbLeftButton Then
ListView1.DragIcon = ListView1.SelectedItem.CreateDragImage
ListView1.Drag vbBeginDrag
Else
If ListView1.HitTest(x, y) Is ListView1.SelectedItem Then
bIsLvwItemDblClick = True
Else
bIsLvwItemDblClick = False
End If
End If
End Sub

Private Sub TreeView1_AfterLabelEdit(Cancel As Integer, NewString As String)
If VBA.Len(NewString) <= 0 Then
MsgBox "error"
TreeView1.StartLabelEdit
Cancel = 1

End If
End Sub

Private Sub TreeView1_DblClick()
If bIsTvwNodeDblClick Then
MsgBox TreeView1.SelectedItem.Text
End If
End Sub
Private Sub TreeView1_DragDrop(Source As Control, x As Single, y As Single)
If Not TreeView1.DropHighlight Is Nothing Then
Dim Nodex As MSComctlLib.Node
Set Nodex = TreeView1.Nodes.Add(TreeView1.DropHighlight.Key, tvwChild, GetNextKey() & ListView1.SelectedItem.Text, ListView1.SelectedItem.Text)
TreeView1.DropHighlight.Expanded = True
Nodex.Selected = True
TreeView1.StartLabelEdit
End If
Timer1.Enabled = False
End Sub
Private Sub TreeView1_DragOver(Source As Control, x As Single, y As Single, State As Integer)
Set TreeView1.DropHighlight = TreeView1.HitTest(x, y)
mfX = x
mfY = y
If y > 0 And y < 100 Then
sdX = VScrollBarUp
Timer1.Enabled = True
ElseIf y > (TreeView1.Height - 400) And y < TreeView1.Height Then
sdX = VScrollBarDown
Timer1.Enabled = True
ElseIf x > 0 And x < 100 Then
sdX = HScrollBarLeft
Timer1.Enabled = True
ElseIf x > (TreeView1.Width - 400) And x < TreeView1.Width Then
sdX = HScrollBarRight
Timer1.Enabled = True
Else
Timer1.Enabled = False
End If
End Sub
Private Sub TreeView1_MouseMove(Button As Integer, Shift As Integer, x As Single, y As Single)
If TreeView1.HitTest(x, y) Is TreeView1.SelectedItem Then
bIsTvwNodeDblClick = True
Else
bIsTvwNodeDblClick = False
End If
End Sub
Private Sub Timer1_Timer()
Set TreeView1.DropHighlight = TreeView1.HitTest(mfX, mfY)
Select Case sdX
Case VScrollBarUp
SendMessage TreeView1.hwnd, WM_VSCROLL, 0, vbNull
Case VScrollBarDown
SendMessage TreeView1.hwnd, WM_VSCROLL, 1, vbNull
Case HScrollBarLeft
SendMessage TreeView1.hwnd, WM_HSCROLL, 0, vbNull
Case HScrollBarRight
SendMessage TreeView1.hwnd, WM_HSCROLL, 1, vbNull
End Select
End Sub
Private Sub TreeView1_MouseUp(Button As Integer, Shift As Integer, x As Single, y As Single)
Timer1.Enabled = False
End Sub
Private Sub TreeView1_MouseDown(Button As Integer, Shift As Integer, x As Single, y As Single)
TreeView1.DropHighlight = TreeView1.HitTest(x, y)
If Not TreeView1.DropHighlight Is Nothing Then
TreeView1.SelectedItem = TreeView1.HitTest(x, y)
End If
Set TreeView1.DropHighlight = Nothing
End Sub
Private Function GetNextKey() As String
Dim sNewKey As String
Dim iHold As Integer
Dim i As Integer
On Error GoTo myerr
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:
GetNextKey = "1_"
End Function
sundna 2001-08-31
  • 打赏
  • 举报
回复
这60分我可是很想给出去呀!
sundna 2001-08-31
  • 打赏
  • 举报
回复

没人会吗?哎~~~~
dzbswl 2001-08-31
  • 打赏
  • 举报
回复
gz
sundna 2001-08-31
  • 打赏
  • 举报
回复
谢谢各位, 我先去研究一下,等搞定了就给大家加分!呵呵~~~

1,453

社区成员

发帖
与我相关
我的任务
社区描述
VB 控件
社区管理员
  • 控件
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧