找回密码
 加入
搜索
查看: 20690|回复: 11

[GUI管理] GUICtrlCreateListView怎么在项目内换行1000论坛币求助

  [复制链接]
发表于 2013-8-20 17:55:39 | 显示全部楼层 |阅读模式
悬赏1000金钱已解决
本帖最后由 黑色袜子 于 2013-8-20 23:29 编辑

解决了。再次感谢 破帽遮颜 不知道怎么称呼UID12的压力好大。哈哈,顺便感谢下小海牛。他给我的大洋。不然我也没那么豁达。哈哈
#include <GUIConstantsEx.au3>
#include <ListViewConstants.au3>
#include <WindowsConstants.au3>
#include <GuiListView.au3>
#Region ### START Koda GUI section ### Form=
$Form1 = GUICreate("Form1", 615, 438, 192, 124)
$hListView = GUICtrlCreateListView("", 56, 56, 442, 326)
GUISetState(@SW_SHOW)
#EndRegion ### END Koda GUI section ###
_GUICtrlListView_InsertColumn($hListView, 0, "Column 1", 400)
_GUICtrlListView_InsertItem($hListView, "第一项目第一行"&@crlf&"第一项目第二行crlf无效", -1)
_GUICtrlListView_InsertItem($hListView, "第2项目第一行"&@crlf&"第2项目第二行crlf无效",-1)
_GUICtrlListView_InsertItem($hListView, "最好能设置项目的高度", -1)



While 1
        $nMsg = GUIGetMsg()
        Switch $nMsg
                Case $GUI_EVENT_CLOSE
                        Exit

        EndSwitch
WEnd
昨天发了个GUICtrlCreateList的没得到解决,现在我换了GUICtrlCreateListView控件。
因为那个贴子无法弄悬赏的,就再开了个贴子。斑竹谅解下!

附件: 您需要 登录 才可以下载或查看,没有账号?加入
发表于 2013-8-20 17:55:40 | 显示全部楼层
#include <GuiConstantsEx.au3>
#include <GuiListView.au3>
#include <GuiImageList.au3>
#include <WindowsConstants.au3>

Opt('MustDeclareVars', 1)

Global Const $LVTVIF_AUTOSIZE = 0x00000000
Global Const $LVTVIF_FIXEDWIDTH = 0x00000001
Global Const $LVTVIF_FIXEDHEIGHT = 0x00000002
Global Const $LVTVIF_FIXEDSIZE = 0x00000003
Global Const $LVTVIF_EXTENDED = 0x00000004

Global Const $LVTVIM_TILESIZE = 0x00000001
Global Const $LVTVIM_COLUMNS = 0x00000002
Global Const $LVTVIM_LABELMARGIN = 0x00000004

Global Const $tagLVTILEINFO = "uint Size; int Item; uint Count; ptr Columns; ptr ColFmt"
Global Const $tagLVTILEVIEWINFO = "uint Size; dword Mask; dword Flags; " & $tagSIZE & "; int Lines; " & $tagRECT

_Main()

Func _Main()
        Local $hGUI, $hListView, $aiSize

        $hGUI = GUICreate("ListView get tile size", 400, 300)

        $hListView = _GUICtrlListView_Create($hGUI, "Item|Price", 2, 2, 394, 268)
        _GUICtrlListView_SetView($hListView, 4)
        _GUICtrlListView_SetTileSize($hListView, 390, 50)

        _AddItem($hListView, "第一项目第二行crlf无效"&@CRLF&'第二行', '??')
        _AddItem($hListView, "11111111111111111111111111111111"&@CRLF&'换行换行', '??')
        GUISetState()

        While 1
                Switch GUIGetMsg()
                        Case $GUI_EVENT_CLOSE
                                ExitLoop
                EndSwitch
        WEnd
        GUIDelete()
EndFunc

Func _AddItem($hWnd, $sItem, $sPrice)
        Local $iItem, $aiCols[1]
        $iItem = _GUICtrlListView_AddItem($hWnd, $sItem)
        _GUICtrlListView_AddSubItem($hWnd, $iItem, $sPrice, 1)
        $aiCols[0] = 1
        _GUICtrlListView_SetTileInfo($hWnd, $iItem, $aiCols)
EndFunc

Func _GUICtrlListView_SetTileSize($hWnd, $iTileWidth = Default, $iTileHeight = Default)
        If $Debug_LV Then __UDF_ValidateClassName($hWnd, $__LISTVIEWCONSTANT_ClassName)
        Local $tLVTVI, $iFlags, $fResult
        $tLVTVI = DllStructCreate($tagLVTILEVIEWINFO)
        DllStructSetData($tLVTVI, "Size", DllStructGetSize($tLVTVI))
        DllStructSetData($tLVTVI, "Mask", $LVTVIM_TILESIZE)
        $iFlags = $LVTVIF_AUTOSIZE
        If $iTileWidth <> Default Then
                $iFlags = BitOR($iFlags, $LVTVIF_FIXEDWIDTH)
                DllStructSetData($tLVTVI, "X", $iTileWidth)
        EndIf
        If $iTileHeight <> Default Then
                $iFlags = BitOR($iFlags, $LVTVIF_FIXEDHEIGHT)
                DllStructSetData($tLVTVI, "Y", $iTileHeight)
        EndIf
        DllStructSetData($tLVTVI, "Flags", $iFlags)
        If Not IsHWnd($hWnd) Then
                $fResult = GUICtrlSendMsg($hWnd, $LVM_SETTILEVIEWINFO, 0, DllStructGetPtr($tLVTVI))
        Else
                $fResult = _SendMessage($hWnd, $LVM_SETTILEVIEWINFO, 0, DllStructGetPtr($tLVTVI))
        EndIf
        Return $fResult <> 0
