首页 新闻 论坛 群组 Blog 文档 下载 读书 Tag 网摘 搜索 .NET Java 游戏 视频 人才 外包 培训 数据库 书店 程序员
中国软件网
欢迎您:游客 | 登录 注册 帮助
  • 求助在引用(Common Controls 5.0)下使用listview的问题 [已结贴,结贴人:zz005]
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • zz005
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    • 揭贴率:
    发表于:2008-08-20 07:55:16 楼主
    因为引用Common Controls 5.0下使用listview能显示XP效果-------(样子好看了很多)

    但Controls 5.0下的listview却不能显示REPORT样式和整行选择....

    在网上看到了好像能通过API来解决.

    请各位帮下....拜托了.
    50  修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • fvflove
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    • 2

    发表于:2008-08-20 08:11:261楼 得分:25
    VB code
    Option Explicit '请增加一个 5.0下的Listview1 增加三个Check 分别为Check1 Check2 Check3 Private Declare Function SendMessageLong Lib "user32" Alias "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long 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 LVS_EX_GRIDLINES As Long = &H1& Private Const LVS_EX_CHECKBOXES As Long = &H4& Private Const LVS_EX_FULLROWSELECT As Long = &H20& Dim i As Long Private Sub Check1_Click() If Check1.Value Then SetExtendedStyle LVS_EX_FULLROWSELECT, 0 Else SetExtendedStyle 0, LVS_EX_FULLROWSELECT End If End Sub Private Sub Check2_Click() If Check2.Value Then SetExtendedStyle LVS_EX_GRIDLINES, 0 Else SetExtendedStyle 0, LVS_EX_GRIDLINES End If End Sub Private Sub Check3_Click() If Check3.Value Then SetExtendedStyle LVS_EX_CHECKBOXES, 0 Else SetExtendedStyle 0, LVS_EX_CHECKBOXES End If End Sub Private Sub Form_Load() Check1.Caption = "全行选择" Check2.Caption = "网格线" Check3.Caption = "复选框" ListView1.ColumnHeaders.Add , , "Column1" ListView1.ColumnHeaders.Add , , "Column2" ListView1.ColumnHeaders.Add , , "Column3" ListView1.ColumnHeaders.Add , , "Column4" Dim List1 As ListItem For i = 1 To 10 Set List1 = ListView1.ListItems.Add(, , "Data" & i) List1.SubItems(1) = "Row" & i List1.SubItems(2) = "Row" & i List1.SubItems(3) = "Row" & i Next ListView1.View = lvwReport End Sub Private Sub SetExtendedStyle(ByVal lStyle As Long, ByVal lStyleNot As Long) Dim lNewStyle As Long lNewStyle = SendMessageLong(ListView1.hwnd, LVM_GETEXTENDEDLISTVIEWSTYLE, 0, 0) lNewStyle = lNewStyle And Not lStyleNot lNewStyle = lNewStyle Or lStyle SendMessageLong ListView1.hwnd, LVM_SETEXTENDEDLISTVIEWSTYLE, 0, lNewStyle End Sub
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • fvflove
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    • 2

    发表于:2008-08-20 08:14:142楼 得分:0
    VB code
    '这个.上面那个少了几个常数. Option Explicit '请增加一个 5.0下的Listview1 增加三个Check 分别为Check1 Check2 Check3 Private Declare Function SendMessageLong Lib "user32" Alias "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long 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 LVS_EX_GRIDLINES As Long = &H1& Private Const LVS_EX_CHECKBOXES As Long = &H4& Private Const LVS_EX_FULLROWSELECT As Long = &H20& Private Const LVM_FIRST As Long = &H1000 Private Const LVM_SETITEMSTATE As Long = (LVM_FIRST + 43) Private Const LVM_GETITEMSTATE As Long = (LVM_FIRST + 44) Private Const LVIS_STATEIMAGEMASK As Long = &HF000 Private Const LVIF_STATE As Long = &H8 '***********************常数 Private Enum LISTVIEW_MESSAGES 'LVM_FIRST = &H1000 LVM_SETITEMCOUNT = (LVM_FIRST + 47) LVM_GETITEMRECT = (LVM_FIRST + 14) LVM_SCROLL = (LVM_FIRST + 20) LVM_GETTOPINDEX = (LVM_FIRST + 39) LVM_HITTEST = (LVM_FIRST + 18) LVM_DELETEALLITEMS = (LVM_FIRST + 9) LVM_SETEXTENDEDLISTVIEWSTYLE = (LVM_FIRST + 54) LVM_GETEXTENDEDLISTVIEWSTYLE = (LVM_FIRST + 55) End Enum Dim i As Long Private Sub Check1_Click() If Check1.Value Then SetExtendedStyle LVS_EX_FULLROWSELECT, 0 Else SetExtendedStyle 0, LVS_EX_FULLROWSELECT End If End Sub Private Sub Check2_Click() If Check2.Value Then SetExtendedStyle LVS_EX_GRIDLINES, 0 Else SetExtendedStyle 0, LVS_EX_GRIDLINES End If End Sub Private Sub Check3_Click() If Check3.Value Then SetExtendedStyle LVS_EX_CHECKBOXES, 0 Else SetExtendedStyle 0, LVS_EX_CHECKBOXES End If End Sub Private Sub Form_Load() Check1.Caption = "全行选择" Check2.Caption = "网格线" Check3.Caption = "复选框" ListView1.ColumnHeaders.Add , , "Column1" ListView1.ColumnHeaders.Add , , "Column2" ListView1.ColumnHeaders.Add , , "Column3" ListView1.ColumnHeaders.Add , , "Column4" Dim List1 As ListItem For i = 1 To 10 Set List1 = ListView1.ListItems.Add(, , "Data" & i) List1.SubItems(1) = "Row" & i List1.SubItems(2) = "Row" & i List1.SubItems(3) = "Row" & i Next ListView1.View = lvwReport End Sub Private Sub SetExtendedStyle(ByVal lStyle As Long, ByVal lStyleNot As Long) Dim lNewStyle As Long lNewStyle = SendMessageLong(ListView1.hwnd, LVM_GETEXTENDEDLISTVIEWSTYLE, 0, 0) lNewStyle = lNewStyle And Not lStyleNot lNewStyle = lNewStyle Or lStyle SendMessageLong ListView1.hwnd, LVM_SETEXTENDEDLISTVIEWSTYLE, 0, lNewStyle End Sub
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • Sandrer
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-08-20 08:17:163楼 得分:25
    VB code
    Option Explicit Const LVS_EX_FULLROWSELECT = &H20 Const LVM_FIRST = &H1000 Const LVM_SETEXTENDEDLISTVIEWSTYLE = (LVM_FIRST + 54) 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 Sub Form_Load() ListView1.View = lvwReport Dim i As Long With ListView1 .ColumnHeaders.Add , , "Column 1", 500 .ColumnHeaders.Add , , "Column 2", 500 .ColumnHeaders.Add , , "Column 3", 500 .ColumnHeaders.Add , , "Column 4", 500 For i = 1 To 100 .ListItems.Add , , "Item " & i With .ListItems(.ListItems.Count) .SubItems(1) = "I" & i & " C2" .SubItems(2) = "I" & i & " C3" .SubItems(3) = "I" & i & " C4" End With Next i End With Call SendMessage(ListView1.hWnd, LVM_SETEXTENDEDLISTVIEWSTYLE, LVS_EX_FULLROWSELECT, ByVal LVS_EX_FULLROWSELECT) End Sub
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • vansoft
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-08-20 09:23:134楼 得分:0
    收下,报表式样有属性,

    行线和整行选择没有。
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • zz005
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-08-20 09:28:235楼 得分:0
    两位都是各有其招!! 厉害啊!!

    结贴了!
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • zz005
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-08-20 09:32:276楼 得分:0
    借此机会再请教下两位!
    以上的代码能放到模块中吗??

    在用到ListView时就引用下....
    修改 删除 举报 引用 回复

    网站简介广告服务网站地图帮助联系方式诚聘英才English 问题报告
    北京创新乐知广告有限公司 版权所有 京 ICP 证 070598 号
    世纪乐知(北京)网络技术有限公司 提供技术支持
    Copyright © 2000-2008, CSDN.NET, All Rights Reserved