回复 27# kk_lee69
在xp下是没有这个问题的。
在win7下出现这种问题可以参考下面的代码。
Case $NM_DBLCLK ; 双击
$tInfo = DllStructCreate($tagNMITEMACTIVATE, $ilParam)
$iIndex = DllStructGetData($tInfo, "Index")
$iSub = DllStructGetData($tInfo, "SubItem")
$x = DllStructGetData($tInfo, "X")
If ($iIndex <> -1) And ($iSub >= 0) And ($x > 16) Then;点击的x>16才响应原地编辑
$Item = $iIndex
$SubItem = $iSub
;==========计算编辑框坐标
Local $aRect = _GUICtrlListView_GetSubItemRect($hListView, $iIndex, $iSub)
Local $iEdit_X = $aRect[0] + 4
Local $iEdit_Y = $aRect[1] + 3
Local $iEdit_Width = _GUICtrlListView_GetColumnWidth($hListView, $iSub) + 3
Local $iEdit_Height = $aRect[3] - $aRect[1] + 3
If $iSub = 0 Then
Local $i1 = 0, $i2 = 0
If (BitAND(_GUICtrlListView_GetExtendedListViewStyle($hListView), $LVS_EX_CHECKBOXES) = $LVS_EX_CHECKBOXES) Then $i1 = 18;判断是否有复选框
If _GUICtrlListView_GetImageList($hListView, 1) Then $i2 = 20;判断是否有分配图像列表到列表视图控件
$iEdit_X += ($i2 + $i1)
$iEdit_Width -= ($i2 + $i1)
EndIf
$hEdit = GUICtrlCreateInput($aShowdata[$iIndex][$iSub], $iEdit_X, $iEdit_Y, $iEdit_Width, $iEdit_Height, BitOR($WS_CHILD, $WS_VISIBLE, $ES_LEFT))
GUICtrlSetFont($hEdit, 12)
GUICtrlSetState($hEdit, $GUI_FOCUS)
$hEdit = GUICtrlGetHandle($hEdit)
Send("{RIGHT}") ;方向 →
;~ _GUICtrlEdit_SetSel($hEdit, 0, -1) ;全选编辑框文字
HotKeySet("{ENTER}", "_EndItemEdit");设置热键响应回车
EndIf
|