mrbig1479 Posted October 28, 2008 Posted October 28, 2008 hi here is the script expandcollapse popup#include <GuiConstants.au3> #include <GuiEdit.au3> #include <GuiListView.au3> #include <WindowsConstants.au3> #include <EditConstants.au3> #include <WinAPI.au3> Opt("GuiCloseOnESC", 0) $I=0 $SETS_CTRL_DATA="" $NUMBEROFSETS=46 Global $hEdit, $hDC, $hBrush, $Item = -1, $SubItem = 0 Global $Style = BitOR($WS_CHILD, $WS_VISIBLE, $ES_AUTOHSCROLL, $ES_LEFT) $hGUI =GUICreate("Price Editor", 689, 469, 201, 115) GUISetBkColor(0x00E0FFFF) $hListView = _GUICtrlListView_Create($hGUI, "", 10, 100, 496, 355, BitOR($LVS_EDITLABELS, $LVS_REPORT)) _GUICtrlListView_SetExtendedListViewStyle($hListView, $LVS_EX_GRIDLINES) _GUICtrlListView_InsertColumn($hListView, 0, "Card name", 180) _GUICtrlListView_InsertColumn($hListView, 1, "Sell price", 80) _GUICtrlListView_InsertColumn($hListView, 2, "foil sell price", 80) _GUICtrlListView_InsertColumn($hListView, 1, "Buy price", 80) _GUICtrlListView_InsertColumn($hListView, 2, "foil buy price", 80) $Button_Load = GUICtrlCreateButton("Load", 24, 24, 75, 25, 0) $Button_save = GUICtrlCreateButton("Save", 104, 24, 75, 25, 0) $Button_Delete = GUICtrlCreateButton("Delete", 184, 24, 75, 25, 0) $Combo_type = GUICtrlCreateCombo("Rares", 280, 24, 145, 25) GUICtrlSetData(-1, "Commons|Uncommons|Mystic", "Rares") $Combo_Sets = GUICtrlCreateCombo("ALA", 432, 24, 145, 25) While $I <= $NUMBEROFSETS - 1 $SETS_CTRL_DATA=$SETS_CTRL_DATA&Conert_set_to_number($I)&"|" $I=$I+1 WEnd $SETS_CTRL_DATA=StringTrimRight ($SETS_CTRL_DATA,1) GUICtrlSetData(-1, $SETS_CTRL_DATA, "ALA") GUICtrlCreateGroup("", -99, -99, 1, 1) GUICtrlSetOnEvent($Button_Load, "LOAD_EDITOR") GUICtrlSetOnEvent($Button_save, "SAVE_EDITOR") For $i = 1 To 43 _GUICtrlListView_AddItem($hListView, "Item" & $i) _GUICtrlListView_AddSubItem($hListView, $i - 1, "SubItem " & $i, 1) _GUICtrlListView_AddSubItem($hListView, $i - 1, "SubItem " & $i, 2) _GUICtrlListView_AddSubItem($hListView, $i - 1, "SubItem " & $i, 2) _GUICtrlListView_AddSubItem($hListView, $i - 1, "SubItem " & $i, 3) _GUICtrlListView_AddSubItem($hListView, $i - 1, "SubItem " & $i, 4) Next GUIRegisterMsg($WM_NOTIFY, "WM_NOTIFY") GUIRegisterMsg($WM_COMMAND, "WM_COMMAND") GUISetState(@SW_SHOW) Do $msg = GUIGetMsg() Until $msg = $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 = 0 Local $aRect = _GUICtrlListView_GetItemRect($hListView, $Item) ElseIf ($aHit[0] <> -1) And ($aHit[1] > 0) Then $Item = $aHit[0] $SubItem = $aHit[1] Local $aRect = _GUICtrlListView_GetSubItemRect($hListView, $Item, $SubItem) Else Return $GUI_RUNDEFMSG EndIf Local $iItemText = _GUICtrlListView_GetItemText($hListView, $Item, $SubItem) Local $iLen = _GUICtrlListView_GetStringWidth($hListView, $iItemText) $hEdit = _GUICtrlEdit_Create($hGUI, $iItemText, $aRect[0] + 3, $aRect[1], $iLen + 10, 17, $Style) _GUICtrlEdit_SetSel($hEdit, 0, -1) _WinAPI_SetFocus($hEdit) $hDC = _WinAPI_GetWindowDC($hEdit) $hBrush = _WinAPI_CreateSolidBrush(0x0000FF) FrameRect($hDC, 0, 0, $iLen + 10 , 17, $hBrush) EndSwitch EndSwitch Return $GUI_RUNDEFMSG EndFunc Func FrameRect($hDC, $nLeft, $nTop, $nRight, $nBottom, $hBrush) Local $stRect = DllStructCreate("int;int;int;int") DllStructSetData($stRect, 1, $nLeft) DllStructSetData($stRect, 2, $nTop) DllStructSetData($stRect, 3, $nRight) DllStructSetData($stRect, 4, $nBottom) DllCall("user32.dll", "int", "FrameRect", "hwnd", $hDC, "ptr", DllStructGetPtr($stRect), "hwnd", $hBrush) 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_DeleteObject($hBrush) _WinAPI_ReleaseDC($hEdit, $hDC) _WinAPI_DestroyWindow($hEdit) $Item = -1 $SubItem = 0 EndSwitch EndSwitch Return $GUI_RUNDEFMSG EndFunc Func Conert_set_to_number($ED) EndFunc FUNC LOAD_EDITOR () EndFunc FUNC SET_PRICE_ON_CONTROL($CARDNAME,$SELLING_PRICE,$SELLING_FOIL_PRICE ,$BUYING_PRICE,$BUYING_FOIL_PRICE) EndFunc FUNC SAVE_EDITOR () EndFunc when i double click on data to change it the bounding rectangle is in a higher position, also i need to click anywhere else for the data to change , can i use also "enter" to enter the data ? thanks
rasim Posted October 28, 2008 Posted October 28, 2008 Try this: expandcollapse popup#include <GuiConstants.au3> #include <GuiEdit.au3> #include <GuiListView.au3> #include <WindowsConstants.au3> #include <EditConstants.au3> #include <WinAPI.au3> Opt("GuiCloseOnESC", 0) $I=0 $SETS_CTRL_DATA="" $NUMBEROFSETS=46 Global $hEdit, $hDC, $hBrush, $Item = -1, $SubItem = 0 Global $Style = BitOR($WS_CHILD, $WS_VISIBLE, $ES_AUTOHSCROLL, $ES_LEFT) $hGUI =GUICreate("Price Editor", 689, 469, 201, 115) GUISetBkColor(0x00E0FFFF) $hListView = _GUICtrlListView_Create($hGUI, "", 10, 100, 496, 355, BitOR($LVS_EDITLABELS, $LVS_REPORT)) _GUICtrlListView_SetExtendedListViewStyle($hListView, $LVS_EX_GRIDLINES) _GUICtrlListView_InsertColumn($hListView, 0, "Card name", 180) _GUICtrlListView_InsertColumn($hListView, 1, "Sell price", 80) _GUICtrlListView_InsertColumn($hListView, 2, "foil sell price", 80) _GUICtrlListView_InsertColumn($hListView, 1, "Buy price", 80) _GUICtrlListView_InsertColumn($hListView, 2, "foil buy price", 80) $Button_Load = GUICtrlCreateButton("Load", 24, 24, 75, 25, 0) $Button_save = GUICtrlCreateButton("Save", 104, 24, 75, 25, 0) $Button_Delete = GUICtrlCreateButton("Delete", 184, 24, 75, 25, 0) $Combo_type = GUICtrlCreateCombo("Rares", 280, 24, 145, 25) GUICtrlSetData(-1, "Commons|Uncommons|Mystic", "Rares") $Combo_Sets = GUICtrlCreateCombo("ALA", 432, 24, 145, 25) While $I <= $NUMBEROFSETS - 1 $SETS_CTRL_DATA=$SETS_CTRL_DATA&Conert_set_to_number($I)&"|" $I=$I+1 WEnd $SETS_CTRL_DATA=StringTrimRight ($SETS_CTRL_DATA,1) GUICtrlSetData(-1, $SETS_CTRL_DATA, "ALA") GUICtrlCreateGroup("", -99, -99, 1, 1) GUICtrlSetOnEvent($Button_Load, "LOAD_EDITOR") GUICtrlSetOnEvent($Button_save, "SAVE_EDITOR") For $i = 1 To 43 _GUICtrlListView_AddItem($hListView, "Item" & $i) _GUICtrlListView_AddSubItem($hListView, $i - 1, "SubItem " & $i, 1) _GUICtrlListView_AddSubItem($hListView, $i - 1, "SubItem " & $i, 2) _GUICtrlListView_AddSubItem($hListView, $i - 1, "SubItem " & $i, 2) _GUICtrlListView_AddSubItem($hListView, $i - 1, "SubItem " & $i, 3) _GUICtrlListView_AddSubItem($hListView, $i - 1, "SubItem " & $i, 4) Next GUIRegisterMsg($WM_NOTIFY, "WM_NOTIFY") GUIRegisterMsg($WM_COMMAND, "WM_COMMAND") GUISetState(@SW_SHOW) Do $msg = GUIGetMsg() Until $msg = $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 = 0 Local $aRect = _GUICtrlListView_GetItemRect($hListView, $Item) ElseIf ($aHit[0] <> -1) And ($aHit[1] > 0) Then $Item = $aHit[0] $SubItem = $aHit[1] Local $aRect = _GUICtrlListView_GetSubItemRect($hListView, $Item, $SubItem) Else Return $GUI_RUNDEFMSG EndIf Local $iItemText = _GUICtrlListView_GetItemText($hListView, $Item, $SubItem) Local $iLen = _GUICtrlListView_GetStringWidth($hListView, $iItemText) Local $aCtlPos = ControlGetPos($hWnd, "", $hWndFrom) Local $iX = $aCtlPos[0] + $aRect[0] + 2 Local $iY = $aCtlPos[1] + $aRect[1] - 2 $hEdit = _GUICtrlEdit_Create($hGUI, $iItemText, $iX, $iY, $iLen + 10, 17, $Style) _GUICtrlEdit_SetSel($hEdit, 0, -1) _WinAPI_SetFocus($hEdit) $hDC = _WinAPI_GetWindowDC($hEdit) $hBrush = _WinAPI_CreateSolidBrush(0x0000FF) FrameRect($hDC, 0, 0, $iLen + 10 , 17, $hBrush) EndSwitch EndSwitch Return $GUI_RUNDEFMSG EndFunc Func FrameRect($hDC, $nLeft, $nTop, $nRight, $nBottom, $hBrush) Local $stRect = DllStructCreate("int;int;int;int") DllStructSetData($stRect, 1, $nLeft) DllStructSetData($stRect, 2, $nTop) DllStructSetData($stRect, 3, $nRight) DllStructSetData($stRect, 4, $nBottom) DllCall("user32.dll", "int", "FrameRect", "hwnd", $hDC, "ptr", DllStructGetPtr($stRect), "hwnd", $hBrush) 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_DeleteObject($hBrush) _WinAPI_ReleaseDC($hEdit, $hDC) _WinAPI_DestroyWindow($hEdit) $Item = -1 $SubItem = 0 EndSwitch EndSwitch Return $GUI_RUNDEFMSG EndFunc Func Conert_set_to_number($ED) EndFunc FUNC LOAD_EDITOR () EndFunc FUNC SET_PRICE_ON_CONTROL($CARDNAME,$SELLING_PRICE,$SELLING_FOIL_PRICE ,$BUYING_PRICE,$BUYING_FOIL_PRICE) EndFunc FUNC SAVE_EDITOR () EndFunc
mrbig1479 Posted October 28, 2008 Author Posted October 28, 2008 (edited) Try this: expandcollapse popup#include <GuiConstants.au3> #include <GuiEdit.au3> #include <GuiListView.au3> #include <WindowsConstants.au3> #include <EditConstants.au3> #include <WinAPI.au3> Opt("GuiCloseOnESC", 0) $I=0 $SETS_CTRL_DATA="" $NUMBEROFSETS=46 Global $hEdit, $hDC, $hBrush, $Item = -1, $SubItem = 0 Global $Style = BitOR($WS_CHILD, $WS_VISIBLE, $ES_AUTOHSCROLL, $ES_LEFT) $hGUI =GUICreate("Price Editor", 689, 469, 201, 115) GUISetBkColor(0x00E0FFFF) $hListView = _GUICtrlListView_Create($hGUI, "", 10, 100, 496, 355, BitOR($LVS_EDITLABELS, $LVS_REPORT)) _GUICtrlListView_SetExtendedListViewStyle($hListView, $LVS_EX_GRIDLINES) _GUICtrlListView_InsertColumn($hListView, 0, "Card name", 180) _GUICtrlListView_InsertColumn($hListView, 1, "Sell price", 80) _GUICtrlListView_InsertColumn($hListView, 2, "foil sell price", 80) _GUICtrlListView_InsertColumn($hListView, 1, "Buy price", 80) _GUICtrlListView_InsertColumn($hListView, 2, "foil buy price", 80) $Button_Load = GUICtrlCreateButton("Load", 24, 24, 75, 25, 0) $Button_save = GUICtrlCreateButton("Save", 104, 24, 75, 25, 0) $Button_Delete = GUICtrlCreateButton("Delete", 184, 24, 75, 25, 0) $Combo_type = GUICtrlCreateCombo("Rares", 280, 24, 145, 25) GUICtrlSetData(-1, "Commons|Uncommons|Mystic", "Rares") $Combo_Sets = GUICtrlCreateCombo("ALA", 432, 24, 145, 25) While $I <= $NUMBEROFSETS - 1 $SETS_CTRL_DATA=$SETS_CTRL_DATA&Conert_set_to_number($I)&"|" $I=$I+1 WEnd $SETS_CTRL_DATA=StringTrimRight ($SETS_CTRL_DATA,1) GUICtrlSetData(-1, $SETS_CTRL_DATA, "ALA") GUICtrlCreateGroup("", -99, -99, 1, 1) GUICtrlSetOnEvent($Button_Load, "LOAD_EDITOR") GUICtrlSetOnEvent($Button_save, "SAVE_EDITOR") For $i = 1 To 43 _GUICtrlListView_AddItem($hListView, "Item" & $i) _GUICtrlListView_AddSubItem($hListView, $i - 1, "SubItem " & $i, 1) _GUICtrlListView_AddSubItem($hListView, $i - 1, "SubItem " & $i, 2) _GUICtrlListView_AddSubItem($hListView, $i - 1, "SubItem " & $i, 2) _GUICtrlListView_AddSubItem($hListView, $i - 1, "SubItem " & $i, 3) _GUICtrlListView_AddSubItem($hListView, $i - 1, "SubItem " & $i, 4) Next GUIRegisterMsg($WM_NOTIFY, "WM_NOTIFY") GUIRegisterMsg($WM_COMMAND, "WM_COMMAND") GUISetState(@SW_SHOW) Do $msg = GUIGetMsg() Until $msg = $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 = 0 Local $aRect = _GUICtrlListView_GetItemRect($hListView, $Item) ElseIf ($aHit[0] <> -1) And ($aHit[1] > 0) Then $Item = $aHit[0] $SubItem = $aHit[1] Local $aRect = _GUICtrlListView_GetSubItemRect($hListView, $Item, $SubItem) Else Return $GUI_RUNDEFMSG EndIf Local $iItemText = _GUICtrlListView_GetItemText($hListView, $Item, $SubItem) Local $iLen = _GUICtrlListView_GetStringWidth($hListView, $iItemText) Local $aCtlPos = ControlGetPos($hWnd, "", $hWndFrom) Local $iX = $aCtlPos[0] + $aRect[0] + 2 Local $iY = $aCtlPos[1] + $aRect[1] - 2 $hEdit = _GUICtrlEdit_Create($hGUI, $iItemText, $iX, $iY, $iLen + 10, 17, $Style) _GUICtrlEdit_SetSel($hEdit, 0, -1) _WinAPI_SetFocus($hEdit) $hDC = _WinAPI_GetWindowDC($hEdit) $hBrush = _WinAPI_CreateSolidBrush(0x0000FF) FrameRect($hDC, 0, 0, $iLen + 10 , 17, $hBrush) EndSwitch EndSwitch Return $GUI_RUNDEFMSG EndFunc Func FrameRect($hDC, $nLeft, $nTop, $nRight, $nBottom, $hBrush) Local $stRect = DllStructCreate("int;int;int;int") DllStructSetData($stRect, 1, $nLeft) DllStructSetData($stRect, 2, $nTop) DllStructSetData($stRect, 3, $nRight) DllStructSetData($stRect, 4, $nBottom) DllCall("user32.dll", "int", "FrameRect", "hwnd", $hDC, "ptr", DllStructGetPtr($stRect), "hwnd", $hBrush) 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_DeleteObject($hBrush) _WinAPI_ReleaseDC($hEdit, $hDC) _WinAPI_DestroyWindow($hEdit) $Item = -1 $SubItem = 0 EndSwitch EndSwitch Return $GUI_RUNDEFMSG EndFunc Func Conert_set_to_number($ED) EndFunc FUNC LOAD_EDITOR () EndFunc FUNC SET_PRICE_ON_CONTROL($CARDNAME,$SELLING_PRICE,$SELLING_FOIL_PRICE ,$BUYING_PRICE,$BUYING_FOIL_PRICE) EndFunc FUNC SAVE_EDITOR () EndFunc Thanks a lot , i couldn't do it without your help. Edited October 28, 2008 by mrbig1479
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now