找回密码  加入

AUTOIT CN

搜索
查看: 7763|回复: 62

ListView 子项目原地编辑复制修改导入数据库

[复制链接]
发表于 2015-8-26 13:38:00 | 显示全部楼层 |阅读模式
ListView 子项目原地编辑复制修改导入数据库
功能介绍
右键单击条目,显示条目信息到输入框。
右键双击条目,显示条目信息到编辑框。关闭列表。
左键双击子项目框,原地编辑。
左键双击子项目框后,右键单击子项目框,显示复制。
可将列表全部数据添加导入数据库。
可将一条数据添加导入数据库。
可将列表全部修改数据后导入数据库。
可将列表<金额>单列修改数据后导入<合计>数据库。






N年前的读取ListView 某列导入数据库的想法,今天终于解决

本帖子中包含更多资源

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

x
 楼主| 发表于 2015-8-26 13:43:28 | 显示全部楼层
本帖最后由 chzj589 于 2015-8-26 14:01 编辑

回复 1# chzj589
谢取索要源码.....。
列表有排序功能,点击项目。
左键单击列表,可返回主窗口。
发表于 2015-8-26 13:53:27 | 显示全部楼层
感謝LZ分享,很精品.
发表于 2015-8-26 17:39:45 | 显示全部楼层
围观牛淫....
发表于 2015-8-26 22:21:16 | 显示全部楼层
不能下载??郁闷~
发表于 2015-8-28 17:17:33 | 显示全部楼层
能把源代码贴出来吗?谢谢!没有下载的权限!
发表于 2015-8-28 19:09:23 | 显示全部楼层
本帖最后由 水木子 于 2015-8-28 19:13 编辑

回复 1# chzj589
回复 5# cihren
回复 6# away2008

这是我的思路,希望对大家有帮助吧!
顺便卖个关子,留个问题给大家,代码如下,如果被编辑的项目在第一列并且第一列有复选框,怎么才能做得更美观呢?把你的思路(代码)贴上来吧!
  1. #include <WinAPI.au3>
  2. #include <GUIEdit.au3>
  3. #include <WinAPIEx.au3>
  4. #include <GuiListView.au3>
  5. #include <GuiImageList.au3>
  6. #include <FontConstants.au3>
  7. #include <GUIConstantsEx.au3>
  8. #include <WindowsConstants.au3>


  9. Global $Listview1, $hListview1, $Input1, $hEdit, $aHit, $aRect, $aPos
  10. Global $iHeight = 20

  11. $hWnd = GUICreate('Listview 子项目就地编辑', 600, 450)

  12. $Listview1 = GUICtrlCreateListView('', 5, 5, 590, 430, BitOR($LVS_REPORT, $WS_BORDER), BitOR($LVS_EX_CHECKBOXES, $LVS_EX_FULLROWSELECT))
  13. $hListview1 = GUICtrlGetHandle($Listview1)

  14. $hImage = _GUIImageList_Create(1, $iHeight)
  15. _GUICtrlListView_SetImageList($hListview1, $hImage, 1)

  16. For $i = 0 To 4
  17.         _GUICtrlListView_InsertColumn($hListview1, $i, 'Row ' & $i, 100)
  18. Next

  19. For $i = 0 To 4
  20.         _GUICtrlListView_AddItem($hListview1, 'Item ' & $i, $i)
  21.         _GUICtrlListView_AddSubItem($hListview1, $i, 'SubItem ' & 0, 1)
  22.         _GUICtrlListView_AddSubItem($hListview1, $i, 'SubItem ' & 1, 2)
  23.         _GUICtrlListView_AddSubItem($hListview1, $i, 'SubItem ' & 2, 3)
  24.         _GUICtrlListView_AddSubItem($hListview1, $i, 'SubItem ' & 3, 4)
  25. Next

  26. $hFont = _WinAPI_CreateFont($iHeight - 2, 0, 0, 0, 400, False, False, False, $DEFAULT_CHARSET, $OUT_DEFAULT_PRECIS, $CLIP_DEFAULT_PRECIS, $DEFAULT_QUALITY, 0, '微软雅黑')
  27. GUISetState()
  28. GUIRegisterMsg($WM_NOTIFY, 'WM_NOTIFY')
  29. GUIRegisterMsg($WM_COMMAND, 'WM_COMMAND')

  30. Do
  31. Until GUIGetMsg() = -3

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

  34.         $tNMHDR = DllStructCreate($tagNMHDR, $ilParam)
  35.         $hWndFrom = DllStructGetData($tNMHDR, 'hWndFrom')
  36.         $iCode = DllStructGetData($tNMHDR, 'Code')

  37.         Switch $iCode
  38.                 Case $NM_DBLCLK
  39.                         Global $aHit = _GUICtrlListView_SubItemHitTest($hListview1)
  40.                         If $aHit[0] <> -1 Then
  41.                                 Local $aRect = _GUICtrlListView_GetSubItemRect($hListview1, $aHit[0], $aHit[1])
  42.                                 Local $sItemText = _GUICtrlListView_GetItemText($hListview1, $aHit[0], $aHit[1])
  43.                                 Local $aPos = ControlGetPos($hWnd, '', $hListview1)
  44.                                 Local $iStyle = BitOR($WS_CHILD, $WS_VISIBLE, $ES_AUTOHSCROLL, $ES_LEFT)
  45.                                
  46.                                 $hEdit = _GUICtrlEdit_Create($hWnd, $sItemText, $aPos[0] + $aRect[0], $aPos[1] + $aRect[1], _GUICtrlListView_GetColumnWidth($hListview1, $aHit[1]), $iHeight, $iStyle)
  47.                                
  48.                                 _WinAPI_BringWindowToTop($hEdit)
  49.                                 _WinAPI_SetFont($hEdit, $hFont, True)
  50.                                 _GUICtrlEdit_SetMargins($hEdit, $EC_LEFTMARGIN, 4)
  51.                                
  52.                                 _WinAPI_SetFocus($hEdit)                               
  53.                                 _GUICtrlEdit_SetSel($hEdit, 0, -1)
  54.                         EndIf
  55.                 Case $NM_CLICK
  56.                        
  57.         EndSwitch
  58. EndFunc   ;==>WM_NOTIFY

  59. Func WM_COMMAND($hWnd, $iMsg, $iwParam, $ilParam)
  60.         Local $iCode = BitShift($iwParam, 16)
  61.         Local $nMsgID = BitAND($iwParam, 0x0000FFFF)
  62.         Switch $ilParam
  63.                 Case $hEdit
  64.                         Switch $iCode
  65.                                 Case $EN_KILLFOCUS
  66.                                         _SetItemText()
  67.                         EndSwitch
  68.         EndSwitch
  69.        
  70.         If $nMsgID = 1 And $hEdit <> '' Then
  71.                 _SetItemText()
  72.         EndIf
  73.        
  74.         Return $GUI_RUNDEFMSG
  75. EndFunc   ;==>WM_COMMAND

  76. Func _SetItemText()
  77.         $sItemText = _GUICtrlEdit_GetText($hEdit)
  78.         _GUICtrlListView_SetItemText($hListview1, $aHit[0], $sItemText, $aHit[1])
  79.         _WinAPI_DestroyWindow($hEdit)
  80. EndFunc   ;==>_SetItemText
