找回密码
 加入
搜索
查看: 3463|回复: 2

[GUI管理] GUICtrlCreateListView 编辑问题

[复制链接]
发表于 2015-2-26 11:46:39 | 显示全部楼层 |阅读模式
求教  GUICtrlCreateListView 能不能像excel一样可以编辑(就是像里面写入数据).
#include <EditConstants.au3>
#include <GUIConstantsEx.au3>
#include <GUIListView.au3>
#include <ListViewConstants.au3>
#include <StaticConstants.au3>
#include <WindowsConstants.au3>
#Region ### START Koda GUI section ### Form=
$Form1 = GUICreate("Form1", 625, 451, 192, 124)
GUISetFont(14, 800, 0, "宋体")
$Label1 = GUICtrlCreateLabel("销售清单", 248, 8, 124, 33)
GUICtrlSetFont(-1, 22, 800, 0, "宋体")
$Label2 = GUICtrlCreateLabel("要货单位:", 8, 56, 67, 18)
GUICtrlSetFont(-1, 11, 400, 0, "宋体")
GUICtrlCreateInput("", 88, 48, 241, 27)
$Label3 = GUICtrlCreateLabel("发票号码:", 336, 56, 74, 18)
GUICtrlSetFont(-1, 11, 400, 0, "宋体")
GUICtrlCreateInput("", 416, 48, 201, 27)
$ListView1 = GUICtrlCreateListView("行号|商品名称|单位|数量|单价|金额", 16, 88, 586, 342, -1, BitOR($WS_EX_CLIENTEDGE,$LVS_EX_GRIDLINES,$LVS_EX_FULLROWSELECT))
;~ GUICtrlSendMsg(-1, $LVM_SETCOLUMNWIDTH, 0, 50)
;~ GUICtrlSendMsg(-1, $LVM_SETCOLUMNWIDTH, 1, 50)
;~ GUICtrlSendMsg(-1, $LVM_SETCOLUMNWIDTH, 2, 50)
;~ GUICtrlSendMsg(-1, $LVM_SETCOLUMNWIDTH, 3, 50)
;~ GUICtrlSendMsg(-1, $LVM_SETCOLUMNWIDTH, 4, 50)
;~ GUICtrlSendMsg(-1, $LVM_SETCOLUMNWIDTH, 5, 50)
;~ _GUICtrlListView_JustifyColumn(GUICtrlGetHandle($ListView1), 1, 2)
;~ GUICtrlSetCursor (-1, 2)
GUISetState(@SW_SHOW)
#EndRegion ### END Koda GUI section ###

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

        EndSwitch
WEnd
[img][/img]
发表于 2015-3-11 13:11:49 | 显示全部楼层
#include <GuiConstantsEx.au3>
#include <GuiListView.au3>
#include <GuiEdit.au3>
#include <WindowsConstants.au3>
#include <EditConstants.au3>
#include <WinAPI.au3>

Opt("GuiCloseOnESC", 0)

Global $hEdit, $Item = -1, $SubItem = 0

Global $Style = BitOR($WS_CHILD, $WS_VISIBLE, $WS_BORDER, $ES_AUTOHSCROLL, $ES_LEFT)

$hGUI = GUICreate("ListView Subitems edit in place", 300, 200)

$hListView = _GUICtrlListView_Create($hGUI, "Items|SubItems", 2, 2, 296, 196, BitOR($LVS_EDITLABELS, $LVS_REPORT))
_GUICtrlListView_SetExtendedListViewStyle($hListView, $LVS_EX_GRIDLINES)

For $i = 1 To 10
    _GUICtrlListView_AddItem($hListView, "Item " & $i)
    _GUICtrlListView_AddSubItem($hListView, $i - 1, "SubItem " & $i, 1)
Next

GUIRegisterMsg($WM_NOTIFY, "WM_NOTIFY")
GUIRegisterMsg($WM_COMMAND, "WM_COMMAND")

GUISetState()

Do
Until GUIGetMsg() = $GUI_EVENT_CLOSE

Func WM_NOTIFY($hWnd, $iMsg, $iwParam, $ilParam)
    Local $tNMHDR, $hWndFrom, $iCode

    $tNMHDR = DllStructCreate($tagNMHDR, $ilParam)
    $hWndFrom = DllStructGetData($tNMHDR, "hWndFrom")
    $iCode = DllStructGetData($tNMHDR, "Code")
    
    Switch $hWndFrom
        Case $hListView
            Switch $iCode
                Case $NM_DBLCLK
                    Local $aHit = _GUICtrlListView_SubItemHitTest($hListView)
                    If ($aHit[0] <> -1) And ($aHit[1] > 0) Then
                        $Item = $aHit[0]
                        $SubItem = $aHit[1]
                        Local $iSubItemText = _GUICtrlListView_GetItemText($hListView, $Item, $SubItem)
                        Local $aRect = _GUICtrlListView_GetSubItemRect($hListView, $Item, $SubItem)
                        $hEdit = _GUICtrlEdit_Create($hGUI, $iSubItemText, $aRect[0] + 1, $aRect[1] - 4, $aRect[2] - $aRect[0], 20, $Style)
                        _WinAPI_SetFocus($hEdit)
                    EndIf
            EndSwitch
    EndSwitch
        
    Return $GUI_RUNDEFMSG
EndFunc

Func WM_COMMAND($hWnd, $Msg, $wParam, $lParam)
    Local $iCode = BitShift($wParam, 16)
    
    Switch $lParam
        Case $hEdit
            Switch $iCode
                Case $EN_KILLFOCUS
                    Local $iText = _GUICtrlEdit_GetText($hEdit)
                    _GUICtrlListView_SetItemText($hListView, $Item, $iText, $SubItem)
                    _WinAPI_DestroyWindow($hEdit)
                    $Item = -1
                    $SubItem = 0
            EndSwitch
    EndSwitch
    
    Return $GUI_RUNDEFMSG
EndFunc
发表于 2015-3-11 14:38:22 | 显示全部楼层
回复 2# wwwangwen
原生函数也行,获取下句柄就行了
您需要登录后才可以回帖 登录 | 加入

本版积分规则

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

GMT+8, 2024-5-4 06:56 , Processed in 0.074262 second(s), 23 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

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