imagelist作为参数传递问题??代码在里面!!!

l634youngpig 2002-05-13 03:39:38
程序的思路是sql后充值,主要是用imagelist作为参数传递是
为treeviw加入图像,而且又不能放入模块外,
vb总是显示imaglist没有初始化,msdn翻遍了都找不到具体的
解释,具体如何,动态建imaglist又如何,请给出指点,
最好有代码.
Public Sub M_treeviewload(ByVal XFieldName As String, Byval XTreeView As Object, Byval imagelist As ImageList) '树型控件初始化
..............

XTreeView.Nodes.Clear
XTreeView.Style = tvwTreelinesPlusMinusText ' Style 6.
XTreeView.LineStyle = tvwRootLines 'Linestyle 1.
Set nodx = XTreeView.Nodes.Add(.........)
With nodx ' Add first node.
.Image = "root"
End With
或者是Set nodx = XTreeView.Nodes.Add(.........,imageindex)
我现在的form1里已经放好了treeview,imagelist1,.....
这个模块已经调试过了,没问题,但加入imagelist,只要有了这方面的
操作就会编译不通过,why???
总不行,
End Sub
是不是imagelist不能作为动态参数传递??
我可以给300分绝不失言
...全文
118 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
l634youngpig 2002-05-14
  • 打赏
  • 举报
回复
我是放在全局mod里,imagelist1 我也加了图片了,why
具体代码是:
Public Sub M_treeviewload(ByVal XFieldName As String, ByVal XTreeView As Object,imagelist1 as Imaglist) '树型控件初始化
Dim rs As New ADODB.Recordset
Dim i, j As Integer
Dim bd1count As Integer '第一代子节点个数
Dim bd1Array() As String '第一代子节点名称
Dim bd1Arraystring() As String '第一代子节点内容

XTreeView.Nodes.Clear
XTreeView.Style = tvwTreelinesPlusMinusText ' Style 6.
XTreeView.LineStyle = tvwRootLines 'Linestyle 1.
XTreeView.ImageList=imageList1
'第一代子节点产生
rs.CursorLocation = adUseClient
rs.Open "select distinct[" & XFieldName & "] from 测点信息", cn
rs.MoveFirst
bd1count = rs.RecordCount
ReDim bd1Array(0 To rs.RecordCount - 1) As String
ReDim bd1Arraystring(0 To rs.RecordCount - 1) As String
For i = 0 To rs.RecordCount - 1
bd1Array(i) = "b" & i
'Debug.Print bd1Array(i)
bd1Arraystring(i) = rs.Fields(0)
'Debug.Print bd1Arraystring(i)
Set nodX = XTreeView.Nodes.Add(, , bd1Array(i), bd1Arraystring(i))
rs.MoveNext
Next i
rs.ActiveConnection = Nothing
rs.Close

'第二代子节点产生
Dim bd2Array() As String '第二代子节点名称
For i = 0 To bd1count - 1
rs.CursorLocation = adUseClient
rs.Open "select 测点编号 from 测点信息 where [" & XFieldName & "]='" & bd1Arraystring(i) & "'", cn
ReDim bd2Array(0 To rs.RecordCount - 1) As String
For j = 0 To rs.RecordCount - 1
bd2Array(j) = "bd" & i * 10 & j
Set nodX = XTreeView.Nodes.Add(bd1Array(i), tvwChild, bd2Array(j), rs.Fields(0),1) ....错误,why,
' Debug.Print bd2Array(j)
rs.MoveNext
Next j
rs.ActiveConnection = Nothing '关闭数据集连接
rs.Close
' nodX.EnsureVisible '显示全部节点。
Next i
End Sub
Public Sub MC_TabStripClick(ByVal XTabStrip As Object, ByVal XTreeView1 As Object, ByVal XTreeView2 As Object, ByVal XTreeView3 As Object) 'XTabStrip初始化
Select Case XTabStrip.SelectedItem.Index
Case 1
XTreeView1.Visible = True
XTreeView2.Visible = False
XTreeView3.Visible = False
Case 2
XTreeView2.Visible = True
XTreeView1.Visible = False
XTreeView3.Visible = False
Case 3
XTreeView3.Visible = True
XTreeView1.Visible = False
XTreeView2.Visible = False
End Select
End Sub
Public Sub MC_TreeViewDblClick(ByVal XList As Object, ByVal XTreeView As Object) '
Dim i As Integer
Dim bd As Boolean
If XTreeView.SelectedItem.Children = False Then
For i = 0 To XList.ListCount
If XTreeView.SelectedItem.Text <> XList.List(i) Then
bd = True
Else
MsgBox "不允许加入相同的节点", , "警告!"
Exit Sub
End If
Next i
If bd = True Then XList.AddItem XTreeView.SelectedItem.Text
Else
Exit Sub
End If
End Sub
而且好象imagelist 不是一个对象..我想提供imgelist.add好像不支持.
再次谢谢大家我一定会给分的...
l634youngpig 2002-05-14
  • 打赏
  • 举报
