设为首页收藏本站Access中国

Office中国论坛/Access中国论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

返回列表 发新帖
楼主: sgrshh29
打印 上一主题 下一主题

[ActiveX] 学习使用microsoft windows common controls 6.0 (sp6)中几个常用控件

[复制链接]
27#
发表于 2010-9-15 10:15:31 | 只看该作者
感谢楼主无私奉献,非常详细了,好好学习中
26#
发表于 2010-9-14 18:13:44 | 只看该作者

非常感谢,,,,, 因为有你们精采的指导,  才让菜鸟能飞 ,飞的更高,飞的更远..........
25#
发表于 2010-9-14 18:13:26 | 只看该作者
经过楼主细心的讲解终于明白主题的所在,多谢指点向你学习!!!!!!
24#
发表于 2010-9-13 21:49:03 | 只看该作者
确实伟大!
23#
发表于 2010-9-12 16:43:42 | 只看该作者
感谢伟大的实例!
22#
发表于 2010-9-12 09:21:38 | 只看该作者
好东东.谢谢
21#
发表于 2010-9-11 16:53:52 | 只看该作者
楼主太伟大了,谢谢楼主分享
20#
 楼主| 发表于 2010-9-11 16:11:28 | 只看该作者

接下去就是如何将文件保存到ole字段,这部分内容论坛有很多示例了,就不详细讲了。只要把它做成通用过程嵌入到前面的模块里就可以了。

下面就把示例附上。



供各位朋友参考。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
19#
 楼主| 发表于 2010-9-11 15:54:49 | 只看该作者
回复 sgrshh29 的帖子


十、listview的操作
1、改变Listview显示样式
这里只选二种样式,大图标、报表
为按钮菜单添加过程
Sub mIcon()
    Set objList = Forms("frmMain").Controls("Listview0")
    objList.View = lvwIcon
    pnlEditText "当前操作:ListView为Icon"
End Sub
Sub mReport()
    Set objList = Forms("frmMain").Controls("Listview0")
    objList.View = lvwReport
    pnlEditText "当前操作:ListView为Report"
End Sub

2、编辑Listview的Item的文本并更新相应记录
为按钮菜单添加过程
Sub mEditeItem()
    Dim strName As String
    strName = InputBox("Typing New Name.", "Informationg")
    If strName = "" Then Exit Sub
    Set objTree = Forms("frmMain").Controls("treeview0")
    Set objList = Forms("frmMain").Controls("Listview0")
    pnlEditText "当前操作:编辑" & objList.SelectedItem
    objList.SelectedItem.Text = strName
    If objList.SelectedItem.SubItems(1) <> "" Then
        CurrentDb.Execute "update tblListview set fname='" & strName & "' where id = " & Mid(objList.SelectedItem.Key, 2)
    ElseIf objList.SelectedItem.SubItems(1) = "" Then
        CurrentDb.Execute "update tblTreeview set pname='" & strName & "' where id = " & Mid(objList.SelectedItem.Key, 2)
        objTree.Nodes("T" & Mid(objList.SelectedItem.Key, 2)).Text = strName
    End If
    pnlEditText "当前操作:编辑完成"
    Set objTree = Nothing
    Set objList = Nothing
End Sub

3、删除Listview的Item并且删除相应的记录
为按钮菜单添加过程
Sub mDeleteItem()
    Dim objNode As Object
    Dim strListKey As String
    Set objTree = Forms("frmMain").Controls("treeview0")
    Set objList = Forms("frmMain").Controls("Listview0")
    If objList.SelectedItem Is Nothing Then Exit Sub     '如果没有指定项目,就退出
    pnlEditText "当前操作:正在删除" & objList.SelectedItem
    strListKey = objList.SelectedItem.Key
    If objList.SelectedItem.SubItems(1) = "" Then
        strKey = "T" & Mid(strListKey, 2)
        Set objNode = objTree.Nodes(strKey)
        CurrentDb.Execute ("delete * from tblTreeview where id=" & Mid(strListKey, 2))
        objList.ListItems.Remove (strListKey)
        RemoveNode objNode
    Else
        strKey = "T" & DLookup("gid", "tblListview", "id=" & Mid(strListKey, 2))
        Set objNode = objTree.Nodes(strKey)
        CurrentDb.Execute ("delete * from tblListview where id=" & Mid(strListKey, 2))
        objList.ListItems.Remove (strListKey)
    End If
    Set objNode = Nothing
    Set objTree = Nothing
    Set objLidt = Nothing
    pnlEditText "当前操作:删除完成"
