dannydy Posted February 7, 2012 Share Posted February 7, 2012 Hi guys,need some helps here. This is my coding, i created a listview which let users select from the list. Once they click on the list item i would like the list item to be displayed in the status bar._GUICtrlStatusBar_SetText($hStatusBar,guictrlread(GUICtrlRead($listview))) i coded in under the Do loop, but it keeps flickering. #include <WindowsConstants.au3>#include <GUIConstantsEx.au3>#include <Timers.au3>#include <GuiStatusBar.au3>#include <ProgressConstants.au3>Global $hStatusBar Local $hGUI, $iTimerProgress Local $aParts[3] = [100,25,-1]dim $Selection,$statuselectExample()Func Example() Local $listview, $button,$Cancel, $item1, $item2, $item3,$item4, $msg $hGUI = GUICreate("Test Summary Generation", 300, 250, 600, 500, -1, $WS_EX_ACCEPTFILES) GUISetBkColor(0x00E0FFFF) ; will change background color $listview = GUICtrlCreateListView("Test Summary Update ", 50,10, 200, 150);,$LVS_SORTDESCENDING) $button = GUICtrlCreateButton("OK", 75, 170, 70, 20) $Cancel = GUICtrlCreateButton("Cancel", 150, 170, 70, 20) $item1 = GUICtrlCreateListViewItem("item1", $listview) $item2 = GUICtrlCreateListViewItem("item2", $listview) $hStatusBar = _GUICtrlStatusBar_Create($hGUI, $aParts) _GUICtrlStatusBar_SetText($hStatusBar,@TAB & @TAB & StringFormat("%02d:%02d:%02d", @HOUR, @MIN, @SEC), 2) _GUICtrlStatusBar_SetText($hStatusBar,"No Selection") _Timer_SetTimer($hGUI, 1000, "_UpdateStatusBarClock") GUICtrlSetData($item1, "Exchange Online") GUICtrlSetData($item2, "OCS Wave 14") GUISetState() Do _GUICtrlStatusBar_SetText($hStatusBar,guictrlread(GUICtrlRead($listview))) $msg = GUIGetMsg() Select Case $msg = $button ;MsgBox(0, "Selection Made", GUICtrlRead(GUICtrlRead($listview))) $Selection= guictrlread($listview) if $selection = 6 or $selection=7 Then local $answer=MsgBox(1, "Selection Made", GUICtrlRead(GUICtrlRead($listview))& @LF & "Note* You can Press {ECS} key to terminate program when generating the summary*") if $answer = 1 Then ExitLoop EndIf if $answer = 2 Then $rreturn = 00123 endif EndIf if $selection = 0 Then msgbox (16,"Please Select","No Selection") Elseif $rreturn = 00123 then else ExitLoop endif Case $msg = $listview MsgBox(0, "listview", "clicked=" & GUICtrlGetState($listview), 2) Case $msg = $GUI_EVENT_CLOSE Or $msg = $Cancel ;ExitLoop _Exit() EndSelect Until $msg = $GUI_EVENT_CLOSE EndFunc ;==>Example Func _UpdateStatusBarClock($hWnd, $Msg, $iIDTimer, $dwTime) #forceref $hWnd, $Msg, $iIDTimer, $dwTime _GUICtrlStatusBar_SetText($hStatusBar, @TAB & @TAB & StringFormat("%02d:%02d:%02d", @HOUR, @MIN, @SEC), 2)EndFunc ;==>_UpdateStatusBarClock Link to comment Share on other sites More sharing options...
hannes08 Posted February 7, 2012 Share Posted February 7, 2012 Hello dannydy, you can use the [autoit] and [ /autoit] tags to have a better view of your code in the forum. To your question, I'd ceck whether the value has changed before I'd update the statusbar on every turn. Regards,Hannes[spoiler]If you can't convince them, confuse them![/spoiler] Link to comment Share on other sites More sharing options...
Guest Posted February 7, 2012 Share Posted February 7, 2012 (edited) That is because you are updating the control too often. Here fixed code: expandcollapse popup#include <WindowsConstants.au3> #include <GUIConstantsEx.au3> #include <Timers.au3> #include <GuiStatusBar.au3> #include <ProgressConstants.au3> #include <GuiListView.au3> Global $hStatusBar, $LWSelectedICurrent = -1 Local $hGUI, $iTimerProgress Local $aParts[3] = [100,25,-1] dim $Selection,$statuselect Example() Func Example() Local $listview, $button,$Cancel, $item1, $item2, $item3,$item4, $msg $hGUI = GUICreate("Test Summary Generation", 300, 250, 600, 500, -1, $WS_EX_ACCEPTFILES) GUISetBkColor(0x00E0FFFF) ; will change background color $listview = GUICtrlCreateListView("Test Summary Update ", 50,10, 200, 150);,$LVS_SORTDESCENDING) $button = GUICtrlCreateButton("OK", 75, 170, 70, 20) $Cancel = GUICtrlCreateButton("Cancel", 150, 170, 70, 20) $item1 = GUICtrlCreateListViewItem("item1", $listview) $item2 = GUICtrlCreateListViewItem("item2", $listview) $hStatusBar = _GUICtrlStatusBar_Create($hGUI, $aParts) _GUICtrlStatusBar_SetText($hStatusBar,@TAB & @TAB & StringFormat("%02d:%02d:%02d", @HOUR, @MIN, @SEC), 2) _GUICtrlStatusBar_SetText($hStatusBar,"No Selection") _Timer_SetTimer($hGUI, 1000, "_UpdateStatusBarClock") GUICtrlSetData($item1, "Exchange Online") GUICtrlSetData($item2, "OCS Wave 14") GUISetState() Do $LWSelectedI = _GUICtrlListView_GetSelectedIndices($listview, True) If $LWSelectedI[0] <> 0 Then If $LWSelectedI[1] <> $LWSelectedICurrent Then _GUICtrlStatusBar_SetText($hStatusBar,_GUICtrlListView_GetItemTextString($listview ,$LWSelectedI[1])) $LWSelectedICurrent = $LWSelectedI[1] EndIf EndIf $msg = GUIGetMsg() Select Case $msg = $button ;MsgBox(0, "Selection Made", GUICtrlRead(GUICtrlRead($listview))) $Selection= guictrlread($listview) if $selection = 6 or $selection=7 Then local $answer=MsgBox(1, "Selection Made", _GUICtrlListView_GetItemTextString($listview ,$LWSelectedICurrent) & @LF & "Note* You can Press {ECS} key to terminate program when generating the summary*") if $answer = 1 Then ExitLoop EndIf if $answer = 2 Then $rreturn = 00123 endif EndIf if $selection = 0 Then msgbox (16,"Please Select","No Selection") Elseif $rreturn = 00123 then else ExitLoop endif Case $msg = $listview MsgBox(0, "listview", "clicked=" & GUICtrlGetState($listview), 2) Case $msg = $GUI_EVENT_CLOSE Or $msg = $Cancel ;ExitLoop _Exit() EndSelect Until $msg = $GUI_EVENT_CLOSE EndFunc ;==>Example Func _UpdateStatusBarClock($hWnd, $Msg, $iIDTimer, $dwTime) #forceref $hWnd, $Msg, $iIDTimer, $dwTime _GUICtrlStatusBar_SetText($hStatusBar, @TAB & @TAB & StringFormat("%02d:%02d:%02d", @HOUR, @MIN, @SEC), 2) EndFunc ;==>_UpdateStatusBarClock Edited February 7, 2012 by Guest Link to comment Share on other sites More sharing options...
dannydy Posted February 7, 2012 Author Share Posted February 7, 2012 Many Thanks for taking the time to answer me. Your input means a lot. At least i dont need to get headache on this 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