zvvyt Posted August 29, 2012 Posted August 29, 2012 Hi there ya'll!What I've got is 2 GUIs being ontop of eachother, one being the others parent.The parent serves mostly as a background as the child is a bit smaller, transparent and contains a set of images/icons. The child GUI also has a scrollbar created by _GUIScrollbars_Generate.The problem I'm having is that in the parent GUI I have an inputbox, created by GUICtrlCreateInput, and as that inputbox got focus I want to be able to scroll the child GUI.I can't set the inputbox in the child instead as I guess it would be too much work moving it as I scroll along.As I'm having it now I manually have to click inside the child GUI to be able to scroll it, and then click inside the parent/inputbox to type again.Don't know if there's any other great solution to this. I just thought that a mouseover scroll be OK!If you got any other solution I'd happily take that aswell! Best regards,zvvyt
Moderators Melba23 Posted August 29, 2012 Moderators Posted August 29, 2012 zvvyt,You have been here long enough to know that your chances of a response are much higher if you include some code we can look at. I for one am not writing a whole bunch of code (that may not look anything like the code you have) just to test. So please post a short reproducer script and we will take a look. M23 Any of my own code posted anywhere on the forum is available for use by others without any restriction of any kind Open spoiler to see my UDFs: Spoiler ArrayMultiColSort ---- Sort arrays on multiple columnsChooseFileFolder ---- Single and multiple selections from specified path treeview listingDate_Time_Convert -- Easily convert date/time formats, including the language usedExtMsgBox --------- A highly customisable replacement for MsgBoxGUIExtender -------- Extend and retract multiple sections within a GUIGUIFrame ---------- Subdivide GUIs into many adjustable framesGUIListViewEx ------- Insert, delete, move, drag, sort, edit and colour ListView itemsGUITreeViewEx ------ Check/clear parent and child checkboxes in a TreeViewMarquee ----------- Scrolling tickertape GUIsNoFocusLines ------- Remove the dotted focus lines from buttons, sliders, radios and checkboxesNotify ------------- Small notifications on the edge of the displayScrollbars ----------Automatically sized scrollbars with a single commandStringSize ---------- Automatically size controls to fit textToast -------------- Small GUIs which pop out of the notification area
zvvyt Posted August 29, 2012 Author Posted August 29, 2012 (edited) That's true, sorry. I think that these parts are those that matter and are of interest. Poke me harder if you need more x) expandcollapse popup#include <ButtonConstants.au3> #include <GUIScrollbars_Ex.au3> #include <winapi.au3> Global $Icon_Selected[2]; $Icon_Selected[0] = Icon number ; $Icon_Selected[1] = Icon name $Icon_Select_Screen_Background = GUICreate("Icon Select Screen",765,400,-1,-1,$WS_MINIMIZEBOX + $ws_popup) GUICtrlCreatePic(@WorkingDir&"ImagesLayoutIcon Select.jpg",0,0,765,450,$BS_FLAT) $Icon_Update_Button = GUICtrlCreateButton("Check for new Icons",325,20,150,25) GUICtrlSetState(-1,$gui_show) $Icon_Name_Search = GUICtrlCreateInput("Enter name to search",500,20,125,25) GUICtrlSetState(-1,$gui_show) $Icon_Select_Screen_Minimize = GUICtrlCreateIcon("icons.dll","MINIMIZE",705,5,16,16) GUICtrlSetTip(-1,"Click to minimize") $Icon_Select_Screen_Close = GUICtrlCreateIcon("icons.dll","CLOSE",730,5,16,16) GUICtrlSetTip(-1,"Click to close") GUICtrlCreateLabel("",0,0,765,50,-1,$GUI_WS_EX_PARENTDRAG) ;The invisible bar that allows one to drag and move the Icon select screen-window GUICtrlSetBkColor(-1,$GUI_BKCOLOR_TRANSPARENT) $Icon_Select_Screen = GUICreate("",760,350,5,50,$ws_popup,bitor($WS_EX_MDICHILD, $WS_EX_LAYERED),$Icon_Select_Screen_Background) $ReadIcons = IniReadSection("List.ini","Icons") Add_Icons() Icon_Selection() Func Add_Icons() GUISwitch($Icon_Select_Screen) GUISetState(@sw_hide,$Icon_Select_Screen) _GUIScrollbars_Scroll_Page($Icon_Select_Screen,0,1) $Icon_Icon_Startcord_X = 10 $Icon_Icon_Startcord_Y = 10 $Row_Count = 0 $Icon_Icon_Cord_X = $Icon_Icon_Startcord_X $Icon_Icon_Cord_Y = $Icon_Icon_Startcord_Y for $1=1 to $ReadIcons[0][0] step +1 if $Row_Count = 10 Then $Icon_Icon_Cord_X = $Icon_Icon_Startcord_X $Icon_Icon_Cord_Y = $Icon_Icon_Cord_Y+74 $Row_count = 0 EndIf GUICtrlCreatePic(@WorkingDir&"ÖverflödigtIcons in numberstesticons"&$ReadIcons[$1][0]&".jpg",$Icon_Icon_Cord_X,$Icon_Icon_Cord_Y,64,64) $Icon_Icon_Cord_X = $Icon_Icon_Cord_X+64+$Icon_Icon_Startcord_X $Row_count=$Row_Count+1 Next if $Icon_Icon_Cord_Y+64>450 Then _GUIScrollbars_Generate($Icon_Select_Screen,"",$Icon_Icon_Cord_Y+64) _GUIScrollBars_ShowScrollBar($Icon_Select_Screen, $SB_VERT, False) EndIf GUISetBkColor(0xacbdef,$Icon_Select_Screen) _WINAPI_SetLayeredWindowAttributes($Icon_Select_Screen, 0xacbdef, 255) GUISetState(@sw_show,$Icon_Select_Screen) Icon_Selection() EndFunc func Icon_Selection() GUISetState(@sw_show,$Icon_Select_Screen) GUISetState(@sw_show,$Icon_Select_Screen_Background) if GUICtrlRead($Icon_Name_Search) = "" then GUICtrlSetState($Icon_Name_Search,$GUI_FOCUS) local $CSS_msg while 1 ;if WinActive($Icon_Select_Screen_Background) then WinActivate($Icon_Select_Screen) if GUICtrlRead($Icon_Name_Search) <> "" and GUICtrlRead($Icon_Name_Search) <> "Enter name to search" Then Clear_Icons($ReadIcons[0][0]) Icon_Name_Search() EndIf $CSS_msg = GUIGetMsg() if $CSS_msg>8 then ;MsgBox(0,"",guictrlgetstate($Icon_Name_Search)) ;MsgBox(0,"",$CSS_msg-8) $Icon_Selected[0]=$ReadIcons[$CSS_msg-8][0] $Icon_Selected[1]=$ReadIcons[$CSS_msg-8][1] MsgBox(0,"",$Icon_Selected[0]&" "&$Icon_Selected[1]) EndIf switch $CSS_msg case $Icon_Select_Screen_Minimize GUISetState(@sw_minimize,$Icon_Select_Screen_Background) case $Icon_Select_Screen_Close Exit case $Icon_Update_Button Icon_Update() EndSwitch WEnd EndFunc Edited August 29, 2012 by zvvyt
Moderators Melba23 Posted August 30, 2012 Moderators Posted August 30, 2012 zvvyt,That was fun! I tried to use the WindowFromPoint API function but the fact that the icon GUI is a child seemed to defeat it. So I have gone this rather less elegant way (look for the <<<<<<<<<<< lines as usual):expandcollapse popup#include <ButtonConstants.au3> #include <GUIScrollbars_Ex.au3> #include <winapi.au3> Global $fOver_Main = False ; <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< Global $Icon_Selected[2]; $Icon_Selected[0] = Icon number ; $Icon_Selected[1] = Icon name $Icon_Select_Screen_Background = GUICreate("zvvyt Build Creator for LoL - Icon Select Screen", 765, 400, -1, -1, $WS_MINIMIZEBOX + $ws_popup) ConsoleWrite($Icon_Select_Screen_Background & @CRLF) GUISetBkColor(0xFF0000) ;GUICtrlCreatePic(@WorkingDir & "ImagesLayoutIcon Select.jpg", 0, 0, 765, 450, $BS_FLAT) $Icon_Update_Button = GUICtrlCreateButton("Check for new Icons", 325, 20, 150, 25) GUICtrlSetState(-1, $gui_show) $Icon_Name_Search = GUICtrlCreateInput("Enter name to search", 500, 20, 125, 25) GUICtrlSetState(-1, $gui_show) $Icon_Select_Screen_Minimize = GUICtrlCreateIcon("icons.dll", "MINIMIZE", 705, 5, 16, 16) GUICtrlSetTip(-1, "Click to minimize") $Icon_Select_Screen_Close = GUICtrlCreateIcon("icons.dll", "CLOSE", 730, 5, 16, 16) GUICtrlSetTip(-1, "Click to close") GUICtrlCreateLabel("", 0, 0, 765, 50, -1, $GUI_WS_EX_PARENTDRAG) ;The invisible bar that allows one to drag and move the Icon select screen-window GUICtrlSetBkColor(-1, $GUI_BKCOLOR_TRANSPARENT) $Icon_Select_Screen = 0 GUISetState() $Icon_Select_Screen = GUICreate("", 755, 345, 5, 50, $ws_popup, BitOR($WS_EX_MDICHILD, $WS_EX_LAYERED), $Icon_Select_Screen_Background) ;$ReadIcons = IniReadSection("List.ini", "Icons") Add_Icons() ;Icon_Selection() While 1 Switch GUIGetMsg() Case $GUI_EVENT_CLOSE Exit EndSwitch $aCInfo = GUIGetCursorInfo($Icon_Select_Screen_Background) ; <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< If $aCInfo[1] < 50 Then If $fOver_Main = False Then GUICtrlSetState($Icon_Name_Search, $GUI_FOCUS) $fOver_Main = True EndIf Else $fOver_Main = False EndIf ; <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< WEnd Func Add_Icons() GUISwitch($Icon_Select_Screen) GUISetState(@SW_HIDE, $Icon_Select_Screen) ;_GUIScrollbars_Scroll_Page($Icon_Select_Screen, 0, 1) $Icon_Icon_Startcord_X = 10 $Icon_Icon_Startcord_Y = 10 $Row_Count = 0 $Icon_Icon_Cord_X = $Icon_Icon_Startcord_X $Icon_Icon_Cord_Y = $Icon_Icon_Startcord_Y For $1 = 1 To 100 If $Row_Count = 10 Then $Icon_Icon_Cord_X = $Icon_Icon_Startcord_X $Icon_Icon_Cord_Y = $Icon_Icon_Cord_Y + 74 $Row_Count = 0 EndIf GUICtrlCreateLabel("", $Icon_Icon_Cord_X, $Icon_Icon_Cord_Y, 64, 64) GUICtrlSetBkColor(-1, 0x00FF00) $Icon_Icon_Cord_X = $Icon_Icon_Cord_X + 64 + $Icon_Icon_Startcord_X $Row_Count = $Row_Count + 1 Next If $Icon_Icon_Cord_Y + 64 > 450 Then _GUIScrollbars_Generate($Icon_Select_Screen, "", $Icon_Icon_Cord_Y + 64) ;_GUIScrollBars_ShowScrollBar($Icon_Select_Screen, $SB_VERT, False) EndIf GUISetBkColor(0xacbdef, $Icon_Select_Screen) _WinAPI_SetLayeredWindowAttributes($Icon_Select_Screen, 0xacbdef, 255) GUISetState(@SW_SHOW, $Icon_Select_Screen) ;Icon_Selection() EndFunc ;==>Add_IconsI hope that helps. M23 Any of my own code posted anywhere on the forum is available for use by others without any restriction of any kind Open spoiler to see my UDFs: Spoiler ArrayMultiColSort ---- Sort arrays on multiple columnsChooseFileFolder ---- Single and multiple selections from specified path treeview listingDate_Time_Convert -- Easily convert date/time formats, including the language usedExtMsgBox --------- A highly customisable replacement for MsgBoxGUIExtender -------- Extend and retract multiple sections within a GUIGUIFrame ---------- Subdivide GUIs into many adjustable framesGUIListViewEx ------- Insert, delete, move, drag, sort, edit and colour ListView itemsGUITreeViewEx ------ Check/clear parent and child checkboxes in a TreeViewMarquee ----------- Scrolling tickertape GUIsNoFocusLines ------- Remove the dotted focus lines from buttons, sliders, radios and checkboxesNotify ------------- Small notifications on the edge of the displayScrollbars ----------Automatically sized scrollbars with a single commandStringSize ---------- Automatically size controls to fit textToast -------------- Small GUIs which pop out of the notification area
zvvyt Posted August 30, 2012 Author Posted August 30, 2012 (edited) First of all: What did you consider "fun"? x)And second:What you gave me actually functioned quite great, only that the inputbox only gets focus when the cursor is above the child GUI, not that the child GUI gets focus when that one is hovered.To get the child GUI to get focused when it's hovered I just added WinActivate($Icon_Select_Screen) to your function, so your function now looks like this:$aCInfo = GUIGetCursorInfo($Icon_Select_Screen_Background) ; <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< If $aCInfo[1] < 50 Then If $fOver_Main = False Then GUICtrlSetState($Icon_Name_Search, $GUI_FOCUS) $fOver_Main = True EndIf Else if $fOver_Main = False then Else if WinActive($Icon_Select_Screen_Background) then WinActivate($Icon_Select_Screen); ----------------------------------- $fOver_Main = False EndIf EndIf EndIf ; <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<AND (lol) by doing this I just noticed that when I have the script running in background my cursormovement on the forums trigger the function, activating the child GUI and makes it the top window >__<'EDIT: Is there else a possible, and not too hardcore, solution to register the scrollcommand when the inputbox and the background/parent GUI is active and send that to the not focused child GUI?2nd edit: Updated the script with "if WinActive($Icon_Select_Screen_Background)" to bypass the earlier problem. Edited August 30, 2012 by zvvyt
Moderators Melba23 Posted August 30, 2012 Moderators Posted August 30, 2012 zvvyt,only that the inputbox only gets focus when the cursor is above the child GUI, not that the child GUI gets focus when that one is hoveredBut the end result is the same, no? You can use the scrollbar without clicking in the child and the input gets focus when the mouse is not over the child. M23 Any of my own code posted anywhere on the forum is available for use by others without any restriction of any kind Open spoiler to see my UDFs: Spoiler ArrayMultiColSort ---- Sort arrays on multiple columnsChooseFileFolder ---- Single and multiple selections from specified path treeview listingDate_Time_Convert -- Easily convert date/time formats, including the language usedExtMsgBox --------- A highly customisable replacement for MsgBoxGUIExtender -------- Extend and retract multiple sections within a GUIGUIFrame ---------- Subdivide GUIs into many adjustable framesGUIListViewEx ------- Insert, delete, move, drag, sort, edit and colour ListView itemsGUITreeViewEx ------ Check/clear parent and child checkboxes in a TreeViewMarquee ----------- Scrolling tickertape GUIsNoFocusLines ------- Remove the dotted focus lines from buttons, sliders, radios and checkboxesNotify ------------- Small notifications on the edge of the displayScrollbars ----------Automatically sized scrollbars with a single commandStringSize ---------- Automatically size controls to fit textToast -------------- Small GUIs which pop out of the notification area
zvvyt Posted August 30, 2012 Author Posted August 30, 2012 But the end result is the same, no? You can use the scrollbar without clicking in the child and the input gets focus when the mouse is not over the child. Well .. Both yes and no I guess.It's true, now I don't need to click in either the inputbox nor in the child GUI to make the magic happen, but still I can't have the inputbox at focus and scroll at the same time x)Don't know if I'm wishing for the impossible by having them at 2 separate GUIs, but that was what I had my hopes for: Have both in focus at the same time-ish.Sorry if I made that unclear at start, but many thanks for this function and for opening my eyes to the usefulness of this! Best regards,
Moderators Melba23 Posted August 30, 2012 Moderators Posted August 30, 2012 zvvyt, Try this: expandcollapse popup#include <ButtonConstants.au3> #include <GUIScrollbars_Ex.au3> #include <winapi.au3> Global $Icon_Selected[2]; $Icon_Selected[0] = Icon number ; $Icon_Selected[1] = Icon name $Icon_Select_Screen_Background = GUICreate("zvvyt Build Creator for LoL - Icon Select Screen", 765, 400, -1, -1, $WS_MINIMIZEBOX + $ws_popup) ConsoleWrite($Icon_Select_Screen_Background & @CRLF) GUISetBkColor(0xFF0000) ;GUICtrlCreatePic(@WorkingDir & "ImagesLayoutIcon Select.jpg", 0, 0, 765, 450, $BS_FLAT) $Icon_Update_Button = GUICtrlCreateButton("Check for new Icons", 325, 20, 150, 25) GUICtrlSetState(-1, $gui_show) $Icon_Name_Search = GUICtrlCreateInput("Enter name to search", 500, 20, 125, 25) GUICtrlSetState(-1, $gui_show) $Icon_Select_Screen_Minimize = GUICtrlCreateIcon("icons.dll", "MINIMIZE", 705, 5, 16, 16) GUICtrlSetTip(-1, "Click to minimize") $Icon_Select_Screen_Close = GUICtrlCreateIcon("icons.dll", "CLOSE", 730, 5, 16, 16) GUICtrlSetTip(-1, "Click to close") GUICtrlCreateLabel("", 0, 0, 765, 50, -1, $GUI_WS_EX_PARENTDRAG) ;The invisible bar that allows one to drag and move the Icon select screen-window GUICtrlSetBkColor(-1, $GUI_BKCOLOR_TRANSPARENT) $Icon_Select_Screen = 0 GUISetState() $Icon_Select_Screen = GUICreate("", 755, 345, 5, 50, $ws_popup, BitOR($WS_EX_MDICHILD, $WS_EX_LAYERED), $Icon_Select_Screen_Background) ;$ReadIcons = IniReadSection("List.ini", "Icons") Add_Icons() ;Icon_Selection() While 1 Switch GUIGetMsg() Case $GUI_EVENT_CLOSE Exit Case $GUI_EVENT_PRIMARYUP ; <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< GUICtrlSetState($Icon_Name_Search, $GUI_FOCUS) EndSwitch WEnd Func Add_Icons() GUISwitch($Icon_Select_Screen) GUISetState(@SW_HIDE, $Icon_Select_Screen) ;_GUIScrollbars_Scroll_Page($Icon_Select_Screen, 0, 1) $Icon_Icon_Startcord_X = 10 $Icon_Icon_Startcord_Y = 10 $Row_Count = 0 $Icon_Icon_Cord_X = $Icon_Icon_Startcord_X $Icon_Icon_Cord_Y = $Icon_Icon_Startcord_Y For $1 = 1 To 100 If $Row_Count = 10 Then $Icon_Icon_Cord_X = $Icon_Icon_Startcord_X $Icon_Icon_Cord_Y = $Icon_Icon_Cord_Y + 74 $Row_Count = 0 EndIf GUICtrlCreateLabel("", $Icon_Icon_Cord_X, $Icon_Icon_Cord_Y, 64, 64) GUICtrlSetBkColor(-1, 0x00FF00) $Icon_Icon_Cord_X = $Icon_Icon_Cord_X + 64 + $Icon_Icon_Startcord_X $Row_Count = $Row_Count + 1 Next If $Icon_Icon_Cord_Y + 64 > 450 Then _GUIScrollbars_Generate($Icon_Select_Screen, "", $Icon_Icon_Cord_Y + 64) ;_GUIScrollBars_ShowScrollBar($Icon_Select_Screen, $SB_VERT, False) EndIf GUISetBkColor(0xacbdef, $Icon_Select_Screen) _WinAPI_SetLayeredWindowAttributes($Icon_Select_Screen, 0xacbdef, 255) GUISetState(@SW_SHOW, $Icon_Select_Screen) ;Icon_Selection() EndFunc ;==>Add_Icons Now you get the input in focus as soon as you finish scrolling. Better? M23 Any of my own code posted anywhere on the forum is available for use by others without any restriction of any kind Open spoiler to see my UDFs: Spoiler ArrayMultiColSort ---- Sort arrays on multiple columnsChooseFileFolder ---- Single and multiple selections from specified path treeview listingDate_Time_Convert -- Easily convert date/time formats, including the language usedExtMsgBox --------- A highly customisable replacement for MsgBoxGUIExtender -------- Extend and retract multiple sections within a GUIGUIFrame ---------- Subdivide GUIs into many adjustable framesGUIListViewEx ------- Insert, delete, move, drag, sort, edit and colour ListView itemsGUITreeViewEx ------ Check/clear parent and child checkboxes in a TreeViewMarquee ----------- Scrolling tickertape GUIsNoFocusLines ------- Remove the dotted focus lines from buttons, sliders, radios and checkboxesNotify ------------- Small notifications on the edge of the displayScrollbars ----------Automatically sized scrollbars with a single commandStringSize ---------- Automatically size controls to fit textToast -------------- Small GUIs which pop out of the notification area
zvvyt Posted August 30, 2012 Author Posted August 30, 2012 Now you get the input in focus as soon as you finish scrolling. Better? According to the help-file, "$GUI_EVENT_PRIMARYUP" is "the primary mouse button was released.", so that didn't work at all straightly pasted into the loop =/But the way you're thinking is the way I want it! Recognise when a scroll is done, switch to the window to scroll and when the scrolling is over, switch back to the box! Best regards,
Moderators Melba23 Posted August 30, 2012 Moderators Posted August 30, 2012 zvvyt,According to the help-file, "$GUI_EVENT_PRIMARYUP" is "the primary mouse button was released."And so when you release the mouse button after scrolling, the input is given the focus. that didn't work at all straightly pasted into the loopAre you telling me that the code I posted did not work? M23 Any of my own code posted anywhere on the forum is available for use by others without any restriction of any kind Open spoiler to see my UDFs: Spoiler ArrayMultiColSort ---- Sort arrays on multiple columnsChooseFileFolder ---- Single and multiple selections from specified path treeview listingDate_Time_Convert -- Easily convert date/time formats, including the language usedExtMsgBox --------- A highly customisable replacement for MsgBoxGUIExtender -------- Extend and retract multiple sections within a GUIGUIFrame ---------- Subdivide GUIs into many adjustable framesGUIListViewEx ------- Insert, delete, move, drag, sort, edit and colour ListView itemsGUITreeViewEx ------ Check/clear parent and child checkboxes in a TreeViewMarquee ----------- Scrolling tickertape GUIsNoFocusLines ------- Remove the dotted focus lines from buttons, sliders, radios and checkboxesNotify ------------- Small notifications on the edge of the displayScrollbars ----------Automatically sized scrollbars with a single commandStringSize ---------- Automatically size controls to fit textToast -------------- Small GUIs which pop out of the notification area
zvvyt Posted August 30, 2012 Author Posted August 30, 2012 And so when you release the mouse button after scrolling, the input is given the focus. Aah, now I see what you're after .. !In my script I've hid the scrollbar for the visual effect, meaning all my scrolling is handled by the mousewheel.Are you telling me that the code I posted did not work? For the way you ment it to work it worked like a charm! ^__^'Best regards,
Moderators Melba23 Posted August 30, 2012 Moderators Posted August 30, 2012 zvvyt, I've hid the scrollbar for the visual effect, meaning all my scrolling is handled by the mousewheelI see. When I hide the scrollbar on that example script I can use the mousewheel to scroll when the cursor is over the icons and the input remains focused throughout: expandcollapse popup#include <ButtonConstants.au3> #include <GUIScrollbars_Ex.au3> #include <winapi.au3> Global $Icon_Selected[2]; $Icon_Selected[0] = Icon number ; $Icon_Selected[1] = Icon name $Icon_Select_Screen_Background = GUICreate("zvvyt Build Creator for LoL - Icon Select Screen", 765, 400, -1, -1, $WS_MINIMIZEBOX + $ws_popup) ConsoleWrite($Icon_Select_Screen_Background & @CRLF) GUISetBkColor(0xFF0000) ;GUICtrlCreatePic(@WorkingDir & "ImagesLayoutIcon Select.jpg", 0, 0, 765, 450, $BS_FLAT) $Icon_Update_Button = GUICtrlCreateButton("Check for new Icons", 325, 20, 150, 25) $Icon_Name_Search = GUICtrlCreateInput("Enter name to search", 500, 20, 125, 25) $Icon_Select_Screen_Minimize = GUICtrlCreateIcon("icons.dll", "MINIMIZE", 705, 5, 16, 16) GUICtrlSetTip(-1, "Click to minimize") $Icon_Select_Screen_Close = GUICtrlCreateIcon("icons.dll", "CLOSE", 730, 5, 16, 16) GUICtrlSetTip(-1, "Click to close") GUICtrlCreateLabel("", 0, 0, 765, 50, -1, $GUI_WS_EX_PARENTDRAG) ;The invisible bar that allows one to drag and move the Icon select screen-window GUICtrlSetBkColor(-1, $GUI_BKCOLOR_TRANSPARENT) $Icon_Select_Screen = 0 GUISetState() $Icon_Select_Screen = GUICreate("", 755, 345, 5, 50, $ws_popup, BitOR($WS_EX_MDICHILD, $WS_EX_LAYERED), $Icon_Select_Screen_Background) ;$ReadIcons = IniReadSection("List.ini", "Icons") Add_Icons() ;Icon_Selection() GUICtrlSetState($Icon_Name_Search, $GUI_FOCUS) ; <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< While 1 Switch GUIGetMsg() Case $GUI_EVENT_CLOSE Exit Case $GUI_EVENT_PRIMARYUP ; <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< GUICtrlSetState($Icon_Name_Search, $GUI_FOCUS) EndSwitch WEnd Func Add_Icons() GUISwitch($Icon_Select_Screen) GUISetState(@SW_HIDE, $Icon_Select_Screen) ;_GUIScrollbars_Scroll_Page($Icon_Select_Screen, 0, 1) $Icon_Icon_Startcord_X = 10 $Icon_Icon_Startcord_Y = 10 $Row_Count = 0 $Icon_Icon_Cord_X = $Icon_Icon_Startcord_X $Icon_Icon_Cord_Y = $Icon_Icon_Startcord_Y For $1 = 1 To 100 If $Row_Count = 10 Then $Icon_Icon_Cord_X = $Icon_Icon_Startcord_X $Icon_Icon_Cord_Y = $Icon_Icon_Cord_Y + 74 $Row_Count = 0 EndIf GUICtrlCreateLabel("", $Icon_Icon_Cord_X, $Icon_Icon_Cord_Y, 64, 64) GUICtrlSetBkColor(-1, 0x00FF00) $Icon_Icon_Cord_X = $Icon_Icon_Cord_X + 64 + $Icon_Icon_Startcord_X $Row_Count = $Row_Count + 1 Next If $Icon_Icon_Cord_Y + 64 > 450 Then _GUIScrollbars_Generate($Icon_Select_Screen, "", $Icon_Icon_Cord_Y + 64) _GUIScrollBars_ShowScrollBar($Icon_Select_Screen, $SB_VERT, False) ; <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< EndIf GUISetBkColor(0xacbdef, $Icon_Select_Screen) _WinAPI_SetLayeredWindowAttributes($Icon_Select_Screen, 0xacbdef, 255) GUISetState(@SW_SHOW, $Icon_Select_Screen) ;Icon_Selection() EndFunc ;==>Add_Icons Is that not good enough? M23 Any of my own code posted anywhere on the forum is available for use by others without any restriction of any kind Open spoiler to see my UDFs: Spoiler ArrayMultiColSort ---- Sort arrays on multiple columnsChooseFileFolder ---- Single and multiple selections from specified path treeview listingDate_Time_Convert -- Easily convert date/time formats, including the language usedExtMsgBox --------- A highly customisable replacement for MsgBoxGUIExtender -------- Extend and retract multiple sections within a GUIGUIFrame ---------- Subdivide GUIs into many adjustable framesGUIListViewEx ------- Insert, delete, move, drag, sort, edit and colour ListView itemsGUITreeViewEx ------ Check/clear parent and child checkboxes in a TreeViewMarquee ----------- Scrolling tickertape GUIsNoFocusLines ------- Remove the dotted focus lines from buttons, sliders, radios and checkboxesNotify ------------- Small notifications on the edge of the displayScrollbars ----------Automatically sized scrollbars with a single commandStringSize ---------- Automatically size controls to fit textToast -------------- Small GUIs which pop out of the notification area
zvvyt Posted August 30, 2012 Author Posted August 30, 2012 When I hide the scrollbar on that example script I can use the mousewheel to scroll when the cursor is over the icons and the input remains focused throughout: Is that not good enough? Sadly, I won't get that to work for me =/ All I get is the inputbox in focus and I'm unable to scroll at all, because even if I click in the child the $GUI_EVENT_PRIMARYUP returns focus to the inputbox. I don't get what's wrong as you seem to get it to work =/ Here's my script from the first time I pasted it, updated with your codes. Tell me if you're able to identify the problem expandcollapse popup#include <ButtonConstants.au3> #include <GUIScrollbars_Ex.au3> #include <winapi.au3> Global $Icon_Selected[2]; $Icon_Selected[0] = Icon number ; $Icon_Selected[1] = Icon name ;Global $fOver_Main = True ; <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< $Icon_Select_Screen_Background = GUICreate("Icon Select Screen",765,400,-1,-1,$WS_MINIMIZEBOX + $ws_popup) GUICtrlCreatePic(@WorkingDir&"\Images\Layout\Icon Select.jpg",0,0,765,450,$BS_FLAT) $Icon_Update_Button = GUICtrlCreateButton("Check for new Icons",325,20,150,25) GUICtrlSetState(-1,$gui_show) $Icon_Name_Search = GUICtrlCreateInput("Enter name to search",500,20,125,25) GUICtrlSetState(-1,$gui_show) $Icon_Select_Screen_Minimize = GUICtrlCreateIcon("icons.dll","MINIMIZE",705,5,16,16) GUICtrlSetTip(-1,"Click to minimize") $Icon_Select_Screen_Close = GUICtrlCreateIcon("icons.dll","CLOSE",730,5,16,16) GUICtrlSetTip(-1,"Click to close") GUICtrlCreateLabel("",0,0,765,50,-1,$GUI_WS_EX_PARENTDRAG) ;The invisible bar that allows one to drag and move the Icon select screen-window GUICtrlSetBkColor(-1,$GUI_BKCOLOR_TRANSPARENT) $Icon_Select_Screen = GUICreate("",760,350,5,50,$ws_popup,bitor($WS_EX_MDICHILD, $WS_EX_LAYERED),$Icon_Select_Screen_Background) $ReadIcons = IniReadSection("List.ini","Icons") Add_Icon_Icons() Icon_Selection() Func Add_Icon_Icons() GUISwitch($Icon_Select_Screen) GUISetState(@sw_hide,$Icon_Select_Screen) _GUIScrollbars_Scroll_Page($Icon_Select_Screen,0,1) $Icon_Icon_Startcord_X = 10 $Icon_Icon_Startcord_Y = 10 $Row_Count = 0 $Icon_Icon_Cord_X = $Icon_Icon_Startcord_X $Icon_Icon_Cord_Y = $Icon_Icon_Startcord_Y for $1=1 to $ReadIcons[0][0] step +1 if $Row_Count = 10 Then $Icon_Icon_Cord_X = $Icon_Icon_Startcord_X $Icon_Icon_Cord_Y = $Icon_Icon_Cord_Y+74 $Row_count = 0 EndIf GUICtrlCreatePic(@WorkingDir&"\Överflödigt\Icons in numbers\test\icons\"&$ReadIcons[$1][0]&".jpg",$Icon_Icon_Cord_X,$Icon_Icon_Cord_Y,64,64) $Icon_Icon_Cord_X = $Icon_Icon_Cord_X+64+$Icon_Icon_Startcord_X $Row_count=$Row_Count+1 Next if $Icon_Icon_Cord_Y+64>450 Then _GUIScrollbars_Generate($Icon_Select_Screen,"",$Icon_Icon_Cord_Y+64) _GUIScrollBars_ShowScrollBar($Icon_Select_Screen, $SB_VERT, False) EndIf GUISetBkColor(0xacbdef,$Icon_Select_Screen) _WINAPI_SetLayeredWindowAttributes($Icon_Select_Screen, 0xacbdef, 255) GUISetState(@sw_show,$Icon_Select_Screen) Icon_Selection() EndFunc func Icon_Selection() GUISetState(@sw_show,$Icon_Select_Screen) GUISetState(@sw_show,$Icon_Select_Screen_Background) if GUICtrlRead($Icon_Name_Search) = "" then GUICtrlSetState($Icon_Name_Search,$GUI_FOCUS) local $CSS_msg GUICtrlSetState($Icon_Name_Search, $GUI_FOCUS); <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< while 1;$CSS_msg<10 ;if WinActive($Icon_Select_Screen_Background) then WinActivate($Icon_Select_Screen) if GUICtrlRead($Icon_Name_Search) <> "" and GUICtrlRead($Icon_Name_Search) <> "Enter name to search" Then Clear_Icon_Icons($ReadIcons[0][0]) Icon_Name_Search() EndIf $CSS_msg = GUIGetMsg() if $CSS_msg>8 then ;MsgBox(0,"",guictrlgetstate($Icon_Name_Search)) ;MsgBox(0,"",$CSS_msg-8) $Icon_Selected[0]=$ReadIcons[$CSS_msg-8][0] $Icon_Selected[1]=$ReadIcons[$CSS_msg-8][1] MsgBox(0,"",$Icon_Selected[0]&" "&$Icon_Selected[1]) EndIf switch $CSS_msg case $Icon_Select_Screen_Minimize GUISetState(@sw_minimize,$Icon_Select_Screen_Background) case $Icon_Select_Screen_Close Exit case $Icon_Update_Button Icon_Update() Case $GUI_EVENT_PRIMARYUP ; <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< GUICtrlSetState($Icon_Name_Search, $GUI_FOCUS) EndSwitch #cs $aCInfo = GUIGetCursorInfo($Icon_Select_Screen_Background) ; <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< If $aCInfo[1] < 50 Then If $fOver_Main = False Then GUICtrlSetState($Icon_Name_Search, $GUI_FOCUS) $fOver_Main = True EndIf Else if $fOver_Main = False then Else ;if WinActive($Icon_Select_Screen_Background) then ;WinActivate($Icon_Select_Screen) $fOver_Main = False ; EndIf EndIf EndIf ; <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< #ce WEnd Return EndFunc I really appreciate you taking your time with me and my problem(s)! Best regards,
Moderators Melba23 Posted August 30, 2012 Moderators Posted August 30, 2012 zvvyt, This works as advertised for me - scrolls when the cursor is over the icons, with the input focused: expandcollapse popup#include <ButtonConstants.au3> #include <GUIScrollbars_Ex.au3> #include <winapi.au3> Global $Icon_Selected[2]; $Icon_Selected[0] = Icon number ; $Icon_Selected[1] = Icon name $Icon_Select_Screen_Background = GUICreate("zvvyt Build Creator for LoL - Icon Select Screen", 765, 400, -1, -1, $WS_MINIMIZEBOX + $ws_popup) GUISetBkColor(0xFF0000) ;GUICtrlCreatePic(@WorkingDir & "ImagesLayoutIcon Select.jpg", 0, 0, 765, 450, $BS_FLAT) $Icon_Update_Button = GUICtrlCreateButton("Check for new Icons", 325, 20, 150, 25) $Icon_Name_Search = GUICtrlCreateInput("Enter name to search", 500, 20, 125, 25) $Icon_Select_Screen_Minimize = GUICtrlCreateButton("MINIMIZE", 705, 5, 16, 16) GUICtrlSetTip(-1, "Click to minimize") $Icon_Select_Screen_Close = GUICtrlCreateButton("CLOSE", 730, 5, 16, 16) GUICtrlSetTip(-1, "Click to close") GUICtrlCreateLabel("", 0, 0, 765, 50, -1, $GUI_WS_EX_PARENTDRAG) ;The invisible bar that allows one to drag and move the Icon select screen-window GUICtrlSetBkColor(-1, $GUI_BKCOLOR_TRANSPARENT) $Icon_Select_Screen = GUICreate("", 755, 345, 5, 50, $ws_popup, BitOR($WS_EX_MDICHILD, $WS_EX_LAYERED), $Icon_Select_Screen_Background) ;$ReadIcons = IniReadSection("List.ini", "Icons") Add_Icons() Icon_Selection() Func Add_Icons() GUISwitch($Icon_Select_Screen) GUISetState(@SW_HIDE, $Icon_Select_Screen) ;_GUIScrollbars_Scroll_Page($Icon_Select_Screen, 0, 1) $Icon_Icon_Startcord_X = 10 $Icon_Icon_Startcord_Y = 10 $Row_Count = 0 $Icon_Icon_Cord_X = $Icon_Icon_Startcord_X $Icon_Icon_Cord_Y = $Icon_Icon_Startcord_Y For $1 = 1 To 100 If $Row_Count = 10 Then $Icon_Icon_Cord_X = $Icon_Icon_Startcord_X $Icon_Icon_Cord_Y = $Icon_Icon_Cord_Y + 74 $Row_Count = 0 EndIf GUICtrlCreateLabel("", $Icon_Icon_Cord_X, $Icon_Icon_Cord_Y, 64, 64) GUICtrlSetBkColor(-1, 0x00FF00) $Icon_Icon_Cord_X = $Icon_Icon_Cord_X + 64 + $Icon_Icon_Startcord_X $Row_Count = $Row_Count + 1 Next If $Icon_Icon_Cord_Y + 64 > 450 Then _GUIScrollbars_Generate($Icon_Select_Screen, "", $Icon_Icon_Cord_Y + 64) _GUIScrollBars_ShowScrollBar($Icon_Select_Screen, $SB_VERT, False) EndIf GUISetBkColor(0xacbdef, $Icon_Select_Screen) _WinAPI_SetLayeredWindowAttributes($Icon_Select_Screen, 0xacbdef, 255) EndFunc ;==>Add_Icons Func Icon_Selection() GUISetState(@SW_SHOW, $Icon_Select_Screen) GUISetState(@SW_SHOW, $Icon_Select_Screen_Background) ;If GUICtrlRead($Icon_Name_Search) = "" Then GUICtrlSetState($Icon_Name_Search, $GUI_FOCUS) Local $CSS_msg GUICtrlSetState($Icon_Name_Search, $GUI_FOCUS) While 1;$CSS_msg<10 ;if WinActive($Icon_Select_Screen_Background) then WinActivate($Icon_Select_Screen) If GUICtrlRead($Icon_Name_Search) <> "" And GUICtrlRead($Icon_Name_Search) <> "Enter name to search" Then ConsoleWrite("Searching icons" & @CRLF) ;Clear_Icon_Icons($ReadIcons[0][0]) ;Icon_Name_Search() EndIf $CSS_msg = GUIGetMsg() If $CSS_msg > 8 Then ;MsgBox(0,"",guictrlgetstate($Icon_Name_Search)) ;MsgBox(0,"",$CSS_msg-8) ;$Icon_Selected[0] = $ReadIcons[$CSS_msg - 8][0] ;$Icon_Selected[1] = $ReadIcons[$CSS_msg - 8][1] ;MsgBox(0, "", $Icon_Selected[0] & " " & $Icon_Selected[1]) ConsoleWrite("Icon selected" & @CRLF) EndIf Switch $CSS_msg Case $Icon_Select_Screen_Minimize GUISetState(@SW_MINIMIZE, $Icon_Select_Screen_Background) Case $Icon_Select_Screen_Close Exit Case $Icon_Update_Button ConsoleWrite("Updating" & @CRLF) ;Icon_Update() Case $GUI_EVENT_PRIMARYUP GUICtrlSetState($Icon_Name_Search, $GUI_FOCUS) EndSwitch WEnd EndFunc ;==>Icon_Selection M23 Any of my own code posted anywhere on the forum is available for use by others without any restriction of any kind Open spoiler to see my UDFs: Spoiler ArrayMultiColSort ---- Sort arrays on multiple columnsChooseFileFolder ---- Single and multiple selections from specified path treeview listingDate_Time_Convert -- Easily convert date/time formats, including the language usedExtMsgBox --------- A highly customisable replacement for MsgBoxGUIExtender -------- Extend and retract multiple sections within a GUIGUIFrame ---------- Subdivide GUIs into many adjustable framesGUIListViewEx ------- Insert, delete, move, drag, sort, edit and colour ListView itemsGUITreeViewEx ------ Check/clear parent and child checkboxes in a TreeViewMarquee ----------- Scrolling tickertape GUIsNoFocusLines ------- Remove the dotted focus lines from buttons, sliders, radios and checkboxesNotify ------------- Small notifications on the edge of the displayScrollbars ----------Automatically sized scrollbars with a single commandStringSize ---------- Automatically size controls to fit textToast -------------- Small GUIs which pop out of the notification area
zvvyt Posted August 30, 2012 Author Posted August 30, 2012 This works as advertised for me - scrolls when the cursor is over the icons, with the input focused: This is so frustrating .. Tested your script and it won't work for me =/ Don't know if this is OS-related now or if my computer just refuses to let it work, as I'm running latest version of AutoIt and scite.On a laptop running Windows 7 x64 if that would make any difference ..Best regards,
Moderators Melba23 Posted August 30, 2012 Moderators Posted August 30, 2012 zvvyt, I asked someone to test the script on their Win7 x64 box and it works for them too. So it must be you. M23 Any of my own code posted anywhere on the forum is available for use by others without any restriction of any kind Open spoiler to see my UDFs: Spoiler ArrayMultiColSort ---- Sort arrays on multiple columnsChooseFileFolder ---- Single and multiple selections from specified path treeview listingDate_Time_Convert -- Easily convert date/time formats, including the language usedExtMsgBox --------- A highly customisable replacement for MsgBoxGUIExtender -------- Extend and retract multiple sections within a GUIGUIFrame ---------- Subdivide GUIs into many adjustable framesGUIListViewEx ------- Insert, delete, move, drag, sort, edit and colour ListView itemsGUITreeViewEx ------ Check/clear parent and child checkboxes in a TreeViewMarquee ----------- Scrolling tickertape GUIsNoFocusLines ------- Remove the dotted focus lines from buttons, sliders, radios and checkboxesNotify ------------- Small notifications on the edge of the displayScrollbars ----------Automatically sized scrollbars with a single commandStringSize ---------- Automatically size controls to fit textToast -------------- Small GUIs which pop out of the notification area
zvvyt Posted August 30, 2012 Author Posted August 30, 2012 I guess then that you don't have a possible solution for this problem I'm now having then? or a workaround of some sort? x) Compiled the script and sent it to a friend of mine. Didn't work for him either =/
Moderators Melba23 Posted August 30, 2012 Moderators Posted August 30, 2012 (edited) zvvyt,you don't have a possible solutionAlas, no. As it works for me and an MVP on Win7 x64 I cannot really offer any more assistance, sorry. M23Edit: You could go back to the old script I posted at the beginning. Edit 2: Another MVP cannot get it to run on several systems - including Win7 x64 - so I am now even more confused. Edited August 30, 2012 by Melba23 Added second edit Any of my own code posted anywhere on the forum is available for use by others without any restriction of any kind Open spoiler to see my UDFs: Spoiler ArrayMultiColSort ---- Sort arrays on multiple columnsChooseFileFolder ---- Single and multiple selections from specified path treeview listingDate_Time_Convert -- Easily convert date/time formats, including the language usedExtMsgBox --------- A highly customisable replacement for MsgBoxGUIExtender -------- Extend and retract multiple sections within a GUIGUIFrame ---------- Subdivide GUIs into many adjustable framesGUIListViewEx ------- Insert, delete, move, drag, sort, edit and colour ListView itemsGUITreeViewEx ------ Check/clear parent and child checkboxes in a TreeViewMarquee ----------- Scrolling tickertape GUIsNoFocusLines ------- Remove the dotted focus lines from buttons, sliders, radios and checkboxesNotify ------------- Small notifications on the edge of the displayScrollbars ----------Automatically sized scrollbars with a single commandStringSize ---------- Automatically size controls to fit textToast -------------- Small GUIs which pop out of the notification area
zvvyt Posted August 30, 2012 Author Posted August 30, 2012 Alas, no. As it works for me and an MVP on Win7 x64 I cannot really offer any more assistance, sorry. Baah, alright. I totally understand that Edit: You could go back to the old script I posted at the beginning. Yea, I guess that's how it look at the moment.Edit 2: Another MVP cannot get it to run on several systems - including Win7 x64 - so I am now even more confused. Well, this actually makes me a bit "happy" that it's not only I and my machine that's having trouble! Did try to run my computer in safe mode aswell, in case I had another program running which caused this, but it did still behave the same.IF you come up with something or just "hears" something about this, would you mind posting here again or send me a PM about it? Most thankful for both your time and effort with this case! You guys are doing an excellent job on the forums!Best regards,zvvyt
zvvyt Posted September 9, 2012 Author Posted September 9, 2012 First of all: Sorry for doubleposting!And second: I just got the problem solved myself.What I did was I created a hidden inputbox by GUICtrlCreateInput which is automatically focused when the child GUI/"scroll gui" is focused. Then I just had it update the visually shown inputbox in the parent window as soon as its content was changed, so it's more or less like a hidden mirror of the shown inputbox!Just felt like telling in case someone else finds this thread with a problem similar to mine =)Best regards,zvvyt
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