复制代码
发表于 2015-8-28 19:44:03 | 显示全部楼层
本帖最后由 水木子 于 2015-8-28 23:58 编辑
如果被编辑的项目在第一列并且第一列有复选框,怎么才能做得更美观呢?
水木子 发表于 2015-8-28 19:09


呵呵!还是比较简单的,放上来和大家分享吧!(回复可见哦!)
游客,如果您要查看本帖隐藏内容请回复
 楼主| 发表于 2015-8-28 20:47:08 | 显示全部楼层
回复 8# 水木子

谢谢。这样可以返回列表了。
发表于 2015-9-2 09:28:06 | 显示全部楼层
回复 8# 水木子


    感谢分享
发表于 2015-9-3 08:12:43 | 显示全部楼层
感谢分享。
发表于 2015-9-5 07:42:10 | 显示全部楼层
学习下,学习下,学习下,
发表于 2015-9-15 16:04:38 | 显示全部楼层
本帖最后由 kk_lee69 于 2015-9-15 16:05 编辑

回复 1# chzj589

可以解決 我的問題

但是怪的是 我點擊兩下 修改後  點擊兩下別的位置   在修改後  點擊空白處

剛剛修改的就全部消失  回復成原來的

可惜 沒有源碼 可參考
 楼主| 发表于 2015-9-15 16:51:48 | 显示全部楼层
回复 14# kk_lee69

不会啊,要不你把代码发短信给我看看
 楼主| 发表于 2015-9-15 16:53:14 | 显示全部楼层
回复 15# chzj589
哦,我是说用“水大”8楼的代码
您需要登录后才可以回帖 登录 | 加入

本版积分规则

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

GMT+8, 2018-8-15 23:43 , Processed in 0.103510 second(s), 15 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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