siva1612 Posted March 9, 2017 Posted March 9, 2017 (edited) @Melba23 I have use this UDF to create scrollbars for a case as below. Its is working fine line until a particular height. As I've mentioned in the comment below whenever I'm increasing the height of the window by increasing the value of the LabelCnt variable beyond 32, some of the page is not visible. Any advice on how to overcome this or what what I'm doing wrong? #include <GUIConstantsEx.au3> #include <GUIScrollbars_Ex.au3> #include <StaticConstants.au3> Opt("GUIOnEventMode", 1) $MainScreen = GUICreate("Expense Tracker", 600, 520, -1, -1, -1) GUISetOnEvent($GUI_EVENT_CLOSE, "ExitAll") GUISetBkColor(0xE0E0E0) GUISetState() $CategoriesListScr = GUICreate("", 250, 480, 0, 40, $WS_POPUP, $WS_EX_MDICHILD, $MainScreen) GUISetFont(14, 500, 0, "Calibri") GUISetBkColor(0xFFFFFF) GUICtrlSetResizing($CategoriesListScr, $GUI_DOCKALL) GUISetState() $LastLine = 0 For $LabelCnt = 0 To 31; Working fine till 30; Half the label gets hidden from 32 and a full control is hidden from 44 $LastLine += 40 GUICtrlCreateLabel("Test String" & $LabelCnt, 47, $LastLine, 250, 40, $SS_CENTERIMAGE) Next _GUIScrollbars_Generate($CategoriesListScr, 250, $LastLine + 40) _GUIScrollBars_ShowScrollBar($CategoriesListScr, $SB_HORZ, False) While 1 WEnd Func ExitAll() Exit EndFunc ;==>ExitAll Edited March 9, 2017 by siva1612
Moderators Melba23 Posted March 9, 2017 Author Moderators Posted March 9, 2017 siva1612, If I remove the _GUIScrollBars_ShowScrollBar line I get all the labels displayed - I tested up to 200. You can remove the horizontal scrollbar by setting the _GUIScrollbars_Generate horizontal parameter to 0: #include <GUIConstantsEx.au3> #include <GUIScrollbars_Ex.au3> #include <StaticConstants.au3> Opt("GUIOnEventMode", 1) $MainScreen = GUICreate("Expense Tracker", 600, 520, -1, -1, -1) GUISetOnEvent($GUI_EVENT_CLOSE, "ExitAll") GUISetBkColor(0xE0E0E0) GUISetState() $CategoriesListScr = GUICreate("", 250, 480, 0, 40, $WS_POPUP, $WS_EX_MDICHILD, $MainScreen) GUISetFont(14, 500, 0, "Calibri") GUISetBkColor(0xFFFFFF) GUICtrlSetResizing($CategoriesListScr, $GUI_DOCKALL) GUISetState() $LastLine = -30 For $LabelCnt = 0 To 200; Working fine $LastLine += 40 GUICtrlCreateLabel("Test String" & $LabelCnt, 47, $LastLine, 250, 40, $SS_CENTERIMAGE) Next _GUIScrollbars_Generate($CategoriesListScr, 0, $LastLine + 40) ;_GUIScrollBars_ShowScrollBar($CategoriesListScr, $SB_HORZ, False) While 1 Sleep(10) ; You need a Sleep to stop the CPU from frying <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< WEnd Func ExitAll() Exit EndFunc ;==>ExitAll Note my comment about the idle loop Sleep. M23 siva1612 1 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
TJF Posted September 30, 2017 Posted September 30, 2017 (edited) Hi, I tried your fine UDF. It works fine on PC, but not on WIN10 Tablet. Do you have any idea, what I can do? On PC you can scroll the left area with mousewheel or use the scrollbar with mouse. On Tablet: Only using the scrollbar with the finger it scrolls the left gui-area. Using the finger inside the gui-area nothing ... Any idea? I tried also this other example . Thanks Best regards Thomas expandcollapse popup#include <GUIConstantsEx.au3> #include <WindowsConstants.au3> #include <StructureConstants.au3> #include <GUIScrollBars.au3> #include <ScrollBarConstants.au3> #include <ListViewConstants.au3> #include <SendMessage.au3> #include "GUIScrollbars_Ex.au3" startGui() Func startGui() $Gui = GUICreate("", 700, 600, -1, -1, $WS_POPUP) $up = GUICtrlCreateButton("UP", 10, 10, 80, 40) $down = GUICtrlCreateButton("DOWN", 100, 10, 80, 40) GUICtrlCreateLabel("Close with ESC", 550, 10, 120, 40) GUIRegisterMsg($WM_MOUSEWHEEL, "_Scrollbars_WM_MOUSEWHEEL") $hScrollPl = GUICreate("$hScrollPl", 500, 400, 10, 100, BitOR($WS_POPUP, $WS_GROUP, $WM_VSCROLL, $WS_CLIPSIBLINGS), $WS_EX_MDICHILD, $Gui) GUISetBkColor(0xffffff) $art = GUICtrlCreateLabel("", 1, 1) $hListV = GUICtrlCreateListView("1|2", 100, 100, 300, 200, BitOR($LVS_REPORT, $LVS_NOCOLUMNHEADER, $LVS_SHOWSELALWAYS)) _GUIScrollbars_Generate($hScrollPl, 0,3000) ;_GUIScrollbars_Scroll_Page($hScrollPl, 0, 99) GUISetState(@SW_SHOW, $Gui) GUISetState(@SW_SHOW, $hScrollPl) GUICtrlSetState($art, $GUI_FOCUS); Focus auf Label von $hScrollPl GUISwitch($Gui) ;GUISetState(@SW_SHOW, $Gui) While 1 $iMsg3 = GUIGetMsg() Switch $iMsg3 Case $GUI_EVENT_CLOSE Exit Case $up MsgBox(0, "Info", "Button up pressed") GUICtrlSetState($art, $GUI_FOCUS); Focus on Label $hScrollPl Case $down MsgBox(0, "Info", "Button down pressed") GUICtrlSetState($art, $GUI_FOCUS); Focus on Label $hScrollPl EndSwitch WEnd EndFunc ;==>startGui Edited September 30, 2017 by TJF
Moderators Melba23 Posted October 4, 2017 Author Moderators Posted October 4, 2017 TJF, The UDF has no code to react to tablet gestures. Now I have a Win 10 tablet to work on I will see what I can do to add some. 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
TJF Posted October 4, 2017 Posted October 4, 2017 (edited) Thanks a lot M23 ! I think WM_TOUCH ( GESTURE_TOUCH.zip ) is the way to go...? Edited October 6, 2017 by TJF
Qwerty212 Posted October 13, 2017 Posted October 13, 2017 On 4/10/2017 at 9:03 AM, Melba23 said: TJF, The UDF has no code to react to tablet gestures. Now I have a Win 10 tablet to work on I will see what I can do to add some. M23 It would be a great improvement! Greets from Barcelona
Bitnugger Posted December 28, 2017 Posted December 28, 2017 (edited) Hello @Melba23, is really funny... I just want to write something about the topic "WM_TOUCH"... and on the current last page in this thread I read then that is spoken exactly about it. Anyway, now I've already written the text... and here it is. ;-) I sorted you into my hall of fame a long time ago... Your work is perfect as always... at least almost perfect... because something is always missing and in some places there are still hidden bugs that only strike when you need it the least. I have not noticed bugs yet, but something missing... the support for WM_TOUCH. Would be really great, if you could install that... ;-) On 4.10.2017 at 6:42 PM, TJF said: I think WM_TOUCH ( GESTURE_TOUCH.zip ) is the way to go...? For scrolling only WM_TOUCH is needed... WM_GESTURE will probably only be relevant for the automatic resizing of ScrollBars. Edited December 28, 2017 by Bitnugger
Moderators Melba23 Posted December 28, 2017 Author Moderators Posted December 28, 2017 Bitnugger, Quote Your work is perfect as always... at least almost perfect... because something is always missing and in some places there are still hidden bugs that only strike when you need it the least. Sorry about that! I will look into adding gesture support to this UDF as soon as the real world allows me the time to do so - which may not be any time soon I am afraid. 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
Tweaky Posted December 29, 2017 Posted December 29, 2017 Thanks for this great UDF. I hope this will be integrate in the Standard-UDFs of AutoIt.
TJF Posted January 28, 2018 Posted January 28, 2018 @ Melba23 At the german autoit - Forum there is a thread with Bitnuggers WM_TOUCH function. May be this is helpful for you. It isn't still perfect. You could look at the latest files...
Xandy Posted May 12, 2018 Posted May 12, 2018 (edited) Hi, @Melba23 I love this UDF. Thank you for creating it. I'm running into a problem adding Sliders with GUICrtlCreateSlider() to a parent GUI. The parent GUI also has a child GUI that I call _GUIScrollbars_Generate() on. My problem is I do not detect messages from GUIGetMsg() as equal to the Slider. If I REM the call to _GUIScrollbars_Generate() I detect the Slider message. If I change the Slider to a Button I can detect the Button from GUIGetMsg() without remarking _GUIScrollbars_Generate(). It seems to be something specific to Slider and _GUIScrollbars_Generate(). I've played with GUISwitch() and that doesn't seem to be helping. When I ConsoleWrite() the Slider controlID it is same value when it's working as when it is not working. Do you know what I could be doing wrong and how I can fix it? In this reproducer: Remarking line: 102: _GUIScrollbars_Generate() will allow Case $aControl[$eidSCAN_GRID_R_slider] to be detected and the Input field for Red component will be updated, but then I lose scrollbars expandcollapse popup#cs ---------------------------------------------------------------------------- AutoIt Version: 3.3.14.5 Author: Xandy Script Function: Reproducer to learn why Red Slider doesn't detect with GUIGetMsg() if used with _GUIScrollbars_Generate() #ce ---------------------------------------------------------------------------- #include <GDIPlus.au3> #include <Include\GUIScrollbars_Ex.au3>; Author: Melba23 #include <File.au3> #include <GuiEdit.au3> #include <GUIConstants.au3> #include <GuiComboBox.au3> #include <WinAPI.au3> Const $FILTER_IMAGE = "Image (*.BMP;*.PNG;*.GIF;*.JPG;*JPEG;*.TGA;*.TIFF)" Const $FILTER_IMAGE_TXT = "Image, Txt (*.TXT;*.BMP;*.PNG;*.GIF;*.JPG;*JPEG;*.TGA;*.TIFF)" #Region Enum Enum $eSETTING_DATA_NAMES = 0, _ ; 0 $eSETTING_IMAGE_PATH_LAST, _ ; 1 $eSETTING_TILE_W, _ ; 2 $eSETTING_TILE_H, _ ; 3 $eSETTING_WORLD_START_X, _ ; 4 $eSETTING_WORLD_START_Y, _ ; 5 $eSETTING_WORLD_END_W, _ ; 6 $eSETTING_WORLD_END_H, _ ; 7 $eSETTING_WORLD_START_TILE_X, _ ; 8 $eSETTING_WORLD_START_TILE_Y, _ ; 9 $eSETTING_WORLD_END_TILE_W, _ ; 10 $eSETTING_WORLD_END_TILE_H, _ ; 11 $eSETTING_MAPPARSER_CPP_USE, _ ; 12; controls read from scan $eSETTING_MAPPARSER_CPP_PATH, _ ; 13 $eSETTING_OUTPUT_PATH_LAST, _ ; 14 $eSETTING_BLOCK_INSERT_W, _ ; 15 $eSETTING_BLOCK_INSERT_H, _ ; 16 $eSETTING_TILES, _ ; 17 $eSETTING_WORLD_W, _ ; 18 $eSETTING_WORLD_H, _ ; 19 $eSETTING_TILE_PALETTE_TILES_W, _ ; 20 $eSETTING_TILE_PALETTE_PAGE, _ ; 21 $eSETTING_TILE_PALETTE_PAGES, _ ; 22 $eSETTING_TILE_PALETTE_TILES_PER_PAGE, _ ; 23 $eSETTING_MAX ; 24; saved ; $eSETTING 1..12 are used to specify data control Enum $eidSCAN_GRID_checkbox = 13, _ ; 13 $eidSCAN_HEX_checkbox, _ ; 14 $eidSCAN_GRID_COLOR_R_input, _ ; 15 $eidSCAN_GRID_COLOR_G_input, _ ; 16 $eidSCAN_GRID_COLOR_B_input, _ ; 17 $eidSCAN_GRID_COLOR_A_input, _ ; 18 $eidSCAN_GRID_R_slider, _; 19 $eidSCAN_GRID_G_slider, _; 20 $eidSCAN_GRID_B_slider, _; 21 $eidSCAN_GRID_A_slider, _; 22 $eidSCAN_CONFIRM_button, _ ; 23 $eidSCAN_IMAGE_pic, _ ; 24 $eidSCAN_CPP_BROWSE_button, _ ; 25 $eidSCAN_IMAGE_h, _ ; 26 $eidSCAN_IMAGEBROWSE_button, _ ; 27 $eidSCAN_MAX ; 28 #EndRegion Enum OnAutoItExitRegister("_Exit") ; Main test GUI, Main() is removed for reproducer $hGUI = GUICreate("", 320, 200) GUISetState() Local $aSetting[$eSETTING_MAX] $aSetting[$eSETTING_IMAGE_PATH_LAST] = "E:\Docs\Pictures\avatar_evans_doge.png" _GDIPlus_Startup() Scan_Dialog($hGUI, $aSetting) ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; FUNCTION LIST ; ; Dialog appears for the user to select an image, tile size, and image area. ; Also sets path to external C++ MapParser.exe Func Scan_Dialog($hGUI_parent, ByRef $aSetting) $aGUI_rect = WinGetPos($hGUI_parent) $hGUI = GUICreate("Scan Image to world and tiles", 640, 480, $aGUI_rect[0] + 20, $aGUI_rect[1] + 20, Default, Default, $hGUI_parent) $aGUI_rect = WinGetPos($hGUI) GUISetState() $gScrollbars_scrolled = 1 ; Set default tile size, when invalid tile size If $aSetting[$eSETTING_TILE_W] < 1 Then $aSetting[$eSETTING_TILE_W] = 16 If $aSetting[$eSETTING_TILE_H] < 1 Then $aSetting[$eSETTING_TILE_H] = 16 ; Send this Sub-GUI to be defined Local $hGUI_Pic = Null ; Create controls for this GUI Local $aControl = Scan_Dialog_ControlCreate($hGUI, $hGUI_Pic, $aSetting) ; ;; With the line below removed: $aControl[$eidSCAN_GRID_R_slider] is detected. But then I have no beautiful scrollbars for large images :( _GUIScrollbars_Generate($hGUI_Pic, 8000, 8000) ;_GUIScrollbars_Generate($hGUI_Pic, 8000, 8000) ; ; $aImage_Size = _GDIPlus_ImageGetDimension($aControl[$eidSCAN_IMAGE_h]) If Not IsArray($aImage_Size) Then Local $aImage_Size[2] = [0, 0] ; Image picture $aControl[$eidSCAN_IMAGE_pic] = Control_Create("Pic", "", 0, 0, $aImage_Size[0], $aImage_Size[1], "Pic tooltip") Image_Load2($aControl[$eidSCAN_IMAGE_pic], $aSetting[$eSETTING_IMAGE_PATH_LAST], $aControl) GUISwitch($hGUI_parent) ;_WinAPI_SetParent ( $hGUI_Pic, $hGUI) Local $aImage_Size = _GDIPlus_ImageGetDimension($aControl[$eidSCAN_IMAGE_h]) If Not IsArray($aImage_Size) Then Local $aImage_Size[2] = [0, 0] Local $penColor = 0xFFFF0000 Local $aidColor[4] = [$aControl[$eidSCAN_GRID_COLOR_A_input], _ $aControl[$eidSCAN_GRID_COLOR_R_input], _ $aControl[$eidSCAN_GRID_COLOR_G_input], _ $aControl[$eidSCAN_GRID_COLOR_B_input]] Local $surf = 0 Local $MapParser_Path = $aSetting[$eSETTING_MAPPARSER_CPP_PATH] Local $confirm = 0 ;$idSlider = GUICtrlCreateSlider(0, 0, 200, 20) out("setlimit", GUICtrlSetLimit($aControl[$eidSCAN_GRID_R_slider], 255)) Do $msg = GUIGetMsg() Switch $msg ; Testing Case Red component Slider Case $aControl[$eidSCAN_GRID_R_slider] GUICtrlSetData($aidColor[1], GUICtrlRead($aControl[$eidSCAN_GRID_R_slider])) ;Case $idSlider ; exit Case $aControl[$eidSCAN_IMAGEBROWSE_button] $sPath = _FileOpenDialog("Title", $FILTER_IMAGE, FileGetFolder($aSetting[$eSETTING_IMAGE_PATH_LAST]), "", $hGUI) If $sPath <> "" Then ; Path input set to file path GUICtrlSetData($aControl[$eSETTING_IMAGE_PATH_LAST], $sPath) $aImage_Size = Scan_Dialog_Load_Image($hGUI_Pic, $aControl, GUICtrlRead($aControl[$eSETTING_IMAGE_PATH_LAST])) $gScrollbars_scrolled = 1 EndIf Case $aControl[$eSETTING_TILE_W], $aControl[$eSETTING_TILE_H], _ $aControl[$eSETTING_WORLD_START_X], $aControl[$eSETTING_WORLD_START_Y], $aControl[$eSETTING_WORLD_END_W], $aControl[$eSETTING_WORLD_END_H], _ $aControl[$eSETTING_WORLD_START_TILE_X], $aControl[$eSETTING_WORLD_START_TILE_Y], $aControl[$eSETTING_WORLD_END_TILE_W], $aControl[$eSETTING_WORLD_END_TILE_H] $gScrollbars_scrolled = 1 Case $aControl[$eSETTING_IMAGE_PATH_LAST] $aImage_Size = Scan_Dialog_Load_Image($hGUI_Pic, $aControl, GUICtrlRead($aControl[$eSETTING_IMAGE_PATH_LAST])) $gScrollbars_scrolled = 1 Case $aControl[$eidSCAN_GRID_checkbox] $gScrollbars_scrolled = 1 Case $aControl[$eidSCAN_CONFIRM_button] $confirm = 1 EndSwitch ; msg ;out("Slider:", $aControl[$eidSCAN_GRID_R_slider]) If $gScrollbars_scrolled = 1 Then $gScrollbars_scrolled = 0 $x = GUICtrlRead($aControl[$eSETTING_WORLD_START_X]) $y = GUICtrlRead($aControl[$eSETTING_WORLD_START_Y]) $w = GUICtrlRead($aControl[$eSETTING_WORLD_END_W]) $h = GUICtrlRead($aControl[$eSETTING_WORLD_END_H]) $tile_w = GUICtrlRead($aControl[$eSETTING_TILE_W]) $tile_h = GUICtrlRead($aControl[$eSETTING_TILE_H]) $start_tile_x = GUICtrlRead($aControl[$eSETTING_WORLD_START_TILE_X]) $start_tile_y = GUICtrlRead($aControl[$eSETTING_WORLD_START_TILE_Y]) $end_tile_w = GUICtrlRead($aControl[$eSETTING_WORLD_END_TILE_W]) $end_tile_h = GUICtrlRead($aControl[$eSETTING_WORLD_END_TILE_H]) Scan_Dialog_Draw_Tile_Grid($x, $y, $w, $h, $start_tile_x, $start_tile_y, $end_tile_w, $end_tile_h, $aImage_Size[0], $aImage_Size[1], $tile_w, $tile_h, $penColor, $aControl, $hGUI_Pic) EndIf Until $msg = $GUI_EVENT_CLOSE Or $confirm = 1 If $confirm = 1 Then $aSetting[$eSETTING_IMAGE_PATH_LAST] = GUICtrlRead($aControl[$eSETTING_IMAGE_PATH_LAST]) For $i = 2 To $eSETTING_MAPPARSER_CPP_USE $aSetting[$i] = Int(GUICtrlRead($aControl[$i])) Next $aSetting[$eSETTING_MAPPARSER_CPP_PATH] = $MapParser_Path $surf = "This is test case only";_IMG_Load($aSetting[$eSETTING_IMAGE_PATH_LAST]) EndIf GUIDelete($hGUI) Return $surf EndFunc ;==>Scan_Dialog ; Draws the GUI controls for Scan_Dialog() Func Scan_Dialog_ControlCreate(ByRef $hGUI_parent, ByRef $hGUI_Pic, ByRef $aSetting) Local $aGUI_rect = WinGetPos($hGUI_parent) Local $aControl[$eidSCAN_MAX] Local $control_h = 20 Local $control_margin_w = 10, $control_margin_h = 10 Local $control_y = $control_margin_h Local $control_image_pic_w = 400, $control_pic_h = 420 ; Image Input $sPath = $aSetting[$eSETTING_IMAGE_PATH_LAST] $control_label_w = 60 $control_w = $aGUI_rect[2] - 35 - ($control_margin_w + $control_label_w) - 100 $aControl[$eSETTING_IMAGE_PATH_LAST] = Control_Create("Input", $sPath, _ $control_margin_w + $control_label_w, $control_y, $control_w, 20, _ "Image file; convert into world and tiles", "Image Path", $control_margin_w, $control_y, $control_label_w, 20) ; Image browse $aControl[$eidSCAN_IMAGEBROWSE_button] = Control_Create("Button", "...", $control_margin_w + $control_label_w + $control_w, $control_y, 20, 20, "Browse for Image to convert.") ; Image picture window $control_y += $control_h * 2 $control_image_y = $control_y ; Tile size selection Local $control_y = $control_margin_h Local $aPos = [$control_margin_w + $control_image_pic_w + 10, $control_image_y, 165, 250] $label_w = 25 Control_Create("Label", "Tile", $aPos[0], $aPos[1] + 25, $label_w, 20, "Cut image into rectangles of this size.") $tile_size_w = 40 $aControl[$eSETTING_TILE_W] = Control_Create("Input numonly", $aSetting[$eSETTING_TILE_W], $aPos[0] + $label_w, $aPos[1] + 20, $tile_size_w, 20, _ "Width of tiles", "Width", $aPos[0] + 20, $aPos[1], 35, 20) $aControl[$eSETTING_TILE_H] = Control_Create("Input numonly", $aSetting[$eSETTING_TILE_H], $aPos[0] + $label_w + $tile_size_w, $aPos[1] + 20, 40, 20, _ "Height of tiles", "Height", $aPos[0] + 20 + $tile_size_w, $aPos[1], 35, 20) ; Image scan area: Start x, y, End w, h $aPos[1] += 80 Control_Create("Label", "Start", $aPos[0], $aPos[1], 20, 20, "Position to start reading tile from Image.") $aControl[$eSETTING_WORLD_START_X] = Control_Create("Input numonly", $aSetting[$eSETTING_WORLD_START_X], $aPos[0] + $label_w, $aPos[1], $tile_size_w, 20, _ "Pixel position X to start reading tiles from Image", "X", $aPos[0] + $label_w, $aPos[1] - 20, 35, 20) $aControl[$eSETTING_WORLD_START_Y] = Control_Create("Input numonly", $aSetting[$eSETTING_WORLD_START_Y], $aPos[0] + $label_w + $tile_size_w, $aPos[1], $tile_size_w, 20, _ "Pixel position Y to start reading tiles from Image", "Y", $aPos[0] + $label_w + $tile_size_w, $aPos[1] - 20, 35, 20) $x = $aPos[0] + $label_w + $tile_size_w * 2 + 5 Control_Create("Label", "Tile", $x, $aPos[1], 30, 20, "These offsets are calculated in tiles.") $aControl[$eSETTING_WORLD_START_TILE_X] = Control_Create("Input numonly", $aSetting[$eSETTING_WORLD_START_TILE_X], $x + $label_w, $aPos[1], $tile_size_w, 20, _ "Tile X to start reading tiles from Image" & @CRLF & "This offset is added to tile offset", "X", $x + $label_w, $aPos[1] - 20, 35, 20) $aControl[$eSETTING_WORLD_START_TILE_Y] = Control_Create("Input numonly", $aSetting[$eSETTING_WORLD_START_TILE_Y], $x + $label_w + $tile_size_w, $aPos[1], $tile_size_w, 20, _ "Tile Y to start reading tiles from Image" & @CRLF & "This offset is added to tile offset", "Y", $x + $label_w + $tile_size_w, $aPos[1] - 20, 35, 20) ; Area: End w, h $aPos[1] += 50 Control_Create("Label", "End", $aPos[0], $aPos[1], 20, 20, "Position to stop reading tile from Image.") $aControl[$eSETTING_WORLD_END_W] = Control_Create("Input numonly", $aSetting[$eSETTING_WORLD_END_W], $aPos[0] + $label_w, $aPos[1], $tile_size_w, 20, _ "Width in pixels to stop reading tiles from Image" & @CRLF & "This offset is added to tile offset", "W", $aPos[0] + $label_w, $aPos[1] - 20, 35, 20) $aControl[$eSETTING_WORLD_END_H] = Control_Create("Input numonly", $aSetting[$eSETTING_WORLD_END_H], $aPos[0] + $label_w + $tile_size_w, $aPos[1], $tile_size_w, 20, _ "Height in pixels to stop reading tiles from Image" & @CRLF & "This offset is added to tile offset", "H", $aPos[0] + $label_w + $tile_size_w, $aPos[1] - 20, 35, 20) Control_Create("Label", "Tile", $x, $aPos[1], 30, 20, "These offsets are calculated in tiles.") $aControl[$eSETTING_WORLD_END_TILE_W] = Control_Create("Input numonly", $aSetting[$eSETTING_WORLD_END_TILE_W], $x + $label_w, $aPos[1], $tile_size_w, 20, _ "Width in tiles to stop reading tiles from Image" & @CRLF & "This offset is added to pixel offset", "W", $x + $label_w, $aPos[1] - 20, 35, 20) $aPos2 = ControlGetPos($hGUI_parent, "", $aControl[$eSETTING_WORLD_START_TILE_Y]) $aControl[$eSETTING_WORLD_END_TILE_H] = Control_Create("Input numonly", $aSetting[$eSETTING_WORLD_END_TILE_H], $x + $label_w + $tile_size_w, $aPos[1], $tile_size_w, 20, _ "Height in tiles to stop reading tiles from Image" & @CRLF & "This offset is added to pixel offset", "H", $x + $label_w + $tile_size_w, $aPos[1] - 20, 35, 20) ; Color group $Grid_Color_group = GUICtrlCreateGroup("Grid Color", $aPos[0], $aPos[1] + 40, 210, 160) $aPos = ControlGetPos($hGUI_parent, "", $Grid_Color_group) ; Grid color show $aControl[$eidSCAN_GRID_checkbox] = Control_Create("Checkbox", $GUI_CHECKED, $aPos[0] + 5, $aPos[1] + 20, 65, 20, _ "Toggle showing tile grid lines over image", "Show Grid", $aPos[0] + 5, $aPos[1] + 20, 40, 20) $aControl[$eidSCAN_GRID_COLOR_R_input] = Control_Create("Input UPPERCASE", Hex(0xFF, 2), $aPos[0] + 45, $aPos[1] + 60, 40, 20, _ ; Red "Red component of tile grid color. (0..255)", "Red", $aPos[0] + 5, $aPos[1] + 60, 40, 20) $aPos = ControlGetPos($hGUI_parent, "", $aControl[$eidSCAN_GRID_COLOR_R_input]) $aControl[$eidSCAN_GRID_R_slider] = GUICtrlCreateSlider($aPos[0] + $aPos[2], $aPos[1], 120, 20) $aPos = ControlGetPos($hGUI_parent, "", $aControl[$eidSCAN_GRID_checkbox]) $aPos[1] += 115 $aControl[$eidSCAN_CONFIRM_button] = Control_Create("Button", "Confirm", $aGUI_rect[2] - 70, $aGUI_rect[3] - 60, 55, 20, "Confirm") $hGUI_Pic = GUICreate("Sub-Window Scrollable Image", $control_image_pic_w, $control_pic_h, $control_margin_w, $control_image_y, $WS_POPUP, $WS_EX_MDICHILD, $hGUI_parent) GUISetState() Return $aControl EndFunc ;==>Scan_Dialog_ControlCreate ; Joins pixel and tile offsets into single x, y, w, h, pixel offset Func Calculate_Grid_Area($start_x, $start_y, $end_w, $end_h, $start_tile_x, $start_tile_y, $end_tile_w, $end_tile_h, $image_w, $image_h, $tile_w, $tile_h) ; Calculate tile offset $start_tile_x = $start_tile_x * $tile_w $start_tile_y = $start_tile_y * $tile_h $end_tile_w = $end_tile_w * $tile_w $end_tile_h = $end_tile_h * $tile_h $start_x += $start_tile_x $start_y += $start_tile_y Local $calc_end_w = $start_x + $end_w + $end_tile_w Local $calc_end_h = $start_y + $end_h + $end_tile_h ; If user entered zero'd values for End use max image w, h - the start offset If $end_w < 1 And $end_tile_w < 1 Then $calc_end_w = $image_w ; - $start_x If $end_h < 1 And $end_tile_h < 1 Then $calc_end_h = $image_h ; - $start_y Local $aGrid_Area[4] = [$start_x, _ $start_y, _ $calc_end_w, _ $calc_end_h] Return $aGrid_Area EndFunc ;==>Calculate_Grid_Area ; Draws a grid over top of image to preview tile size Func Scan_Dialog_Draw_Tile_Grid($start_x, $start_y, $end_w, $end_h, $start_tile_x, $start_tile_y, $end_tile_w, $end_tile_h, $image_w, $image_h, $tile_w, $tile_h, _ $penColor, ByRef $aControl, ByRef $hGUI_Pic) If $tile_w < 1 Or $tile_h < 1 Then Return 0 $aArea = Calculate_Grid_Area($start_x, $start_y, $end_w, $end_h, $start_tile_x, $start_tile_y, $end_tile_w, $end_tile_h, $image_w, $image_h, $tile_w, $tile_h) Local $handle = GUICtrlGetHandle($aControl[$eidSCAN_IMAGE_pic]) Local $hGraphic = _GDIPlus_GraphicsCreateFromHWND($handle) _GDIPlus_GraphicsDrawImage($hGraphic, $aControl[$eidSCAN_IMAGE_h], 0, 0) If GUICtrlRead($aControl[$eidSCAN_GRID_checkbox]) = $GUI_CHECKED Then Local $hPen = _GDIPlus_PenCreate($penColor) For $x = $aArea[0] To $aArea[2] Step $tile_w _GDIPlus_GraphicsDrawLine($hGraphic, $x, $aArea[1], $x, $aArea[3], $hPen) Next ; x For $y = $aArea[1] To $aArea[3] Step $tile_h _GDIPlus_GraphicsDrawLine($hGraphic, $aArea[0], $y, $aArea[2], $y, $hPen) Next ; y _GDIPlus_PenDispose($hPen) EndIf _GDIPlus_GraphicsDispose($hGraphic) EndFunc ;==>Scan_Dialog_Draw_Tile_Grid ; Special version of load image, that resets the scroll position of sub-window Func Scan_Dialog_Load_Image($hGUI_Pic, ByRef $aControl, $sPath) ; Set hGUI_Pic scrollbar pos to 0 to align tile grid overlay _GUIScrollBars_SetScrollInfoPos($hGUI_Pic, $SB_HORZ, 0) _GUIScrollBars_SetScrollInfoPos($hGUI_Pic, $SB_VERT, 0) ; Update the Image Pic control Image_Load2($aControl[$eidSCAN_IMAGE_pic], $sPath, $aControl) Local $aImage_Size = _GDIPlus_ImageGetDimension($aControl[$eidSCAN_IMAGE_h]) If Not IsArray($aImage_Size) Then Local $aImage_Size[2] = [0, 0] GUICtrlSetState($aControl[$eidSCAN_IMAGE_pic], $GUI_FOCUS) Return $aImage_Size EndFunc ;==>Scan_Dialog_Load_Image ; Displays array with encoded data members Func output($array) $split = StringSplit($array[0], ",") For $i = 1 To UBound($array) - 1 out($split[$i], $array[$i - 1]) Next EndFunc ;==>output ; Modified ; Author UEZ: https://www.autoitscript.com/forum/topic/135989-png-in-gui/?do=findComment&comment=950214 Func Image_Load2(ByRef $idPic, $sPath, ByRef $aControl) _GDIPlus_ImageDispose($aControl[$eidSCAN_IMAGE_h]) $aControl[$eidSCAN_IMAGE_h] = _GDIPlus_ImageLoadFromFile($sPath) $BMP = _GDIPlus_BitmapCreateHBITMAPFromBitmap($aControl[$eidSCAN_IMAGE_h]) $winAPI = GUICtrlSendMsg($idPic, $STM_SETIMAGE, $IMAGE_BITMAP, $BMP) $rc = _WinAPI_DeleteObject($winAPI) If @error Then out("_WinAPI_DeleteObject ERROR:", @error) _WinAPI_DeleteObject($BMP) EndFunc ;==>Image_Load2 ; Opens a Windows File Browse dialog and resets working directory so SDL finds it's DLLs Func _FileOpenDialog($title, $filter, $initDir = "", $initFilename = "", $hGUI_parent = Null) Local $asError_description = ["", _ "1 = File selection failed.", _ "2 = Bad file filter"] $wkdir = @WorkingDir $sPath = FileOpenDialog("Select Image to convert to world array and tile images", $initDir, $filter, Default, $initFilename, $hGUI_parent) If @error <> 0 Then MsgBox($MB_SYSTEMMODAL, "_FileOpenDialog", "FileOpenDialog: Error: " & " " & $asError_description[@error], 0, $hGUI_parent) FileChangeDir($wkdir) Return $sPath EndFunc ;==>_FileOpenDialog Func FileGetName($path) Return StringMid($path, StringInStr($path, "\", 0, -1) + 1) EndFunc ;==>FileGetName Func FileGetFolder($path) $pathreturn = StringMid($path, 1, StringInStr($path, "\", 0, -1)) Return $pathreturn EndFunc ;==>FileGetFolder Func FileGetExt($filename) $pathreturn = StringMid($filename, StringLen($filename) - 3) Return $pathreturn EndFunc ;==>FileGetExt ; Author: Monoceres _RemoveFileExt, Xandy renamed: FileRemoveExt ; https://www.autoitscript.com/forum/topic/81098-solvedremove-file-extensions/?do=findComment&comment=582469 Func FileRemoveExt($string) Return StringLeft($string, StringInStr($string, ".", Default, -1) - 1) EndFunc ;==>FileRemoveExt ; Why Control_Create? data, label, and tooltip control in single line. Can also specify differant standard formats, by adding a new or your version of the Case. Func Control_Create($sType, $data_value, $data_x, $data_y, $data_width, $data_height, $data_tip = "", $label_text = Null, $label_x = 0, $label_y = -100, $label_w = 150, $label_h = 20, $label_tip = "") Local $idCtrl = Null Switch $sType Case 'Button' $idCtrl = GUICtrlCreateButton($data_value, $data_x, $data_y, $data_width, $data_height) Case 'checkbox' $idCtrl = GUICtrlCreateCheckbox($label_text, $data_x, $data_y, $data_width, $data_height) If $data_value = $GUI_CHECKED Then GUICtrlSetState($idCtrl, $data_value) Case 'checkbox2' $idCtrl = GUICtrlCreateCheckbox("", $data_x, $data_y, $data_width, $data_height) If $data_value = $GUI_CHECKED Then GUICtrlSetState($idCtrl, $data_value) Case 'Edit' $idCtrl = GUICtrlCreateEdit($data_value, $data_x, $data_y, $data_width, $data_height, $ws_vscroll) Case 'Edit Readonly' $idCtrl = GUICtrlCreateEdit($data_value, $data_x, $data_y, $data_width, $data_height, $ws_vscroll) GUICtrlSendMsg($idCtrl, $EM_SETREADONLY, 1, 0) ; Send Readonly Message to the control _ModifyStyle($idCtrl, $WS_TABSTOP, True) Case 'Edit Readonly Disable' $idCtrl = GUICtrlCreateEdit($data_value, $data_x, $data_y, $data_width, $data_height, $ws_vscroll) GUICtrlSendMsg($idCtrl, $EM_SETREADONLY, 1, 0) ; Send Readonly Message to the control GUICtrlSetState($idCtrl, $GUI_DISABLE) Case 'Label' $idCtrl = GUICtrlCreateLabel($data_value, $data_x, $data_y, $data_width, $data_height) Case 'Combo' $idCtrl = GUICtrlCreateCombo($data_value, $data_x, $data_y, $data_width, $data_height, $CBS_DROPDOWNLIST) _GUICtrlComboBox_SetCurSel($idCtrl, $data_value) Case 'Input' $idCtrl = GUICtrlCreateInput($data_value, $data_x, $data_y, $data_width, $data_height) Case 'Input Numonly' $idCtrl = GUICtrlCreateInput($data_value, $data_x, $data_y, $data_width, $data_height, $es_number) Case 'Input Readonly' $idCtrl = GUICtrlCreateInput($data_value, $data_x, $data_y, $data_width, $data_height) GUICtrlSendMsg($idCtrl, $EM_SETREADONLY, 1, 0) Case 'Input UPPERCASE' $idCtrl = GUICtrlCreateInput($data_value, $data_x, $data_y, $data_width, $data_height, $ES_UPPERCASE) Case 'Radio' $idCtrl = GUICtrlCreateRadio($data_value, $data_x, $data_y, $data_width, $data_height) Case 'Pic' $idCtrl = GUICtrlCreatePic($data_value, $data_x, $data_y, $data_width, $data_height) GUICtrlSetState($idCtrl, $GUI_DISABLE) EndSwitch ; sType ; Data control Tip GUICtrlSetTip($idCtrl, $data_tip) If $label_text <> Null And $sType <> "Checkbox" Then ; Label GUICtrlCreateLabel($label_text, $label_x, $label_y, $label_w, $label_h) ; Label control Tip GUICtrlSetTip(-1, $label_tip) EndIf Return $idCtrl EndFunc ;==>Control_Create ; Function to remove TABSTOP from GUI controls ; Author: Authenticity and ProgAndy: https://www.autoitscript.com/forum/topic/92382-tab-stops/?do=findComment&comment=664019 Func _ModifyStyle($hControl, $Style, $Remove = False) If Not IsHWnd($hControl) Then $hControl = GUICtrlGetHandle($hControl) Switch $Remove Case True Return _WinAPI_SetWindowLong($hControl, $GWL_STYLE, _ BitAND(_WinAPI_GetWindowLong($hControl, $GWL_STYLE), BitNOT($Style))) Case False Return _WinAPI_SetWindowLong($hControl, $GWL_STYLE, _ BitOR(_WinAPI_GetWindowLong($hControl, $GWL_STYLE), $Style)) EndSwitch EndFunc ;==>_ModifyStyle ; Debug output tool Func out($out1 = "", $out2 = "", $out3 = "", $out4 = "", $out5 = "", $out6 = "", $out7 = "", $out8 = "", $out9 = "", $out10 = "", $out11 = "", $out12 = "", $out13 = "", $out14 = "", $out15 = "") ;to console new line, value of $output ConsoleWrite($out1 & " " & $out2 & " " & $out3 & " " & $out4 & " " & $out5 & " " & $out6 & " " & $out7 & " " & $out8 & " " & $out9 & @CRLF) EndFunc ;==>out ; Registered to be called at exit Func _Exit() _GDIPlus_Shutdown() EndFunc ;==>_Exit EDIT: I wanted to make sure all the systems were intact and that script would run. Apologies for the huge code. The default picture path is hopefully irrelevant and: #include <Include\GUIScrollbars_Ex.au3> will likely need to be remarked or point to your location of the UDF. Edited May 13, 2018 by Xandy Human Male Programmer (-_-) Xandy About (^o^) Discord - Xandy Programmer MapIt (Tile world editor, Image Tile Extractor, and Game Maker)
Moderators Melba23 Posted May 13, 2018 Author Moderators Posted May 13, 2018 (edited) Xandy, The UDF registers the WM_HSCROLL message - which is also used by the slider. So it looks as if the message is being eaten by the UDF handler and so AutoIt never sees your slider. If you prevent horizontal scrolling by using this line: _GUIScrollbars_Generate($hGUI_Pic, 0, 8000) the slider does work - which would confirm the diagnosis. I wrote the UDF as a help to real beginners and did not do my usual trick of having separate message handler(s). I will look at how I might do something to remedy that. Thanks for the report. M23 Edit: As I suspected it looked as if the way I had coded the handler meant that it was eating the message if it was not from the scrollbars rather than passing it on to be processed by AutoIt. Try using this Beta version and see if it works for you in your full script. I can certainly use both slider and scrollbar in the code you posted: Edited May 10, 2020 by Melba23 Beta code removed Xandy 1 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
Xandy Posted May 13, 2018 Posted May 13, 2018 (edited) Yes! These systems are now working together. Thank you! Edited May 13, 2018 by Xandy Human Male Programmer (-_-) Xandy About (^o^) Discord - Xandy Programmer MapIt (Tile world editor, Image Tile Extractor, and Game Maker)
Moderators Melba23 Posted May 13, 2018 Author Moderators Posted May 13, 2018 Xandy, Great! I will release a new version of the UDF soon. Thanks again for the report. 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 May 13, 2018 Author Moderators Posted May 13, 2018 [New Version] - 18 May 18 Changed: UDF now plays nicely with other controls which use the same Windows messages. New UDFs, examples in first post. M23 Xandy and coffeeturtle 1 1 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
nhockm4v Posted May 14, 2018 Posted May 14, 2018 next version, please add function custom Scrollbars like https://www.w3schools.com/howto/howto_css_custom_scrollbar.asp, can change color scrollbar or style scrollbar.
Moderators Melba23 Posted May 14, 2018 Author Moderators Posted May 14, 2018 nhockm4v, I am afraid not a request I intend to honour - I had enough trouble just getting the standard scrollbars to work. If you want fancy ones then you code for them! 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
Qwerty212 Posted May 17, 2018 Posted May 17, 2018 Hi Melba, thanks for the last version. Did you got any advance with touchscreens? Greets from Barcelona
Moderators Melba23 Posted May 17, 2018 Author Moderators Posted May 17, 2018 Qwert212, Sorry, no - family matters have taken up a lot of my time recently. It is on my "to-do" list - honest! 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
Qwerty212 Posted May 17, 2018 Posted May 17, 2018 4 hours ago, Melba23 said: Qwert212, Sorry, no - family matters have taken up a lot of my time recently. It is on my "to-do" list - honest! M23 Don't worry. I hope everything goes fine with those family matters. Greets from Barcelona
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