End Sub
4、改变listview的排序
为菜单按钮添加单击事件的过程
listview按文件名称排序
Sub mName()
    Set objList = Forms("frmMain").Controls("Listview0")
    objList.Sorted = True
    objList.SortKey = 0
    Set objList = Nothing
    pnlEditText "当前操作:ListView按文件名称排序"
End Sub
listview按文件类型排序
Sub mType()
    Set objList = Forms("frmMain").Controls("Listview0")
    objList.Sorted = True
    objList.SortKey = 1
    Set objList = Nothing
    pnlEditText "当前操作:ListView按文件类型排序"
End Sub
listview按最后修改日期排序
Sub mDate()
    Set objList = Forms("frmMain").Controls("Listview0")
    objList.Sorted = True
    objList.SortKey = 3
    Set objList = Nothing
    pnlEditText "当前操作:ListView按文件修改日期排序"
End Sub

5、Listview的Item拖曳到Treeview的其它节点
a、在Listview0_OLEStartDrag事件中写入代码定义拖动类型
Private Sub Listview0_OLEStartDrag(Data As Object, AllowedEffects As Long)
    strDragType = "ListView"
    pnlEditText "当前操作:拖动ListviewItem。"
End Sub
b、在TreeView0_OLEDragDrop事件中判断出拖曳类型后执行代码
    ElseIf strDragType = "ListView" Then   '拖曳的是listrview的item
        If Me.TreeView0.DropHighlight Is Nothing = False Then
            If Me.TreeView0.SelectedItem.Key = Me.TreeView0.DropHighlight.Key Then Exit Sub
        End If
        Set objNode = Me.TreeView0.SelectedItem
        ListDragDrop objNode
c、 ListDragDrop过程
Sub ListDragDrop(objNode As Node)
On Error GoTo Err_ListDragDrop
    Dim i As Integer
    Dim objTree As Object
    Dim objList As Object
    Dim nodDroped As Node
    Set objTree = Forms("frmMain").Controls("treeview0").Object
    Set objList = Forms("frmMain").Controls("listview0").Object
    strKey = objList.SelectedItem.Key
    With objList
        If .SelectedItem.SubItems(1) <> "" Then
            If objTree.DropHighlight Is Nothing Then
                Exit Sub
            Else
                Set nodDroped = objTree.DropHighlight
            End If
            CurrentDb.Execute "update tblListview set gid = " & Mid(nodDroped.Key, 2) & _
                                                 " where id = " & Mid(strKey, 2)
            .ListItems.Remove (strKey)
        ElseIf .SelectedItem.SubItems(1) = "" Then
            If objTree.DropHighlight Is Nothing Then
                CurrentDb.Execute "update tblTreeview set gid=0 where id=" & Mid(strKey, 2)
                加载Treeview Forms("frmMain").Controls("treeview0")
                objTree.Nodes("T" & Mid(strKey, 2)).Selected = True
                objTree.Nodes("T" & Mid(strKey, 2)).Expanded = True
                加载ListItem strKey
            Else
                Set nodDroped = objTree.DropHighlight
                CurrentDb.Execute "update tblTreeview set gid=" & Mid(nodDroped.Key, 2) & _
                                                 " where id=" & Mid(strKey, 2)
                Set objTree.Nodes("T" & Mid(strKey, 2)).Parent = nodDroped
                .ListItems.Remove (strKey)
            End If
        End If
    End With
Exit_ListDragDrop:
    Set objTree = Nothing
    Set objList = Nothing
    Set nodDroped = Nothing
    Exit Sub
Err_ListDragDrop:
    MsgBox Err.Description
    Resume Exit_ListDragDrop
