DenQ 发表于 2012-6-25 19:29:29

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

本帖最后由 DenQ 于 2012-6-26 16:33 编辑

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

qq342252004 发表于 2012-6-25 19:46:50

AU3写计费系统,太强大了,支持一下。

ashfinal 发表于 2012-6-25 19:47:01

_GUICtrlListView_SetColumnWidth

aimer1124 发表于 2012-6-25 20:07:02

_GUICtrlListView_SetColumnWidth
#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

DenQ 发表于 2012-6-25 20:24:45

回复 3# ashfinal


    不行不知道 为什么 修改不了。。

happytc 发表于 2012-6-25 20:52:40

回复ashfinal


    不行不知道 为什么 修改不了。。
DenQ 发表于 2012-6-25 20:24 http://www.autoitx.com/images/common/back.gif

不把你的源码帖出来,我们也是“不知道”,也真的不知道为什么

DenQ 发表于 2012-6-25 20:53:11

回复 4# aimer1124


    谢了 不过这是列表模式。 改不了貌似。。

3mile 发表于 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
        __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) Then
                Return SetError(1, 0, 0)
        EndIf
        Return $Ret
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

lhy6456210 发表于 2012-6-25 23:33:01

好东西,支持

haodd 发表于 2012-6-26 09:08:28

回复 5# DenQ


    能是用了皮肤的关系

DenQ 发表于 2012-6-26 16:33:10

回复 8# 3mile


    谢了, {:face (356):}

lark 发表于 2012-6-26 19:04:03

不错{:face (303):}

xujinrongko 发表于 2012-6-27 08:38:37

强大~~~~~~~~~

fhqbbfcu2050 发表于 2012-6-28 09:09:55

看看你这是怎么实现的....

fhqbbfcu2050 发表于 2012-6-28 09:17:29

有点难度.至少我自己写不出来.
页: [1] 2
查看完整版本: 求助 listview 列表视图 列宽修改。[已解决]