Gyzmok Posted May 4, 2007 Share Posted May 4, 2007 Hi,I have a program that has a Listview in it.I use the UP and DOWN key to scroll through the values in the Listview.The data in the selected cel is displayed on the screen.Problem : since autoit v3.2.3.12(beta) I notice that when pressing the UP or DOWN keyFAST enough, the data displayed above the Listview sometimes is not synchronized with thedata in the Listview. ( _IsPressed is not detected fast enough ? )This is a simplified version to simulate the problem :expandcollapse popup;Autoit beta version v3.2.3.12(beta) #include <GUIConstants.au3> #include <GuiListView.au3> #include <Misc.au3> $GUI = GuiCreate("Listview",270,400,-1,-1) $mylist = GUICtrlCreateListView("Val1|Val2|Val3", 45, 50, 200, 310, _ BitOR($LVS_SHOWSELALWAYS,$LVS_REPORT), _ BitOR($LVS_EX_FULLROWSELECT,$LVS_EX_CHECKBOXES, $LVS_EX_FLATSB )) $label1 = GUICtrlCreateLabel("",70,10,50,20) $label2 = GUICtrlCreateLabel("",110,10,50,20) $label3 = GUICtrlCreateLabel("",150,10,50,20) for $i = 1 to 50 _GUICtrlListViewInsertItem($mylist,$i-1,$i&"|"&$i&"|"&$i) next GUISetState(@SW_SHOW,$gui) While 1 $msg = GuiGetMsg() Select Case $msg = $GUI_EVENT_CLOSE Exit Case Else EndSelect If _IsPressed("26")and BitAnd(WinGetState("Listview", ""), 8) Then; UP key _getinfo() EndIf If _IsPressed("28")and BitAnd(WinGetState("Listview", ""), 8) Then; DOWN key _getinfo() EndIf WEnd Func _getinfo() $data = _GUICtrlListViewGetItemTextArray($mylist,-1) _setdata($label1,$data[1]) _setdata($label2,$data[2]) _setdata($label3,$data[3]) EndFunc ;==>_getinfo() ; Func _setdata($label,$field) GUICtrlSetData($label,$field) EndFunc ;==>_setdata($field,$label)The problem only occurs when pressing the UP or DOWN key FAST enough !and is very noticeable in Autoit v3.2.3.12(beta)Is there a better (possibly WM_Notify_Event ?) way to make sure the UP and DOWN keypress and the data displayed above the Listview stay synchronized ? D2charkeeper = No more 'expired characters' in D2.File Date Changer = Change the file date(s), attributes and the filename case of multiple files @ once.Updater_full = Copy/Update your autoitscripts, pictures, .mp3, .avi etc ... subdirs from your PC to your memory stick or to your external harddisk. Now with scheduling and logging.Questmapper Link to comment Share on other sites More sharing options...
martin Posted May 4, 2007 Share Posted May 4, 2007 This isn't what youasked for but it would fix it. The problem is caused because the key press is too fast for every one to be detected by GuiGetMsg(). If processing the key takes longer than the key repeat period then you're fighting a loosing battle, so I expect that this approach might be the easiest way out. expandcollapse popup;Autoit beta version v3.2.3.12(beta) #include <GUIConstants.au3> #include <GuiListView.au3> #include <Misc.au3> $GUI = GuiCreate("Listview",270,400,-1,-1) $mylist = GUICtrlCreateListView("Val1|Val2|Val3", 45, 50, 200, 310, _ BitOR($LVS_SHOWSELALWAYS,$LVS_REPORT), _ BitOR($LVS_EX_FULLROWSELECT,$LVS_EX_CHECKBOXES, $LVS_EX_FLATSB )) $label1 = GUICtrlCreateLabel("",70,10,50,20) $label2 = GUICtrlCreateLabel("",110,10,50,20) $label3 = GUICtrlCreateLabel("",150,10,50,20) $pend = 0 for $i = 1 to 50 _GUICtrlListViewInsertItem($mylist,$i-1,$i&"|"&$i&"|"&$i) next GUISetState(@SW_SHOW,$gui) $pend = TimerInit();[color="#FF0000"];<---------------added[/color] While 1 #region of extra code If TimerDiff($pend) > 300 Then _getinfo() $pend = TimerInit() EndIf #endregion of extra code $msg = GuiGetMsg() Select Case $msg = $GUI_EVENT_CLOSE Exit Case Else EndSelect If _IsPressed("26")and BitAnd(WinGetState("Listview", ""), 8) Then; UP key _getinfo() ;$pend = 1 EndIf If _IsPressed("28")and BitAnd(WinGetState("Listview", ""), 8) Then; DOWN key _getinfo() ;$oend = 1 EndIf WEnd Func _getinfo() $data = _GUICtrlListViewGetItemTextArray($mylist,-1) If Not IsArray($data) Then Return;[color="#FF0000"]<------need to add this[/color] _setdata($label1,$data[1]) _setdata($label2,$data[2]) _setdata($label3,$data[3]) EndFunc ;==>_getinfo() ; Func _setdata($label,$field) GUICtrlSetData($label,$field) EndFunc ;==>_setdata($field,$label) Serial port communications UDF Includes functions for binary transmission and reception.printing UDF Useful for graphs, forms, labels, reports etc.Add User Call Tips to SciTE for functions in UDFs not included with AutoIt and for your own scripts.Functions with parameters in OnEvent mode and for Hot Keys One function replaces GuiSetOnEvent, GuiCtrlSetOnEvent and HotKeySet.UDF IsConnected2 for notification of status of connected state of many urls or IPs, without slowing the script. Link to comment Share on other sites More sharing options...
pdaughe Posted May 6, 2007 Share Posted May 6, 2007 This, If _IsPressed("26")and BitAnd(WinGetState("Listview", ""), 8) Then oÝ÷ Ø(ºW^ƶ+&¢·Æ§²+Þ¶§jëh×6 If _IsPressed("26")and WinActive ($GUI) Then Paul Link to comment Share on other sites More sharing options...
martin Posted May 6, 2007 Share Posted May 6, 2007 This, If _IsPressed("26")and BitAnd(WinGetState("Listview", ""), 8) Then oÝ÷ Ø(ºW^ƶ+&¢·Æ§²+Þ¶§jëh×6 If _IsPressed("26")and WinActive ($GUI) Then Paul Maybe it's less expensive but I don't think it will work. You need to check that the listview has focus when the Up or Down key is pressed otherwise you change the list when you don't mean to. Serial port communications UDF Includes functions for binary transmission and reception.printing UDF Useful for graphs, forms, labels, reports etc.Add User Call Tips to SciTE for functions in UDFs not included with AutoIt and for your own scripts.Functions with parameters in OnEvent mode and for Hot Keys One function replaces GuiSetOnEvent, GuiCtrlSetOnEvent and HotKeySet.UDF IsConnected2 for notification of status of connected state of many urls or IPs, without slowing the script. Link to comment Share on other sites More sharing options...
Gyzmok Posted May 8, 2007 Author Share Posted May 8, 2007 (edited) Thanks for the reply. The program was originally compiled with version V.3.2.1.14(beta) and there was no problem in that version, even when hitting UP and DOWN fast ... Altough the _ispressed() code in the Misc.au3 did not change in the V.3.2.3.12(beta), there is a significant difference... So, there must be something else that is causing this slower behaviour. Anyway, Martin I like your creative solution to the problem and have changed my code into : (simplified for simulation) expandcollapse popup;Autoit beta version v3.2.3.12(beta) #include <GUIConstants.au3> #include <GuiListView.au3> #include <Misc.au3> $GUI = GuiCreate("Listview",270,400,-1,-1) $mylist = GUICtrlCreateListView("Val1|Val2|Val3", 45, 50, 200, 310, _ BitOR($LVS_SHOWSELALWAYS,$LVS_REPORT), _ BitOR($LVS_EX_FULLROWSELECT,$LVS_EX_CHECKBOXES, $LVS_EX_FLATSB )) $label1 = GUICtrlCreateLabel("",70,10,50,20) $label2 = GUICtrlCreateLabel("",110,10,50,20) $label3 = GUICtrlCreateLabel("",150,10,50,20) $pend = 0 $index_sel = -1;;<---------------added for $i = 1 to 50 _GUICtrlListViewInsertItem($mylist,$i-1,$i&"|"&$i&"|"&$i) next GUISetState(@SW_SHOW,$gui) $pend = TimerInit() While 1 ; do _getinfo only when window is active and timer has expired If TimerDiff($pend) > 300 and BitAnd(WinGetState("Listview", ""), 8) Then _getinfo() $pend = TimerInit() EndIf $msg = GuiGetMsg() Select Case $msg = $GUI_EVENT_CLOSE Exit ;Case ... ;Case ... ;... Case Else EndSelect ;no need for these anymore ... lose them ;~ If _IsPressed("26")and BitAnd(WinGetState("Listview", ""), 8) Then; UP key ;~ _getinfo() ;~ ;$pend = 1 ;~ EndIf ;~ If _IsPressed("28")and BitAnd(WinGetState("Listview", ""), 8) Then; DOWN key ;~ _getinfo() ;~ ;$oend = 1 ;~ EndIf WEnd Func _getinfo() ;refresh the data only when the index in the Listview changed $new_index = _GUICtrlListViewGetSelectedIndices($mylist) if $new_index <> $index_sel then $data = _GUICtrlListViewGetItemTextArray($mylist,-1) If Not IsArray($data) Then Return _setdata($label1,$data[1]) _setdata($label2,$data[2]) _setdata($label3,$data[3]) ;... ;... $index_sel = $new_index EndIf EndFunc ;==>_getinfo() ; Func _setdata($label,$field) GUICtrlSetData($label,$field) EndFunc ;==>_setdata($field,$label) Edited May 8, 2007 by Gyzmok D2charkeeper = No more 'expired characters' in D2.File Date Changer = Change the file date(s), attributes and the filename case of multiple files @ once.Updater_full = Copy/Update your autoitscripts, pictures, .mp3, .avi etc ... subdirs from your PC to your memory stick or to your external harddisk. Now with scheduling and logging.Questmapper Link to comment Share on other sites More sharing options...
GaryFrost Posted May 8, 2007 Share Posted May 8, 2007 Instead of using _IsPress might look at using Events, I.E. GuiRegisterMsg I believe is what is needed, not at home at the moment or I would bring up a scrap that probably has what you need, I think the event is call SelChange. I believe I posted it before on the forum. SciTE for AutoItDirections for Submitting Standard UDFs Don't argue with an idiot; people watching may not be able to tell the difference. Link to comment Share on other sites More sharing options...
Gyzmok Posted May 9, 2007 Author Share Posted May 9, 2007 Ok Gary,Indeed the best way is to use events ...I found the Selchange in one of your posts hereI tried to use it into my example, but I don't get it to work Has it something to do with the use of a Listview instead of a List ?Is one of the Listview Style options the cause ?Help would be appreciated...expandcollapse popup;Autoit beta version v3.2.3.12(beta) #include <GUIConstants.au3> #include <GuiListView.au3> #include <Misc.au3> Global Const $DebugIt = 1 Global Const $WM_COMMAND = 0x0111 $GUI = GuiCreate("Listview",270,400,-1,-1) $mylist = GUICtrlCreateListView("Val1|Val2|Val3", 45, 50, 200, 310, _ BitOR($LVS_SHOWSELALWAYS,$LVS_REPORT), _ BitOR($LVS_EX_FULLROWSELECT,$LVS_EX_CHECKBOXES, $LVS_EX_FLATSB )) $label1 = GUICtrlCreateLabel("",70,10,50,20) $label2 = GUICtrlCreateLabel("",110,10,50,20) $label3 = GUICtrlCreateLabel("",150,10,50,20) for $i = 1 to 50 _GUICtrlListViewInsertItem($mylist,$i-1,$i&"|"&$i&"|"&$i) next GUISetState(@SW_SHOW,$gui) GUIRegisterMsg($WM_COMMAND, "MY_WM_COMMAND") While 1 $msg = GuiGetMsg() Select Case $msg = $GUI_EVENT_CLOSE Exit Case Else EndSelect ;If _IsPressed("26")and BitAnd(WinGetState("Listview", ""), 8) Then; UP key ; _getinfo() ;EndIf ;If _IsPressed("28")and BitAnd(WinGetState("Listview", ""), 8) Then; DOWN key ; _getinfo() ;EndIf WEnd ; Func MY_WM_COMMAND($hWnd, $msg, $wParam, $lParam) Local $nNotifyCode = _HiWord($wParam) Local $nID = _LoWord($wParam) Local $hCtrl = $lParam Local Const $LBN_ERRSPACE = (-2); Local Const $LBN_SELCHANGE = 1; Local Const $LBN_DBLCLK = 2; Local Const $LBN_SELCANCEL = 3; Local Const $LBN_SETFOCUS = 4; Local Const $LBN_KILLFOCUS = 5; Switch $nID Case $mylist Switch $nNotifyCode ;Case $LBN_ERRSPACE ; _DebugPrint ("$LBN_ERRSPACE") Case $LBN_SELCHANGE _getinfo() ;_DebugPrint ("$LBN_SELCHANGE") ;Case $LBN_SELCANCEL ; _DebugPrint ("$LBN_SELCANCEL") ;Case $LBN_SETFOCUS ; _DebugPrint ("$LBN_SETFOCUS") ;Case $LBN_KILLFOCUS ; _DebugPrint ("$LBN_KILLFOCUS") ;Case $LBN_DBLCLK ; List_DoubleClick() EndSwitch EndSwitch ; Proceed the default Autoit3 internal message commands. ; You also can complete let the line out. ; !!! But only 'Return' (without any value) will not proceed ; the default Autoit3-message in the future !!! Return $GUI_RUNDEFMSG EndFunc ;==>MY_WM_COMMAND ; Func _HiWord($x) Return BitShift($x, 16) EndFunc ;==>_HiWord ; Func _LoWord($x) Return BitAND($x, 0xFFFF) EndFunc ;==>_LoWord ; Func _getinfo() $data = _GUICtrlListViewGetItemTextArray($mylist,-1) If Not IsArray($data) Then Return _setdata($label1,$data[1]) _setdata($label2,$data[2]) _setdata($label3,$data[3]) EndFunc ;==>_getinfo() ; Func _setdata($label,$field) GUICtrlSetData($label,$field) EndFunc ;==>_setdata($field,$label) D2charkeeper = No more 'expired characters' in D2.File Date Changer = Change the file date(s), attributes and the filename case of multiple files @ once.Updater_full = Copy/Update your autoitscripts, pictures, .mp3, .avi etc ... subdirs from your PC to your memory stick or to your external harddisk. Now with scheduling and logging.Questmapper Link to comment Share on other sites More sharing options...
GaryFrost Posted May 9, 2007 Share Posted May 9, 2007 Can't help you at this time, not at my home pc. But you need to use the events from Listview not ListBox.Take a look at http://msdn.microsoft.com/library/default....iew/reflist.aspgo to List-View Control Reference, then notifications. SciTE for AutoItDirections for Submitting Standard UDFs Don't argue with an idiot; people watching may not be able to tell the difference. Link to comment Share on other sites More sharing options...
Gyzmok Posted May 9, 2007 Author Share Posted May 9, 2007 Ok, thanks Gary.You are right, I had to use the $WM_NOTIFY for Listview instead of the $WM_COMMAND ...I think the $LVN_ITEMCHANGED notification will do the job.The solution was in another post from you in this topic : HereI changed the simplified example code into this : expandcollapse popup;Autoit beta version v3.2.3.12(beta) #include <GUIConstants.au3> #include <GuiListView.au3> ;#include <Misc.au3> ;Global $ListView Global Const $WM_NOTIFY = 0x004E ;Global Const $DebugIt = 1 ;ListView Events Global Const $NM_FIRST = 0 Global Const $NM_LAST = (-99) Global Const $NM_OUTOFMEMORY = ($NM_FIRST - 1) Global Const $NM_CLICK = ($NM_FIRST - 2) Global Const $NM_DBLCLK = ($NM_FIRST - 3) Global Const $LVN_FIRST = -100; Global Const $LVN_ITEMCHANGED = ($LVN_FIRST-1); $GUI = GuiCreate("Listview",270,400,-1,-1) $mylist = GUICtrlCreateListView("Val1|Val2|Val3", 45, 50, 200, 310, _ BitOR($LVS_SHOWSELALWAYS,$LVS_REPORT), _ BitOR($LVS_EX_FULLROWSELECT,$LVS_EX_CHECKBOXES, $LVS_EX_FLATSB )) $label1 = GUICtrlCreateLabel("",70,10,50,20) $label2 = GUICtrlCreateLabel("",110,10,50,20) $label3 = GUICtrlCreateLabel("",150,10,50,20) for $i = 1 to 50 _GUICtrlListViewInsertItem($mylist,$i-1,$i&"|"&$i&"|"&$i) next GUISetState(@SW_SHOW,$gui) ;Register WM_NOTIFY events GUIRegisterMsg($WM_NOTIFY, "WM_Notify_Events") While 1 $msg = GuiGetMsg() Select Case $msg = $GUI_EVENT_CLOSE Exit Case Else EndSelect ;If _IsPressed("26")and BitAnd(WinGetState("Listview", ""), 8) Then; UP key ; _getinfo() ;EndIf ;If _IsPressed("28")and BitAnd(WinGetState("Listview", ""), 8) Then; DOWN key ; _getinfo() ;EndIf WEnd ; ; WM_NOTIFY event handler Func WM_Notify_Events($hWndGUI, $MsgID, $wParam, $lParam) #forceref $hWndGUI, $MsgID, $wParam Local $tagNMHDR, $event, $hwndFrom, $code $tagNMHDR = DllStructCreate("int;int;int", $lParam) ;NMHDR (hwndFrom, idFrom, code) If @error Then Return $event = DllStructGetData($tagNMHDR, 3) Select Case $wParam = $mylist Select ;Case $event = $NM_CLICK ; ListView_Click () ;Case $event = $NM_DBLCLK ; ListView_DoubleClick () Case $event = $LVN_ITEMCHANGED _getinfo() EndSelect EndSelect $tagNMHDR = 0 $event = 0 $lParam = 0 EndFunc ;==>WM_Notify_Events ; Func _getinfo() $data = _GUICtrlListViewGetItemTextArray($mylist,-1) If Not IsArray($data) Then Return _setdata($label1,$data[1]) _setdata($label2,$data[2]) _setdata($label3,$data[3]) EndFunc ;==>_getinfo() ; Func _setdata($label,$field) GUICtrlSetData($label,$field) EndFunc ;==>_setdata($field,$label)This really seems to be the best solution to be sure the UP and DOWN key-presses are all detected inside the Listview.The scroll speed is also great.Thanks ! D2charkeeper = No more 'expired characters' in D2.File Date Changer = Change the file date(s), attributes and the filename case of multiple files @ once.Updater_full = Copy/Update your autoitscripts, pictures, .mp3, .avi etc ... subdirs from your PC to your memory stick or to your external harddisk. Now with scheduling and logging.Questmapper Link to comment Share on other sites More sharing options...
Gyzmok Posted May 14, 2007 Author Share Posted May 14, 2007 I am having "second thoughts" about using the $LVN_ITEMCHANGED event notification for this problem.In the above simple example it works fine.But in a larger application it gets messy.The problem is : the $LVN_ITEMCHANGED notification comes ALOT !When (re)populating the Listview with new values (GUICtrlListViewInsertItem), the $LVN_ITEMCHANGED is called all the time !You could solve this by setting a switch (condition).But also when pushing UP and DOWN, the $LVN_ITEMCHANGED notification comes 3 times for each keypress !See also Here and HereI went back to a variant of the "timer" (previous) solution. D2charkeeper = No more 'expired characters' in D2.File Date Changer = Change the file date(s), attributes and the filename case of multiple files @ once.Updater_full = Copy/Update your autoitscripts, pictures, .mp3, .avi etc ... subdirs from your PC to your memory stick or to your external harddisk. Now with scheduling and logging.Questmapper Link to comment Share on other sites More sharing options...
GaryFrost Posted May 15, 2007 Share Posted May 15, 2007 Maybe: expandcollapse popup;Autoit beta version v3.2.3.12(beta) #include <GUIConstants.au3> #include <GuiListView.au3> ;#include <Misc.au3> ;Global $ListView Global Const $WM_NOTIFY = 0x004E ;Global Const $DebugIt = 1 ;ListView Events Global Const $NM_FIRST = 0 Global Const $NM_LAST = (-99) Global Const $NM_OUTOFMEMORY = ($NM_FIRST - 1) Global Const $NM_CLICK = ($NM_FIRST - 2) Global Const $NM_DBLCLK = ($NM_FIRST - 3) Global Const $LVN_FIRST = -100; Global Const $LVN_ITEMCHANGED = ($LVN_FIRST-1); $GUI = GuiCreate("Listview",270,400,-1,-1) $mylist = GUICtrlCreateListView("Val1|Val2|Val3", 45, 50, 200, 310, _ BitOR($LVS_SHOWSELALWAYS,$LVS_REPORT), _ BitOR($LVS_EX_FULLROWSELECT,$LVS_EX_CHECKBOXES, $LVS_EX_FLATSB )) $label1 = GUICtrlCreateLabel("",70,10,50,20) $label2 = GUICtrlCreateLabel("",110,10,50,20) $label3 = GUICtrlCreateLabel("",150,10,50,20) for $i = 1 to 50 _GUICtrlListViewInsertItem($mylist,$i-1,$i&"|"&$i&"|"&$i) next GUISetState(@SW_SHOW,$gui) ;Register WM_NOTIFY events GUIRegisterMsg($WM_NOTIFY, "WM_Notify_Events") While 1 $msg = GuiGetMsg() Select Case $msg = $GUI_EVENT_CLOSE Exit Case Else EndSelect ;If _IsPressed("26")and BitAnd(WinGetState("Listview", ""), 8) Then; UP key ; _getinfo() ;EndIf ;If _IsPressed("28")and BitAnd(WinGetState("Listview", ""), 8) Then; DOWN key ; _getinfo() ;EndIf WEnd ; ; WM_NOTIFY event handler Func WM_Notify_Events($hWndGUI, $MsgID, $wParam, $lParam) #forceref $hWndGUI, $MsgID, $wParam Local $tagNMHDR, $event, $hwndFrom, $code $tagNMHDR = DllStructCreate("int;int;int;uint;uint;uint;int;int", $lParam) ; NMHDR hdr; iItem; iSubItem; uNewState; uOldState; uChanged; ptAction; If @error Then Return $event = DllStructGetData($tagNMHDR, 3) Select Case $wParam = $mylist Select ;Case $event = $NM_CLICK ; ListView_Click () ;Case $event = $NM_DBLCLK ; ListView_DoubleClick () Case $event = $LVN_ITEMCHANGED If DllStructGetData($tagNMHDR, 6) = 3 And DllStructGetData($tagNMHDR, 7) = 0 And DllStructGetData($tagNMHDR, 8) = 8 Then _getinfo() EndSelect EndSelect $tagNMHDR = 0 $event = 0 $lParam = 0 Return $GUI_RUNDEFMSG EndFunc ;==>WM_Notify_Events ; Func _getinfo() ConsoleWrite("_getinfo" & @LF) $data = _GUICtrlListViewGetItemTextArray($mylist,-1) If Not IsArray($data) Then Return _setdata($label1,$data[1]) _setdata($label2,$data[2]) _setdata($label3,$data[3]) EndFunc ;==>_getinfo() ; Func _setdata($label,$field) GUICtrlSetData($label,$field) EndFunc ;==>_setdata($field,$label) SciTE for AutoItDirections for Submitting Standard UDFs Don't argue with an idiot; people watching may not be able to tell the difference. Link to comment Share on other sites More sharing options...
Gyzmok Posted May 15, 2007 Author Share Posted May 15, 2007 Yes ! this is what I was looking for.The _getinfo() is only called when needed (UP - DOWN - MOUSECLICK in the Listview)only once and not during population of the Listview !Very nice !I am 'trying' to understand :... If DllStructGetData($tagNMHDR, 6) = 3 And DllStructGetData($tagNMHDR, 7) = 0 And DllStructGetData($tagNMHDR, 8) = 8 Then ...I found thisPlease can you answer some of these questions ?Is DllStructGetData($tagNMHDR, 6) = uChanged ,DllStructGetData($tagNMHDR, 7) = ptAction and DllStructGetData($tagNMHDR, 8) = lParam ?How do you know what the respectively values 3,0 and 8 stands for ?Where can I find more information about the values of the members inside a 'struct' ?You are a great programmer ! D2charkeeper = No more 'expired characters' in D2.File Date Changer = Change the file date(s), attributes and the filename case of multiple files @ once.Updater_full = Copy/Update your autoitscripts, pictures, .mp3, .avi etc ... subdirs from your PC to your memory stick or to your external harddisk. Now with scheduling and logging.Questmapper Link to comment Share on other sites More sharing options...
GaryFrost Posted May 15, 2007 Share Posted May 15, 2007 Yes ! this is what I was looking for. The _getinfo() is only called when needed (UP - DOWN - MOUSECLICK in the Listview) only once and not during population of the Listview ! Very nice ! I am 'trying' to understand : ... If DllStructGetData($tagNMHDR, 6) = 3 And DllStructGetData($tagNMHDR, 7) = 0 And DllStructGetData($tagNMHDR, 8) = 8 Then ... oÝ÷ Øèºwn® NMHDR is 1 - 3 iItem - 4 iSubItem - 5 uNewState - 6 uOldState - 7 uChanged - 8 just did some testing to see what values I was looking for in which ones so it only fired 1 time. Gary SciTE for AutoItDirections for Submitting Standard UDFs Don't argue with an idiot; people watching may not be able to tell the difference. Link to comment Share on other sites More sharing options...
Gyzmok Posted May 16, 2007 Author Share Posted May 16, 2007 just did some testing to see what values I was looking for in which ones so it only fired 1 time.I understand TNX ! D2charkeeper = No more 'expired characters' in D2.File Date Changer = Change the file date(s), attributes and the filename case of multiple files @ once.Updater_full = Copy/Update your autoitscripts, pictures, .mp3, .avi etc ... subdirs from your PC to your memory stick or to your external harddisk. Now with scheduling and logging.Questmapper Link to comment Share on other sites More sharing options...
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