回复
我是放在全mod里,imagelist1
gump2000 2002-05-13
  • 打赏
  • 举报
回复
把两个byval全部去掉,您需要传地址
carefulman 2002-05-13
  • 打赏
  • 举报
回复
在没有添加图片时,错误为:
runtime error 35613
imagelist must be initialized befor it canbe used

添加图片后运行通过
carefulman 2002-05-13
  • 打赏
  • 举报
回复
在没有添加图片时,错误为:
runtime error 35613
imagelist must bei initialized before it can be used!

在添加图片后通过
carefulman 2002-05-13
  • 打赏
  • 举报
回复
我想你是不是没有给imagelist1添加图片的原因,代码我已经测试通过。
l634youngpig 2002-05-13
  • 打赏
  • 举报
回复
gump2000(阿甘) :byval不行,byref我试过了,不行
Greaitm(夜草) :add方法我试了好多可能了不是这个问题
carefulman(我要进步!) :我在模块你做了treeview.imagelist=imagelist
而且在form里tree我做了选择
反正总是说imagelist没有被初始化..
Shawls(小山(求职的程序员-谁让我发挥作用?)) :我有时音一定
与你联系
l634youngpig 2002-05-13
  • 打赏
  • 举报
回复
gump2000(阿甘) :byval不行,byref我试过了,不行
Greaitm(夜草) :add方法我试了好多可能了不是这个问题
carefulman(我要进步!) :我在模块你做了treeview.imagelist=imagelist
而且在form里tree我做了选择
反正总是说imagelist没有被初始化..
Shawls(小山(求职的程序员-谁让我发挥作用?)) :我有时音一定
与你联系
现在没时间我等下把模块贴出来真是谢谢大家了
shawls 2002-05-13
  • 打赏
  • 举报
回复

还有,treeview的图片是需要和imagelist关联的!

ps:你的问题我没有怎么看明白

可以shawfile@163.net讨论
shawls 2002-05-13
  • 打赏
  • 举报
回复


按地址传递!

Greaitm 2002-05-13
  • 打赏
  • 举报
回复
Add 方法(Nodes 集合)


在 Treeview 控件的 Nodes 集合中添加一个 Node 对象。

语法

object.Add(relative, relationship, key, text, image, selectedimage)

Add 方法的语法包含下面部分:

部分 描述
object 必需的。对象表达式,其值是“应用于”列表中的一个对象
relative 可选的。已存在的 Node 对象的索引号或键值。新节点与已存在的节点间的关系,可在下一个参数 relationship 中找到。
relationship 可选的。指定的 Node 对象的相对位置,如设置值中所述。
key 可选的。唯一的字符串,可用于用 Item 方法检索 Node。
text 必需的。在 Node 中出现的字符串。
image 可选的。在关联的 ImageList 控件中的图像的索引。
selectedimage 可选的。在关联的 ImageList 控件中的图像的索引,在 Node 被选中时显示。

注意: 1 Imagelist 必须与TreeView关联
2 后面两参数的类型为数字不为其他
3 也可以不用那参数,用以下代码实现:nodx.image=数字
carefulman 2002-05-13
  • 打赏
  • 举报
回复
Private Sub Command1_Click()
Call add(Me.TreeView1, Me.ImageList1)
End Sub

Public Sub add(a As TreeView, b As ImageList)
a.Nodes.Clear
a.LineStyle = tvwRootLines
Set a.ImageList = b
a.Nodes.add , 1, "aaa", "aaaaa", 1
a.Nodes.add 1, 4, "bbb", "bbbbbb", 2
End Sub

'我想原因在于没有指定treeview1的imagelist为imagelist1
gump2000 2002-05-13
  • 打赏
  • 举报
回复
请去掉byval
l634youngpig 2002-05-13
  • 打赏
  • 举报
回复
300分等待,

7,764

社区成员

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

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