Private Sub Form_Load()
Dim itmX As ListItem
Set itmX = ListView1.ListItems.Add(1, "Sal", "Sales", 1, 1)
Set itmX = ListView1.ListItems.Add(2, "His", "Customer History", 4, 4)
Set itmX = ListView1.ListItems.Add(3, "Reg", "Customer Registration", 5, 5)
Set itmX = ListView1.ListItems.Add(4, "All", "Print All Outstandings", 3, 3)
Set itmX = ListView1.ListItems.Add(5, "Cus", "Print A Customer's Outstandings", 2, 2)
Set itmX = ListView1.ListItems.Add(6, "Due", "Print All Due Payments", 6, 6)
Set itmX = ListView1.ListItems.Add(7, "Pay", "Settle Invoice", 7, 7)
Set itmX = ListView1.ListItems.Add(8, "Chk", "Check Invoice", 8, 8)
'--
AddBitMapsToMenu
'ListView1.Arrange
OpenDB
End Subadd方法后面的(1, "Sal", "Sales", 1, 1)各个参数是什么意思啊?
Dim itmX As ListItem
Set itmX = ListView1.ListItems.Add(1, "Sal", "Sales", 1, 1)
Set itmX = ListView1.ListItems.Add(2, "His", "Customer History", 4, 4)
Set itmX = ListView1.ListItems.Add(3, "Reg", "Customer Registration", 5, 5)
Set itmX = ListView1.ListItems.Add(4, "All", "Print All Outstandings", 3, 3)
Set itmX = ListView1.ListItems.Add(5, "Cus", "Print A Customer's Outstandings", 2, 2)
Set itmX = ListView1.ListItems.Add(6, "Due", "Print All Due Payments", 6, 6)
Set itmX = ListView1.ListItems.Add(7, "Pay", "Settle Invoice", 7, 7)
Set itmX = ListView1.ListItems.Add(8, "Chk", "Check Invoice", 8, 8)
'--
AddBitMapsToMenu
'ListView1.Arrange
OpenDB
End Subadd方法后面的(1, "Sal", "Sales", 1, 1)各个参数是什么意思啊?
=======================================================================
下面的示例使用 Biblio.mdb 数据库作为资源,通过 ListItem 对象移居 ListView 控件。要试用此例,请将一个 ListView 控件放置在窗体上,并将代码粘贴到窗体的声明部分。还必须确保已将 Biblio.mdb 安装在机器上。在以下代码中检查 OpenDatabase 函数中的路径,并改变它,使之反映 Biblio.mdb 在机器上的实际路径。注意 除非添加到 Microsoft DAO 3.5 对象库的“引用”,否则示例无法运行。为此,在 Project 菜单上单击 References。搜索 Microsoft DAO 3.5 对象库并单击复选框来选择。Private Sub Form_Load()
'添加 ColumnHeaders。列宽度等于控件宽度
'除以 ColumnHeader 对象的数目。
ListView1.ColumnHeaders. _
Add , , "Author", ListView1.Width / 3)
ListView1.ColumnHeaders. _
Add , , "Author ID", ListView1.Width / 3, _
lvwColumnCenter
ListView1.ColumnHeaders. _
Add , , "Birthdate", ListView1.Width / 3)
' Set View property to Report.
ListView1.View = lvwReport
'为数据访问对象声明对象变量。
Dim myDb As Database, myRs As Recordset
'设置 Database 为 BIBLIO.MDB 数据库。
' IMPORTANT: the Biblio.mdb must be on your
' machine, and you must set the correct path to
' the file in the OpenDatabase function below.
Set myDb = DBEngine.Workspaces(0) _
.OpenDatabase("c:\Program Files\VB\BIBLIO.MDB")
'设置 recordset 为 "Authors" 表。
Set myRs = _
myDb.OpenRecordset("Authors", dbOpenDynaset)
'声明变量以添加 ListItem 对象。
Dim itmX As ListItem '若当前记录不是最后一条记录,则添加一个 ListItem 对象。
'ListItem 对象的文本使用 author 字段。
'ListItem 对象的 SubItem(1) 使用 AuthorID 字段。
'ListItem 对象的 SubItem(2) 使用 "Year of Birth" 字段。 While Not myRs.EOF
Set itmX = ListView1.ListItems. _
Add(, , CStr(myRs!Author),1) 'Author 字段。
'若 AuthorID 字段不为空,则将 SubItem 1 设置为此字段。
If Not IsNull(myRs!Au_id) Then
itmX.SubItems(1) = CStr(myRs!Au_id) ' Author ID。
End If '若 birth 字段不为空,则将 SubItem 2 设置为此字段。
If Not IsNull(myRs![Year Born]) Then
itmX.SubItems(2) = myRs![Year Born]
End If
myRs.MoveNext '移动到下一条记录。
Wend
End Sub
'Variables to workaround the fact that there is no ItemDblClick EventDim xpos As Long, ypos As Long
'文件名是否可以换行
Private Sub Check1_Click()
If Check1.Value Then
ListView1.LabelWrap = True
Else
ListView1.LabelWrap = False
End IfEnd Sub'是否隐藏列
Private Sub Check2_Click()
If Check2.Value Then
ListView1.HideColumnHeaders = True
Else
ListView1.HideColumnHeaders = False
End If
End Sub'一个失去焦点时的小效果
Private Sub Check3_Click()
If Check3.Value Then
ListView1.HideSelection = True
Else
ListView1.HideSelection = False
End If
End Sub'文件名是否可以编辑
Private Sub Check4_Click()
If Check4.Value Then
'lvwAutomatic表示可以编辑
ListView1.LabelEdit = lvwAutomatic
Else
'lvwManual表示不可以编辑
ListView1.LabelEdit = lvwManual
End If
'两次点击图标便可以编辑了(两次点击应间隔一秒或以上)
End Sub'ListView的显示方法
Private Sub Combo1_Click()
Select Case Combo1.ListIndex
Case 0:
'大图标显示
ListView1.View = lvwIcon
Case 1:
'小图标显示
ListView1.View = lvwSmallIcon
Case 2:
'列表显示
ListView1.View = lvwList
Case 3:
'详细列表显示
ListView1.View = lvwReport
End SelectEnd Sub'图标的排列方式
Private Sub Combo2_Click()
Select Case Combo2.ListIndex
Case 0:
'自动排列
ListView1.Arrange = 0 'lvwNoArrange
Case 1:
'靠左排列
ListView1.Arrange = lvwAutoLeft
Case 2:
'靠上排列
ListView1.Arrange = lvwAutoTop
End SelectEnd Sub'添加列(只在使用"详细资料"显示图标时才有效)
Private Sub Command1_Click()
ListView1.ColumnHeaders.Add , , Text3.Text
End Sub
'删除列(只在使用"详细资料"显示图标时才有效)
Private Sub Command2_Click()
'从最末一列删起
ListView1.ColumnHeaders.Remove ListView1.ColumnHeaders.Count
End Sub'建立文件夹模块
Private Sub Command3_Click()
Dim itmX As ListItem
Dim reply As IntegerIf MsgBox("这将在您的系统中建立一个真的文件夹,是否继续?", vbYesNo + vbExclamation) = vbNo Then Exit SubOn Error Resume Next '错误处理MkDir Text1.Text '调用"MkDir"函数建立新文件夹'当用户建立的文件名非法时的错误处理
If Err Then
MsgBox "文件名不能包括以下字符: " & vbCrLf & "\ / : * ? “ <>|", vbCritical
Exit Sub
End If'使用Set语句在ListView1中增加一个文件夹图标
On Error GoTo 0
Set itmX = ListView1.ListItems.Add(, , Text1.Text)
itmX.Icon = 1 ' 设置一个大图标
itmX.SmallIcon = 1 ' 设置一个小图标End Sub'查找模块
Private Sub Command4_Click()
Dim itmFound As ListItem'从文件的文件名中查找关键字
Set itmFound = ListView1.FindItem(Text2.Text, lvwText, , lvwPartial)
'假如未查找到便显示Msgbox并退出
'如果找到了则反色显示
If itmFound Is Nothing Then
MsgBox "没有查找到", vbInformation
Exit Sub
Else
itmFound.EnsureVisible ' 反色显示查找到的文件名
itmFound.Selected = True ' 并选中此文件
'设置焦点给ListView1,以便更好的显示
ListView1.SetFocus
End IfEnd Sub
'给File1,Dir1建立关系,使之互动
Private Sub Dir1_Change()
File1.Path = Dir1.Path
End Sub'给Dir1,Drive1建立关系,使之互动
Private Sub Drive1_Change()
Dir1.Path = Drive1.Drive
End Sub'程序启动时所作的多项设置
Private Sub Form_Load()
'设置各种变量
Dim NameOfFile As String
Dim clmX As ColumnHeader
Dim itmX As ListItem
Dim Counter As Long
Dim dname As String
Dim TempDname As String
Dim counter2 As Integer
Dim CurrentDir As StringApp.Title = "ListView 控件演示" '设置程序主窗体的标题
'设置Combo1和Combo2的ListIndex均为0
Combo1.ListIndex = 0
Combo2.ListIndex = 0' 为详细显示设置三个默认的列
ListView1.ColumnHeaders.Add , , "名称", ListView1.Width / 3
Set clmX = ListView1.ColumnHeaders.Add(, , "大小", ListView1.Width / 3)
Set clmX = ListView1.ColumnHeaders.Add(, , "修改日期", ListView1.Width / 3)
ListView1.BorderStyle = ccFixedSingle ' 设置ListView1的样式
' 使用ImageList设置ListView1的各个显示模式下的图标' 小图标设置
ListView1.Icons = ImageList1
ListView1.SmallIcons = ImageList2'设置当前驱动器和目录
ChDrive Drive1.Drive
Dir1.Path = CurDir'必要时可以加入以下代码
'If Right(CurrentDir, 1) <> "\" Then CurrentDir = CurrentDir & "\"
'Dir1.Path = CurrentDir
'Dir1.Path = Drive1.Drive'NameOfFile = Dir$(CurrentDir & "*.*", vbDirectory)
Dim Fname As String' 假如在子目录,设置返回上级目录的图标
If Right(Dir1.Path, 1) <> "\" Then
CurrentDir = Dir1.Path & "\"
dname = ".."
Set itmX = ListView1.ListItems.Add(, , dname)
itmX.SubItems(1) = ""
itmX.Icon = 3 ' 设置一个大图标
itmX.SmallIcon = 3 ' 设置一个小图标
itmX.SubItems(2) = ""
Else
'假如在根目录
CurrentDir = Dir1.Path
End If'得到文件名
'使用For...Next语句重复执行此过程
For Counter = 0 To File1.ListCount - 1
Fname = File1.List(Counter)
Set itmX = ListView1.ListItems.Add(, , Fname)
itmX.SubItems(1) = CStr(FileLen(CurrentDir & Fname))
itmX.Icon = 2 ' 设置一个大图标
itmX.SmallIcon = 2 ' 设置一个小图标
itmX.SubItems(2) = FileDateTime(CurrentDir & Fname) '得到创建时间
Next Counter'得到目录名
For Counter = 0 To Dir1.ListCount - 1
dname = Dir1.List(Counter)
For counter2 = Len(dname) To 1 Step -1
If Mid$(dname, counter2, 1) = "\" Then
TempDname = Right(dname, Len(dname) - counter2)
Exit For
End If
Next counter2
Set itmX = ListView1.ListItems.Add(, , TempDname)
itmX.SubItems(1) = ""
itmX.Icon = 1 ' 设置一个大图标
itmX.SmallIcon = 1 ' 设置一个小图标
itmX.SubItems(2) = FileDateTime(dname)
Next CounterListView1.View = lvwIcon '图标的显示方式为大图标
ListView1.Arrange = 0 '图标的排列方式为自动排列
ListView1.LabelWrap = True '文件名换行显示为真
ListView1.Sorted = True '文件名自动排列为真Form1.Caption = "ListView 控件演示 - " & Dir1.Path '设置主窗体的标题
End Sub'设置文件名的排序方式
Private Sub ListView1_ColumnClick(ByVal ColumnHeader As ColumnHeader)
ListView1.SortKey = ColumnHeader.Index - 1End Sub
'双击文件夹图标时的操作
Private Sub ListView1_DblClick()
Dim Counter As Long
Dim itmX As ListItem
Dim NameOfFile As String
Dim dname As String
Dim TempDname As String
Dim counter2 As Integer
Dim Item As ListItem
Dim CurrentDir As String'当拖动文件夹图标时的操作
If ListView1.HitTest(xpos, ypos) Is Nothing Then
Exit Sub
Else
Set Item = ListView1.HitTest(xpos, ypos)
End If
'设置变量 Item = ListView1.SelectedItem'假如点击图标则
If Right(Dir1.Path, 1) <> "\" Then
CurrentDir = Dir1.Path & "\"
Else
CurrentDir = Dir1.Path
End IfIf (GetAttr(CurrentDir & Item) And vbDirectory) <= 0 Then Exit Sub
ListView1.ListItems.Clear '清除旧图标'改变选择的目录 - 让Visual Basic来做这个工作吧
ChDir ItemDir1.Path = CurDirDim Fname As String'假如不在根目录中,则显示返回上一级目录的图标
If Right(Dir1.Path, 1) <> "\" Then
CurrentDir = Dir1.Path & "\"
dname = ".."
Set itmX = ListView1.ListItems.Add(, , dname)
itmX.SubItems(1) = ""
itmX.Icon = 3 ' 设置一个大图标
itmX.SmallIcon = 3 ' 设置一个小图标
itmX.SubItems(2) = ""
Else
'假如在根目录中
CurrentDir = Dir1.Path
End If'开始增加一个新文件
For Counter = 0 To File1.ListCount - 1
Fname = File1.List(Counter)
Set itmX = ListView1.ListItems.Add(, , Fname)
itmX.SubItems(1) = CStr(FileLen(CurrentDir & Fname))
itmX.Icon = 2 ' 设置一个大图标
itmX.SmallIcon = 2 ' 设置一个小图标
itmX.SubItems(2) = FileDateTime(CurrentDir & Fname)
Next Counter'添加新的列
For Counter = 0 To Dir1.ListCount - 1
dname = Dir1.List(Counter)
'得到真实的名称
For counter2 = Len(dname) To 1 Step -1
If Mid$(dname, counter2, 1) = "\" Then
TempDname = Right(dname, Len(dname) - counter2)
Exit For
End If
Next counter2
Set itmX = ListView1.ListItems.Add(, , TempDname)
itmX.SubItems(1) = ""
itmX.Icon = 1 ' 设置一个大图标
itmX.SmallIcon = 1 ' 设置一个小图标
itmX.SubItems(2) = FileDateTime(dname)
Next Counter
Form1.Caption = "ListView 控件演示 - " & CurrentDirEnd SubPrivate Sub ListView1_MouseDown(Button As Integer, Shift As Integer, x As Single, y As Single)
'设置鼠标的坐标
xpos = x
ypos = yEnd SubPrivate Sub mabout_Click()
'显示about窗体
Form2.Show 1
End SubPrivate Sub mexit_Click()
'退出Form1
Unload Form1
End
End Sub
Public Declare Function GetMenu Lib "user32" (ByVal hwnd As Long) As Long
我对象这样的代码也看不懂,建议以下我看哪方面的资料能帮助我弄懂这些阿,谢啦
Declare Function GetMenu Lib "user32" Alias "GetMenu" (ByVal hwnd As Long) As Long
说明
取得窗口中一个菜单的句柄
返回值
Long,依附于指定窗口的一个菜单的句柄(如果有菜单);否则返回零
参数表
参数 类型及说明
hwnd Long,窗口句柄。对于vb,这应该是一个窗体句柄。注意可能不是子窗口的句柄 Top
添加 ListItem 对象到 ListView 控件的 ListItems 集合中并返回新创建对象的引用。语法object.Add(index, key, text, icon, smallIcon)Add 方法的语法包含下面部分:部分 描述
object 必需的。对象表达式,其值是 ListItems 集合。
index 可选的。指定在何处插入 ListItem 的整数。若未指定索引,则将 ListItem 添加到 ListItems 集合的末尾。
key 可选的。唯一的字符串表达式,用来访问集合成员。
text 可选的。与 ListItem 对象控件关联的字符串。
icon 可选的。当 ListView 控件设为图标视图时,此整数设置从 ImageList 控件中选定的欲显示的图标。
smallIcon 可选的。当 ListView 控件设为小图标时,此整数设置从 ImageList 控件中选定的欲显示的图标。
说明设置 Icons 或 SmallIcons 属性之前必须先初始化它们。有两种初始化方法:在设计时,使用 ListView 控件属性对话框的“通用”选项卡指定 ImageList 对象;在运行时,使用下列代码初始化:ListView1.Icons = ImageList1 '假设 Imagelist 为 ImageList1。
ListView1.SmallIcons = ImageList2 如果列表尚未排序,则可使用 index 参数将 ListItem 对象插入到任意位置。如果列表已排序,则将忽略 index 参数并根据排序顺序把 ListItem 对象插入到适当的位置。若未提供 index,则 ListItem 对象将被添加一个索引,此索引等于集合中 ListItem 对象的数目加 1。当希望对象的 Index 属性可变更时,例如希望动态地从集合中添加和删除对象时,使用 Key 属性引用 ListItems 集合的成员。