EndFunc

Func _GUICtrlListView_GetTileSize($hWnd)
        If $Debug_LV Then __UDF_ValidateClassName($hWnd, $__LISTVIEWCONSTANT_ClassName)
        Local $tLVTVI, $fResult, $aRet[2]
        $tLVTVI = DllStructCreate($tagLVTILEVIEWINFO)
        DllStructSetData($tLVTVI, "Size", DllStructGetSize($tLVTVI))
        DllStructSetData($tLVTVI, "Mask", $LVTVIM_TILESIZE)
        If Not IsHWnd($hWnd) Then
                $fResult = GUICtrlSendMsg($hWnd, $LVM_GETTILEVIEWINFO, 0, DllStructGetPtr($tLVTVI))
        Else
                $fResult = _SendMessage($hWnd, $LVM_GETTILEVIEWINFO, 0, DllStructGetPtr($tLVTVI))
        EndIf
        If Not $fResult Then Return SetError(1, 0, 0)
        If BitAND(DllStructGetData($tLVTVI, "Flags"), $LVTVIF_FIXEDWIDTH) Then
                $aRet[0] = DllStructGetData($tLVTVI, "X")
        Else
                $aRet[0] = Default
        EndIf
        If BitAND(DllStructGetData($tLVTVI, "Flags"), $LVTVIF_FIXEDHEIGHT) Then
                $aRet[1] = DllStructGetData($tLVTVI, "Y")
        Else
                $aRet[1] = Default
        EndIf
        Return $aRet
EndFunc

Func _GUICtrlListView_SetTileInfo($hWnd, $iItem, $aiCols, $iStart = 0)
        If $Debug_LV Then __UDF_ValidateClassName($hWnd, $__LISTVIEWCONSTANT_ClassName)
        Local $tLVTI, $tCols, $fResult
        $tLVTI = DllStructCreate($tagLVTILEINFO)
        DllStructSetData($tLVTI, "Size", DllStructGetSize($tLVTI))
        DllStructSetData($tLVTI, "Item", $iItem)
        DllStructSetData($tLVTI, "Count", UBound($aiCols) - $iStart)
        $tCols = DllStructCreate("uint[" & (UBound($aiCols) - $iStart) & "]")
        For $i = $iStart To UBound($aiCols) - 1
                DllStructSetData($tCols, 1, Int($aiCols[$i]), $i - $iStart + 1)
        Next
        DllStructSetData($tLVTI, "Columns", DllStructGetPtr($tCols))
        If Not IsHWnd($hWnd) Then
                $fResult = GUICtrlSendMsg($hWnd, $LVM_SETTILEINFO, 0, DllStructGetPtr($tLVTI))
        Else
                $fResult = _SendMessage($hWnd, $LVM_SETTILEINFO, 0, DllStructGetPtr($tLVTI))
        EndIf
        Return $fResult <> 0
EndFunc

本帖子中包含更多资源

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

×

评分

参与人数 2金钱 +100 收起 理由
tryhi + 80
黑色袜子 + 20 good~!

查看全部评分

 楼主| 发表于 2013-8-20 18:18:34 | 显示全部楼层
_GUICtrlListView_SetView($hListView, 4)
这个可以达到我的效果,但是设置不了宽度。
发表于 2013-8-20 22:30:46 | 显示全部楼层
没金币了~来求楼主贡献点。
发表于 2013-8-20 23:02:41 | 显示全部楼层
回复 3# 破帽遮颜

很有创意的代码

评分

参与人数 1金钱 +10 收起 理由
黑色袜子 + 10 哈哈,看来1000大洋还是挺值得的。

查看全部评分

 楼主| 发表于 2013-8-20 23:09:51 | 显示全部楼层
回复 4# 破帽遮颜


    还有个小问题:
能不能搞3行以及3行以上的?我刚才测试了下没搞出来。汗。
发表于 2013-8-20 23:17:50 | 显示全部楼层
回复 6# 黑色袜子

如果需要多行的话,建议自绘吧。
关于这种我有一个收藏代码,P大的,自绘view控件

本帖子中包含更多资源

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

×

评分

参与人数 1金钱 +20 收起 理由
黑色袜子 + 20 碉堡,辛苦了。

查看全部评分

 楼主| 发表于 2013-8-20 23:22:43 | 显示全部楼层
回复 7# 破帽遮颜


    谢谢了。不知道钱到账没?
发表于 2013-8-20 23:30:16 | 显示全部楼层
呵呵~一直抽着没钱呢~现在有了,谢谢楼主

评分

参与人数 1金钱 +10 收起 理由
黑色袜子 + 10 看10L再帮帮忙吧。嘿嘿

查看全部评分

 楼主| 发表于 2013-8-20 23:41:53 | 显示全部楼层
回复 9# 破帽遮颜


    哈哈,是我谢谢你才对,还有个问题,就是
GUIRegisterMsg($WM_NOTIFY, "WM_NOTIFY")
无效了。
还有就是
$menu = GUICtrlCreateContextMenu($ListView1)
这个菜单也没了。汗
 楼主| 发表于 2013-8-20 23:54:08 | 显示全部楼层
回复 9# 破帽遮颜


    解决了。不好意思,我用回GUICtrlCreateListView这个函数创建就OK了
发表于 2013-8-24 14:40:08 | 显示全部楼层
可以去官网找哈
您需要登录后才可以回帖 登录 | 加入

本版积分规则

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

GMT+8, 2024-5-10 21:21 , Processed in 0.097770 second(s), 29 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

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