MarkStaver Posted September 9, 2014 Posted September 9, 2014 (edited) WOW THANK YOU!!!! You answered about five questions I was needed to fix at once My Russian and Czech much butter I'll keep my resizing, that is part of the code so destruction and recreation cause to many operations including external. "Apply" button created on $Form1 and it destructing parent GUI, loading data recreating new so there is no reason to hide it. Once again thank you. expandcollapse popup#include <array.au3> #include <date.au3> #include <WinAPI.au3> #include <GUIConstantsEx.au3> #include <GuiStatusBar.au3> #include <GuiToolbar.au3> #include <TabConstants.au3> #include <ToolbarConstants.au3> #include <WindowsConstants.au3> #include "GUIListViewEx.au3" ;#include "DateCalc.au3" #include <DateTimeConstants.au3> #include <StaticConstants.au3> #include "GUIScrollbars_Ex.au3" Global $LostPackagemsglist = 0, $LostPackagemsglist1 = 0, $iWidth = 700, $iHeight = 421 Global $Form1 = GUICreate("Form1", 700, 421, 100, 168, $WS_OVERLAPPEDWINDOW) GUICtrlSetResizing(-1, $GUI_DOCKMENUBAR) $MenuItem4 = GUICtrlCreateMenu("MenuItem4") $MenuItem5 = GUICtrlCreateMenu("MenuItem5") $MenuItem6 = GUICtrlCreateMenu("MenuItem6") $MenuItem7 = GUICtrlCreateMenu("MenuItem7") $ToolBar1 = _GUICtrlToolbar_Create($Form1, 0) _GUICtrlToolbar_AddButton($ToolBar1, 0, 0, 0) _GUICtrlToolbar_AddButton($ToolBar1, 0, 1, 0) _GUICtrlToolbar_AddButton($ToolBar1, 0, 2, 0) _GUICtrlToolbar_AddButton($ToolBar1, 0, 3, 0) _GUICtrlToolbar_AddButton($ToolBar1, 0, 4, 0) _GUICtrlToolbar_AddButton($ToolBar1, 0, 5, 0) Global $InformationTab = GUICtrlCreateTab(8, 27, 684, 257, $TCS_MULTILINE, $TCS_EX_FLATSEPARATORS) GUICtrlSetResizing(-1, $GUI_DOCKLEFT + $GUI_DOCKRIGHT + $GUI_DOCKTOP + $GUI_DOCKBOTTOM) $LostPackagemsglistTab = GUICtrlCreateTabItem("LostPackage") $ApplyLostPackageCalView = GUICtrlCreateButton("Apply", 487, 65, 50, 25) $LostDatamsglistTab = GUICtrlCreateTabItem("View LostData") $TabSheet2 = GUICtrlCreateTabItem("Edit LostData") $TabSheet3 = GUICtrlCreateTabItem("TabSheet3") $TabSheet4 = GUICtrlCreateTabItem("TabSheet4") GUICtrlCreateTabItem("") ; <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< Do not forget to close the tab definiton ; <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< No need to create inside the tab structure as it is a UDF control and we have to look after it $darectionCalListEdit = _GUICtrlListView_Create($Form1, "", 13, 98, 672, 150) ;,$LVS_SORTDESCENDING) ControlHide($Form1, "", $darectionCalListEdit) _GUICtrlListView_AddColumn($darectionCalListEdit, "Peter", 83) _GUICtrlListView_AddColumn($darectionCalListEdit, "Paul", 83) _GUICtrlListView_AddColumn($darectionCalListEdit, "Mary", 83) _GUICtrlListView_AddColumn($darectionCalListEdit, "Peter", 83) _GUICtrlListView_AddColumn($darectionCalListEdit, "Paul", 83) _GUICtrlListView_AddColumn($darectionCalListEdit, "Mary", 83) _GUICtrlListView_AddColumn($darectionCalListEdit, "Peter", 83) _GUICtrlListView_AddColumn($darectionCalListEdit, "Paul", 83) _GUICtrlListView_AddColumn($darectionCalListEdit, "Mary", 83) _GUICtrlListView_AddColumn($darectionCalListEdit, "Peter", 83) _GUICtrlListView_AddColumn($darectionCalListEdit, "Paul", 83) _GUICtrlListView_AddColumn($darectionCalListEdit, "Mary", 83) _GUICtrlListView_AddColumn($darectionCalListEdit, "Peter", 83) _GUICtrlListView_AddColumn($darectionCalListEdit, "Paul", 83) _GUICtrlListView_AddColumn($darectionCalListEdit, "Mary", 83) _GUICtrlListView_AddColumn($darectionCalListEdit, "Peter", 83) _GUICtrlListView_AddColumn($darectionCalListEdit, "Paul", 83) _GUICtrlListView_AddColumn($darectionCalListEdit, "Mary", 83) _GUICtrlListView_AddColumn($darectionCalListEdit, "Peter", 83) _GUICtrlListView_AddColumn($darectionCalListEdit, "Paul", 83) _GUICtrlListView_AddColumn($darectionCalListEdit, "Mary End", 83) GUISetState(@SW_SHOW) GUIRegisterMsg($WM_ENTERSIZEMOVE, "_WM_ENTERSIZEMOVE") GUIRegisterMsg($WM_EXITSIZEMOVE, "_WM_EXITSIZEMOVE") ;~ GUIRegisterMsg($WM_SIZE, "WM_SIZE") While 1 $nMsg = GUIGetMsg() Switch $nMsg Case $GUI_EVENT_CLOSE Exit Case $InformationTab ; <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< A rather simpler way to hide/show the 2 special items!! Switch GUICtrlRead($InformationTab) Case 0 ControlHide($Form1, "", $darectionCalListEdit) If IsHWnd($LostPackagemsglist) Then GUISetState(@SW_SHOW, $LostPackagemsglist) Case 2 ControlShow($Form1, "", $darectionCalListEdit) If IsHWnd($LostPackagemsglist) Then GUISetState(@SW_HIDE, $LostPackagemsglist) Case Else ControlHide($Form1, "", $darectionCalListEdit) If IsHWnd($LostPackagemsglist) Then GUISetState(@SW_HIDE, $LostPackagemsglist) EndSwitch Case $ApplyLostPackageCalView LoadLostPackagemsglist() Case $GUI_EVENT_MAXIMIZE ;<================================wlth that butter If IsHWnd($LostPackagemsglist) Then ; If so delete GUIDelete($LostPackagemsglist) $LostPackagemsglist1 = 99 EndIf Local $aSize = WinGetClientSize($Form1) $iWidth = $aSize[0] $iHeight = $aSize[1] If $LostPackagemsglist1 = 99 Then LoadLostPackagemsglist() EndIf _WinAPI_MoveWindow($darectionCalListEdit, 13, 98, $iWidth - 28, $iHeight - 250) If GUICtrlRead($InformationTab) <> 0 Then GUISetState(@SW_HIDE, $LostPackagemsglist) EndIf If GUICtrlRead($InformationTab) = 2 Then ControlShow($Form1, "", $darectionCalListEdit) EndIf Case $GUI_EVENT_RESTORE ;<================================wlth that butter If IsHWnd($LostPackagemsglist) Then ; If so delete GUIDelete($LostPackagemsglist) $LostPackagemsglist1 = 99 EndIf Local $aSize = WinGetClientSize($Form1) $iWidth = $aSize[0] $iHeight = $aSize[1] If $LostPackagemsglist1 = 99 Then LoadLostPackagemsglist() EndIf _WinAPI_MoveWindow($darectionCalListEdit, 13, 98, $iWidth - 28, $iHeight - 250) If GUICtrlRead($InformationTab) <> 0 Then GUISetState(@SW_HIDE, $LostPackagemsglist) EndIf If GUICtrlRead($InformationTab) = 2 Then ControlShow($Form1, "", $darectionCalListEdit) EndIf EndSwitch WEnd Func LoadLostPackagemsglist() ;==========================LostPackagemsglistArray====== Global $LostPackagemsglistArray Local $LostPackage1, $LostPackage2, $LostPackage3, $LostPackage4, $LostPackage5, $LostPackage6 ;==========================Createmsglist=============== $LostPackagemsglist = GUICreate("", $iWidth - 28, $iHeight - 250, 7, 93, $WS_POPUP, $WS_EX_MDICHILD, $Form1) GUISetState(@SW_SHOW) _GUIScrollbars_Generate($LostPackagemsglist, $iWidth + 1500, $iHeight + 1500, 0, 0, True) If @error Then MsgBox(16, "Error", "Scrollbar generation failed") Exit EndIf GUICtrlCreateLabel("", 0, 0, 500, 500) GUICtrlSetBkColor(-1, 0x00FF00) GUICtrlCreateLabel("", 500, 500, 500, 500) GUICtrlSetBkColor(-1, 0x00FF00) GUICtrlCreateLabel("", 0, 500, 500, 500) GUICtrlSetBkColor(-1, 0x0000FF) GUICtrlCreateLabel("", 500, 0, 500, 500) GUICtrlSetBkColor(-1, 0x0000FF) ; <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< Hide button to prevent multiple creations GUICtrlSetState($ApplyLostPackageCalView, $GUI_HIDE) EndFunc ;==>LoadLostPackagemsglist Func _WM_ENTERSIZEMOVE($hWnd, $Msg, $wParam, $lParam) ; <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< ; Has the child been created? If IsHWnd($LostPackagemsglist) Then ; If so delete GUIDelete($LostPackagemsglist) ; And set placeholder value to indicate we need to recreate it $LostPackagemsglist = 99 EndIf ; Hide the ListView ControlHide($Form1, "", $darectionCalListEdit) EndFunc Func _WM_EXITSIZEMOVE($hWnd, $Msg, $wParam, $lParam) ; <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< ; Get the new size Local $aSize = WinGetClientSize($Form1) $iWidth = $aSize[0] $iHeight = $aSize[1] ; Do we need to recreate the child? If $LostPackagemsglist = 99 Then LoadLostPackagemsglist() EndIf ; Reset the ListView _WinAPI_MoveWindow($darectionCalListEdit, 13, 98, $iWidth - 28, $iHeight - 250) ; Show if the tab is selected If GUICtrlRead($InformationTab) <> 0 Then GUISetState(@SW_HIDE, $LostPackagemsglist) EndIf If GUICtrlRead($InformationTab) = 2 Then ControlShow($Form1, "", $darectionCalListEdit) EndIf EndFunc $GUI_EVENT_RESTORE $GUI_EVENT_MAXIMIZE If GUICtrlRead($InformationTab) <> 0 Then GUISetState(@SW_HIDE, $LostPackagemsglist) EndIf If GUICtrlRead($InformationTab) = 2 Then ControlShow($Form1, "", $darectionCalListEdit) EndIf Why $LVS_SORTDESCENDING commented? Then if I un-commenting it list is not showing at all? Edited September 10, 2014 by Melba23
Moderators Melba23 Posted September 10, 2014 Author Moderators Posted September 10, 2014 MarkStaver,There is an "Edit" button on each post - if you continue to make several additions to a thread in but a few minutes, please learn how to use it. Here is my version of the MAXIMIZE/RESTORE code - basically you run a simplified version of the SIZE code. Case $GUI_EVENT_MAXIMIZE,$GUI_EVENT_RESTORE ; The same code runs for both ; Get the new size Local $aSize = WinGetClientSize($Form1) $iWidth = $aSize[0] $iHeight = $aSize[1] ; Has the child been created? If IsHWnd($LostPackagemsglist) Then ; If so delete... GUIDelete($LostPackagemsglist) ; ...and recreate the child LoadLostPackagemsglist() EndIf ; Reset the ListView _WinAPI_MoveWindow($darectionCalListEdit, 13, 98, $iWidth - 28, $iHeight - 250) ; Show if the tab is selected If GUICtrlRead($InformationTab) <> 0 Then GUISetState(@SW_HIDE, $LostPackagemsglist) EndIf If GUICtrlRead($InformationTab) = 2 Then ControlShow($Form1, "", $darectionCalListEdit) EndIfI did not comment out $LVS_SORTDESCENDING - it was like that in your original script. But if you want to set one specific style, you need to specify the other required styles as well (see the Setting Styles tutorial in the Wiki for more details) - so you need:$darectionCalListEdit = _GUICtrlListView_Create($Form1, "", 13, 98, 672, 150, BitOr($LVS_REPORT, $LVS_SORTDESCENDING))All clear? 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 Â
MarkStaver Posted September 10, 2014 Posted September 10, 2014 Yes! thank you Edit button was not active...Â
Moderators Melba23 Posted September 10, 2014 Author Moderators Posted September 10, 2014 MarkStaver, Edit button was not activeOops, I had forgotten that you needed a few posts before it appeared. Please accept my apologies. :blush:But promise to use it from now on! Glad you like the code. 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 Â
nomadicwolf Posted October 6, 2014 Posted October 6, 2014 (edited) Hello Melba23; While your Scrollbar code seems to work fairly well, I am having major issues with Minimixing and Restoring windows with scrollbars. If I create a scrollable area, move the SBs to the right and bottom extents, minimize then restore the window, the window is repainted from the 0,0 top left coordinate but the SBs are still at their right and bottom maximums. So, if I scroll back to the 'oringinal page 1" SB location there is just a lot of "whitspace" that has been added to the scroll area. As a simple fix I thought i would just reposition the SBs to the "page 1" location on a restore, but I cannot move the SBs at all on my system programatically (I can move them eith the mouse). Here is a simple example: expandcollapse popup#include <GuiConstants.au3> #include <GUIConstantsEx.au3> #include <GuiScrollBars.au3> #include "GUIScrollbars_Ex.au3" $hGui = GUICreate("Scrollbar Test GUI ", 800, 600) $str = "== 0123456798 == == 0123456798 == == 0123456798 == == 0123456798 == == 0123456798 ==" $label = GUICtrlCreateLabel($str, 100, 100, 1200, 50) $aTSSBRtcCodes = _GUIScrollbars_Generate($hGui, 1400, 900, True) GUISetState(@SW_SHOW, $hGui) ;sleep(3000) ;_GUIScrollbars_Scroll_Page($hGui,2,2) ; does NOT move SB ;if @error <> 0 Then ; ConsoleWrite(" _GUIScrollbars_Scroll_Page($hGui,2,2) FAILED, error = "& @error) ;EndIf While 1 $a_GuiMsgRtnCode = GUIGetMsg(1) Switch $a_GuiMsgRtnCode[0] ; this is the returned message Case $GUI_EVENT_CLOSE ; if exit is pressed, then close window GUIDelete($hGui) Exit Case $GUI_EVENT_MINIMIZE ConsoleWrite("Minimized"& @CRLF) Case $GUI_EVENT_RESTORE ConsoleWrite("Restore"& @CRLF) ;_GUIScrollbars_Scroll_Page($hGui,1,1) ; does NOT reset SB to page 1 ;_GUIScrollBars_SetScrollInfoPos($hGui, $SB_HORZ, 1) ; does NOT move SB EndSwitch WEnd There was an example on page 1 of this post that created a simple window with 2 columns of 100 checkboxes on a scrollable area, I tried that example with the same results: if you scroll right and down, then minimize and restore, the resultant displayed window and the scrollbars become "out of sync". Then I look at your examples and include files in more detail: I ran your GUIScrollbars_Ex_Example_1.au3 and when I click on the "Scroll" button nothing scrolls. After the 3 second delay (the 3 sleep(1000) lines) the aperture gui is deleted and a new one created, but the "programmatic SB movement" does not occur. I am using AuoIt:(3.3.12.0) and your latest zip file on 64 bit Win7. Any help would be greatly appreciated. Thank you.  Edited October 6, 2014 by nomadicwolf
Moderators Melba23 Posted October 7, 2014 Author Moderators Posted October 7, 2014 nomadicwolf, While your Scrollbar code seems to work fairly wellWhy thank you!  I am having major issues with Minimixing and Restoring windows with scrollbarsI take it you did not notice the _GUIScrollbars_Minimize/Restore functions? They are designed to resolve the very problem you mention - using them will make the scrollbars behave as you expect:#include <GUIConstantsEx.au3> #include "GUIScrollbars_Ex.au3" $hGui = GUICreate("Scrollbar Test GUI ", 800, 600) $str = "== 0123456798 == == 0123456798 == == 0123456798 == == 0123456798 == == 0123456798 ==" $label = GUICtrlCreateLabel($str, 100, 100, 1200, 50) $aTSSBRtcCodes = _GUIScrollbars_Generate($hGui, 1400, 900, True) GUISetState(@SW_SHOW, $hGui) While 1 $a_GuiMsgRtnCode = GUIGetMsg(1) Switch $a_GuiMsgRtnCode[0] ; this is the returned message Case $GUI_EVENT_CLOSE ; if exit is pressed, then close window GUIDelete($hGui) Exit Case $GUI_EVENT_MINIMIZE ConsoleWrite("Minimized"& @CRLF) _GUIScrollbars_Minimize($hGui) ; <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< Case $GUI_EVENT_RESTORE ConsoleWrite("Restore"& @CRLF) _GUIScrollbars_Restore($hGui) ; <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< EndSwitch WEndAs to the examples not running, I have just downloaded the zip in the first post and tested the contents. The examples run fine for me on x32 Win7 using 3.3.12.0 - or I would not have posted them. Can you please open your copy of GUIScrollBars.au3 (it will be in the standard AutoIt3Include folder) and check that the array declared in the first few lines reads:Global $__g_aSB_WindowInfo[1][8]Then look inside GUIScrollBarsEx.au3 (you know where that is) and check that in the first few lines there is an equivalent:Global $__g_aSB_WindowInfo[1][10]A change to that variable name forced the last update and I wonder if somehow you have got out of sync. 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 Â
nomadicwolf Posted October 7, 2014 Posted October 7, 2014 (edited) Good morning Melba23; First: as you can see that was only my 2nd post in the forums and I guess I was having newbie issues with the web editor yesterday as I got kicked out twice and had to retype everything (and was getting very fustrated), thus I did not give a full account of everything I attempted with this issue. So, yes, I did see and try your _GUIScrollbars_Minimize/Restore functions (in my main code, not the tiny example I pasted into the post) and they did not do anything either (in my case). With, or without, those functions the window was repainted the same. Yes; I do have the version of GUIScrollBars.au3 that has the (new) variable: $__g_aSB_WindowInfo[1][8] (I had to do a global replace to change all the old names to the new one in my code:) I just tried my example that you added the _GUIScrollbars_Minimize/Restore functions to and yes, it worked: the window was repainted to correctly match the location of the scrollbars. So why did it not work in my main code ... (going hunting, back in a while ... I'm posting before I loose this) (a short time later ...) UNBELEVIBLE: all I did was uncomment the two (SB_Min/Res) lines I already had tried and now it works.??? I hate it when that happens: Sorry for bothering you (... unless I was using a older version of your SB_Min/Res functions before I commented them out?) Edited October 7, 2014 by nomadicwolf
Moderators Melba23 Posted October 7, 2014 Author Moderators Posted October 7, 2014 nomadicwolf,No problem - glad you got it working. 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 Â
TheAppleFreak Posted October 9, 2014 Posted October 9, 2014 (edited) Hello Melba While taking a look at the example scripts, I noticed that in GUIScrollbars_Size_Example_2.au3 there is a glitch with resizable windows, where if a scrollable GUI is scrolled partway and then the window is resized vertically, the position of the GUI is reset to the top erroneously. On script launch, here is how it appears. So far so good... Now let's try scrolling a bit. Works as intended. Wait, what's this? I don't think that's supposed to happen... I don't know if this is an issue in the UDF or the example script; I'm not familiar enough with either to tell off hand. Tested with AutoIT 3.3.12.0 on Windows 8.1, if that makes any difference. Thank you very much, though, for putting all of this time into developing this. I can already tell this UDF is going to be a life saver later on. Edited October 9, 2014 by TheAppleFreak
Moderators Melba23 Posted October 9, 2014 Author Moderators Posted October 9, 2014 TheAppleFreak, there is a glitch with resizable windowsAs I have explained many times (such as >here) the UDF is not designed to work with resizeable GUIs - nor do I intend to add this functionality. I am delighted to hear that you might still find a use for it, but you will have to restrict your usage to fixed GUIs only. 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 Â
TheAppleFreak Posted October 9, 2014 Posted October 9, 2014 TheAppleFreak, Â As I have explained many times (such as >here) the UDF is not designed to work with resizeable GUIs - nor do I intend to add this functionality. I am delighted to hear that you might still find a use for it, but you will have to restrict your usage to fixed GUIs only. M23 Â And that's what I get for barely skimming through the thread. My apologies for not paying more attention.Â
Moderators Melba23 Posted October 10, 2014 Author Moderators Posted October 10, 2014 TheAppleFreak,No problem. 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 Â
KaFu Posted November 11, 2014 Posted November 11, 2014 Really nice UDF, will make it into the next release of SMF . Here's my hack for using scrollbars in resizable GUIs, no warranty for nothing included ... expandcollapse popup#include <GUIScrollbars_Ex.au3> Global $i_my_gui_Min_Width = 400, $i_my_gui_Min_Height = 400 $h_my_GUI = GUICreate("My GUI", $i_my_gui_Min_Width, $i_my_gui_Min_Height, Default, Default, $WS_SIZEBOX) GUICtrlCreateButton("Button1", 10, 10) GUICtrlSetResizing(-1, $GUI_DOCKALL) GUICtrlCreateButton("Button2", 340, 340) GUICtrlSetResizing(-1, $GUI_DOCKALL) GUIRegisterMsg($WM_SIZE, "WM_SIZE") GUISetState(@SW_SHOW) While 1 $Msg = GUIGetMsg() If $Msg = $GUI_EVENT_CLOSE Then ExitLoop WEnd GUIDelete() Func WM_SIZE($hWnd, $Msg, $wParam, $lParam) Switch $hWnd Case $h_my_GUI AdlibRegister("_Refresh_Scrollbars", 10) EndSwitch Return $GUI_RUNDEFMSG EndFunc ;==>WM_SIZE Func _Refresh_Scrollbars() AdlibUnRegister("_Refresh_Scrollbars") GUIRegisterMsg($WM_SIZE, "") ; Reset scrollbar positions to 0 Local $tSCROLLINFO = DllStructCreate($tagSCROLLINFO) DllStructSetData($tSCROLLINFO, "fMask", $_SCROLLBARCONSTANTS_SIF_POS) DllStructSetData($tSCROLLINFO, "nMin", 0) _GUIScrollBars_SetScrollInfo($h_my_GUI, $_SCROLLBARCONSTANTS_SB_VERT, $tSCROLLINFO) _GUIScrollBars_SetScrollInfo($h_my_GUI, $_SCROLLBARCONSTANTS_SB_HORZ, $tSCROLLINFO) ; Hide scrollbars _GUIScrollBars_ShowScrollBar($h_my_GUI, $SB_BOTH, False) Local $aSize = WinGetPos($h_my_GUI) If $aSize[2] < $i_my_gui_Min_Width And $aSize[3] < $i_my_gui_Min_Height Then _GUIScrollbars_Generate($h_my_GUI, $i_my_gui_Min_Width, $i_my_gui_Min_Height) ElseIf $aSize[2] < $i_my_gui_Min_Width Then _GUIScrollbars_Generate($h_my_GUI, $i_my_gui_Min_Width) ElseIf $aSize[3] < $i_my_gui_Min_Height Then _GUIScrollbars_Generate($h_my_GUI, 0, $i_my_gui_Min_Height) EndIf GUIRegisterMsg($WM_SIZE, "WM_SIZE") EndFunc ;==>_Refresh_Scrollbars  OS: Win10-22H2 - 64bit - German, AutoIt Version: 3.3.16.1, AutoIt Editor: SciTE, Website: https://funk.eu AMT - Auto-Movie-Thumbnailer (2024-Oct-13) BIC - Batch-Image-Cropper (2023-Apr-01) COP - Color Picker (2009-May-21) DCS - Dynamic Cursor Selector (2024-Oct-13) HMW - Hide my Windows (2024-Oct-19) HRC - HotKey Resolution Changer (2012-May-16) ICU - Icon Configuration Utility (2018-Sep-16) SMF - Search my Files (2024-Oct-20) - THE file info and duplicates search tool SSD - Set Sound Device (2017-Sep-16)
Moderators Melba23 Posted November 11, 2014 Author Moderators Posted November 11, 2014 KaFu,Thanks for that - it has given me a couple of ideas on how to create a suitable function. Stay tuned! 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 Â
Moderators Melba23 Posted November 12, 2014 Author Moderators Posted November 12, 2014 (edited) KaFu (and anyone else reading),I have incorporated your resizable GUI code into the UDF and added a new function to set the size above which a resizable GUI does not require scrollbars. Please play around with this Beta UDF and associated example and let me know what you think:<Code removed - see newer Beta below>I am still looking at how to deal automatically with the increased border size when the GUI is resizable as this is throwing off some of the internal calculations for scrollbar sizing, but as a proof on concept I am pretty pleased. Thanks again for the push to get it working and the basic code (modified versions of which you will find in the 2 new handlers _Scrollbars_WM_SIZE & _Scrollbars_WM_EXITSIZEMOVE. M23 Edited November 14, 2014 by Melba23 Beta code removed  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 Â
Moderators Melba23 Posted November 14, 2014 Author Moderators Posted November 14, 2014 (edited) Hi,An updated Beta version which copes better with the increased border size by resizing the GUI to cope when required and which tries to maintain the scrolled position if possible:<snip>Again, any comments welcomed. M23 Edited November 21, 2014 by Melba23 Beta code removed  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 Â
Moderators Melba23 Posted November 21, 2014 Author Moderators Posted November 21, 2014 (edited) Hi,A final Beta version - a new algorithm and a couple of new features (read the _GUIScrollbars_ReSizer header for details):<snip>Grateful for any comments. M23 Edited November 22, 2014 by Melba23 Beta code removed  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 Â
Moderators Melba23 Posted November 22, 2014 Author Moderators Posted November 22, 2014 [New Version] - 22 Nov 14Added: Ability to use scrollbars with resizeable GUIs. A new function _GUIScrollbars_Resizer will initiate the GUI for resizing - the scrollbars can be set to vanish above a certain GUI size and the GUI can be automatically created at a size such that they do not appear. The function returns an array which can be used to ensure that the GUI cannot be resized above those dimensions.Despite saying I would not do this, KaFu showed how it might be done and so here is the result. My thanks to him. New zip in the first post. 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 Â
KaFu Posted November 22, 2014 Posted November 22, 2014 (edited) Quite busy at the moment, that's why I sadly couldn't test it until now. But I'll definitely use the updated UDF in the next SMF version, thank you for this nice piece of code, Scrollbar calculation is (was) really a pain ... Edited November 22, 2014 by KaFu  OS: Win10-22H2 - 64bit - German, AutoIt Version: 3.3.16.1, AutoIt Editor: SciTE, Website: https://funk.eu AMT - Auto-Movie-Thumbnailer (2024-Oct-13) BIC - Batch-Image-Cropper (2023-Apr-01) COP - Color Picker (2009-May-21) DCS - Dynamic Cursor Selector (2024-Oct-13) HMW - Hide my Windows (2024-Oct-19) HRC - HotKey Resolution Changer (2012-May-16) ICU - Icon Configuration Utility (2018-Sep-16) SMF - Search my Files (2024-Oct-20) - THE file info and duplicates search tool SSD - Set Sound Device (2017-Sep-16)
Moderators Melba23 Posted November 28, 2014 Author Moderators Posted November 28, 2014 Hi,There was a problem with the zip file I uploaded with the new 22 Nov 14 version - there is an error in the UDF code which gives you an "Undeclared Global Variable" error. My apologies - there is a new zip in the first post and this one does work correctly. 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 Â
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