End Sub

6、完成以上步骤后的窗体演示




本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
18#
 楼主| 发表于 2010-9-11 15:53:50 | 只看该作者
回复 sgrshh29 的帖子

九、接下来是Listview控件,从名称可以知道是一个列表控件。
在示例中控件是用来显示树节点(文件夹)下的内容(子文件夹和文件)
1、在窗体添加一个Listview控件,命名为Listview0,适当调整大小
2、添加一个Imagelist控件,命名为Imagelist2,在其属性对话框中添加图标,作为Listview0的大图标的来源
3、在属性中设置属性



4、创建一个数据表来保存Listview0项目数据,命名为tblListview
5、设计表



6、将这个表与tblTreeview建立关系,并且钩选实施参照完整性、级联更新、级联删除



7、输入一些临时数据

8、加载Listview0,在窗体加载中添加二句
初始化Listview Me.ListView0
加载ListItem
这二句的过程分别是
9、初始化
Sub 初始化Listview(ByVal objListview As Object)
    With objListview
        .ListItems.Clear
        .ColumnHeaders.Clear
        .LabelEdit = lvwManual
        .ColumnHeaders.Add , , "文件名", .Width * 3.1 / 5, lvwColumnLeft, 3
        .ColumnHeaders.Add , , "文件类型", .Width * 0.55 / 5, lvwColumnCenter
        .ColumnHeaders.Add , , "文件大小K   ", .Width * 0.67 / 5, lvwColumnRight
        .ColumnHeaders.Add , , "修改日期     ", .Width * 0.67 / 5, lvwColumnRight
    End With
End Sub
10、加载
Public Sub 加载ListItem(Optional strKey As String = "T1")
    Dim ItemX As ListItem
    Forms("frmMain").Controls("listview0").ListItems.Clear
    Set objRs = CurrentDb.OpenRecordset("select * from tblTreeview where gid=" & Mid(strKey, 2) & " order by id;")
    Do Until objRs.EOF
        Set ItemX = Forms("frmMain").Controls("listview0").ListItems.Add(, "P" & objRs("id"), objRs("pname"), 2, 1)
        ItemX.SubItems(1) = ""
        ItemX.SubItems(2) = Format(IIf(Not IsNull(objRs("psize")), objRs("psize"), "") / 1024, "#,##0.000")
        ItemX.SubItems(3) = IIf(Not IsNull(objRs("pdate")), Format(objRs("pdate"), "yyyy-mm-dd"), "")
        objRs.movenext
    Loop
    objRs.Close
    Set objRs = CurrentDb.OpenRecordset("select id, fname, ftype, fsize, fdate from tblListview where gid=" & Mid(strKey, 2) & " order by id;")
    Do Until objRs.EOF
        If blnSingle Then objRs.movelast
        Set ItemX = Forms("frmMain").Controls("listview0").ListItems.Add(, "L" & objRs("id"), objRs("fname"), 1, 4)
        ItemX.SubItems(1) = IIf(Not IsNull(objRs("ftype")), objRs("ftype"), "")
        ItemX.SubItems(2) = Format(IIf(Not IsNull(objRs("fsize")), objRs("fsize"), "") / 1024, "#,##0.000")
        ItemX.SubItems(3) = IIf(Not IsNull(objRs("fdate")), Format(objRs("fdate"), "yyyy-mm-dd"), "")
        objRs.movenext
    Loop
    objRs.Close
    Set objRs = Nothing
    Set ItemX = Nothing
    Exit Sub
End Sub

11、为不同的文件类型指定图标

12、然后在窗体的Treeview0的节点点击事件中,重新加载Listview0
Private Sub TreeView0_NodeClick(ByVal Node As Object)
    加载ListItem Node.Key
End Sub

13、完成以上步骤后的窗体演示





本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
您需要登录后才可以回帖 登录 | 注册

本版积分规则

QQ|站长邮箱|小黑屋|手机版|Office中国/Access中国 ( 粤ICP备10043721号-1 )  

GMT+8, 2024-5-31 02:30 , Processed in 0.122804 second(s), 32 queries .

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表