找回密码
 加入
搜索
查看: 11461|回复: 19

[GUI管理] 求助 listview 列表视图 列宽修改。[已解决]

 火.. [复制链接]
发表于 2012-6-25 19:29:29 | 显示全部楼层 |阅读模式
本帖最后由 DenQ 于 2012-6-26 16:33 编辑

在写一个listview里显示机器状态的程序,但苦与不知道怎么修改列表视图列宽,排版太稀疏了。。
   

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?加入

×
发表于 2012-6-25 19:46:50 | 显示全部楼层
AU3写计费系统,太强大了,支持一下。
发表于 2012-6-25 19:47:01 | 显示全部楼层
_GUICtrlListView_SetColumnWidth
发表于 2012-6-25 20:07:02 | 显示全部楼层
_GUICtrlListView_SetColumnWidth
[code]
#include <GUIConstantsEx.au3>
#include <GuiListView.au3>

$Debug_LV = False ; 检查传递给 ListView 函数的类名, 设置为True并输出到一个控件的句柄,用于检查它是否工作

_Main()

Func _Main()
    Local $hListView

    GUICreate("ListView Set Column Width", 400, 300)
    $hListView = GUICtrlCreateListView("Column 1|Column 2|Column 3|Column 4", 2, 2, 394, 268)
    GUISetState()

    ; Change column 1 width
    MsgBox(4160, "信息", "Column 1 Width: " & _GUICtrlListView_GetColumnWidth($hListView, 0))
    _GUICtrlListView_SetColumnWidth($hListView, 0, 150)
    MsgBox(4160, "信息", "Column 1 Width: " & _GUICtrlListView_GetColumnWidth($hListView, 0))

    ; 循环直到用户退出
    Do
    Until GUIGetMsg() = $GUI_EVENT_CLOSE

    GUIDelete()
EndFunc   ;==>_Main
[/code]
 楼主| 发表于 2012-6-25 20:24:45 | 显示全部楼层
回复 3# ashfinal


    不行不知道 为什么 修改不了。。
发表于 2012-6-25 20:52:40 | 显示全部楼层
回复  ashfinal


    不行不知道 为什么 修改不了。。
DenQ 发表于 2012-6-25 20:24


不把你的源码帖出来,我们也是“不知道”,也真的不知道为什么
 楼主| 发表于 2012-6-25 20:53:11 | 显示全部楼层
回复 4# aimer1124


    谢了 不过这是列表模式。 改不了貌似。。
发表于 2012-6-25 21:25:39 | 显示全部楼层
#include <GUIConstantsEx.au3>
#include <GuiListView.au3>
#include <GuiImageList.au3>
#include <WindowsConstants.au3>
$Gui = GUICreate("Test by-3mile", 800, 600, Default, Default)
$listview = _GUICtrlListView_Create($Gui, "a", 2, 2, 798, 598, BitOR($LVS_NOCOLUMNHEADER, $LVS_ICON, $LVS_SINGLESEL), -1, True)

$iTotalNumber = DllCall("Shell32.dll", "long", "ExtractIcon", "ptr", 0, "str", "Shell32.dll", "int", -1)
$Image = _GUIImageList_Create(16, 16, 5, 1);通常我是用这里来调整图标多少的
For $i = 1 To $iTotalNumber[0]
        __GUIImageList_AddIcon($Image, "c:\WINDOWS\system32\shell32.dll", $i)
        _GUICtrlListView_SetImageList($listview, $Image, 0)
        _GUICtrlListView_AddItem($listview, "第" & $i & "个", $i - 1)
Next

_GUICtrlListView_SetBkImage($listview, @ScriptDir & "\BkgPic.jpg", 1)
GUISetState()

GUIRegisterMsg($WM_NOTIFY, "WM_NOTIFY")

While GUIGetMsg() + 3
WEnd


Func __Icons_Icon_Extract($sIcon, $iIndex, $iWidth, $iHeight)
        Local $Ret = DllCall('shell32.dll', 'int', 'SHExtractIconsW', 'wstr', $sIcon, 'int', $iIndex, 'int', $iWidth, 'int', $iHeight, 'ptr*', 0, 'ptr*', 0, 'int', 1, 'int', 0)
        If (@error) Or ($Ret[0] = 0) Then
                Return SetError(1, 0, 0)
        EndIf
        Return $Ret[5]
EndFunc   ;==>__Icons_Icon_Extract

Func __GUIImageList_AddIcon($hWnd, $sFile, $iIndex = 0)
        Local $iRet
        $iRet = __Icons_Icon_Extract($sFile, $iIndex, _GUIImageList_GetIconWidth($hWnd), _GUIImageList_GetIconHeight($hWnd))
        If $iRet <= 0 Then Return SetError(-1, $iRet, 0)

        Local $hIcon = $iRet
        $iRet = _GUIImageList_ReplaceIcon($hWnd, -1, $hIcon)
        _WinAPI_DestroyIcon($hIcon)
        If $iRet = -1 Then Return SetError(-2, $iRet, 0)
        Return $iRet
EndFunc   ;==>__GUIImageList_AddIcon

Func WM_NOTIFY($hWnd, $iMsg, $iwParam, $ilParam)
        Local $hWndFrom, $iIDFrom, $iCode, $tNMHDR, $hWndListView, $tInfo, $Menu
        $tNMHDR = DllStructCreate($tagNMHDR, $ilParam)
        $hWndFrom = HWnd(DllStructGetData($tNMHDR, "hWndFrom"))
        $iCode = DllStructGetData($tNMHDR, "Code")
        Switch $hWndFrom
                Case $listview
                        Switch $iCode
                                Case $NM_DBLCLK
                                        $tInfo = DllStructCreate($tagNMITEMACTIVATE, $ilParam)
                                        $Index = DllStructGetData($tInfo, "SubItem")
                                        If $Index > -1 Then
                                                $L_Name = _GUICtrlListView_GetItemText($hWndFrom, $Index)
                                                MsgBox(4096, "响应双击", "你选择的是  " & $L_Name)
                                        EndIf
                        EndSwitch
        EndSwitch
        Return $GUI_RUNDEFMSG
EndFunc   ;==>WM_NOTIFY

评分

参与人数 1贡献 +1 收起 理由
Windows8 + 1

查看全部评分

发表于 2012-6-25 23:33:01 | 显示全部楼层
好东西,支持

评分

参与人数 1金钱 -10 收起 理由
user3000 -10 提问帖, 请认真回复!

查看全部评分

发表于 2012-6-26 09:08:28 | 显示全部楼层
回复 5# DenQ


    能是用了皮肤的关系
 楼主| 发表于 2012-6-26 16:33:10 | 显示全部楼层
回复 8# 3mile


    谢了,
发表于 2012-6-26 19:04:03 | 显示全部楼层
不错
发表于 2012-6-27 08:38:37 | 显示全部楼层
强大~~~~~~~~~
发表于 2012-6-28 09:09:55 | 显示全部楼层
看看你这是怎么实现的....
发表于 2012-6-28 09:17:29 | 显示全部楼层
有点难度.至少我自己写不出来.
您需要登录后才可以回帖 登录 | 加入

本版积分规则

QQ|手机版|小黑屋|AUTOIT CN ( 鲁ICP备19019924号-1 )谷歌 百度

GMT+8, 2024-12-24 01:19 , Processed in 0.112643 second(s), 25 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

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