Jump to content

Scrollbars with Statusbar


newtonspls
 Share

Recommended Posts

Hi-

I'm looking for a way to have scrollbars with a statusbar (or any label) that will lock at the bottom when the form is scrolled. I don't need the form to be resized I would like it stay fixed but just scroll up and down. I found the functions for scrolling and they work great it's I just can't figure out how to lock a control on the bottom while scrolling is enabled.

Here is an example of what I'm trying to do:

#include <GUIConstantsEx.au3>
#include <GuiStatusBar.au3>
#include <StaticConstants.au3>
#include <TabConstants.au3>
#include <WindowsConstants.au3>
#Include <GuiScrollBars.au3>
#include<GuiconstantsEx.au3>
#include <ScrollBarConstants.au3>
Global $SCROLL_AMOUNTS[1][3]
$SCROLL_AMOUNTS[0][0] = 1
#Region ### START Koda GUI section ### Form=
Global $Form2 = GUICreate("Form1", 625, 450, 327, 134)
    Scrollbar_Create($Form2, $SB_VERT, 581); But the actual window is 700 pixels high
    Scrollbar_Step(20, $Form2, $SB_VERT); Scrolls per 20 pixels. If not set the default is 1 (smooth scrolling)
Global $Tab1 = GUICtrlCreateTab(8, 8, 609, 553)
GUICtrlSetResizing(-1, $GUI_DOCKWIDTH+$GUI_DOCKHEIGHT)
Global $TabSheet1 = GUICtrlCreateTabItem("TabSheet1")
Global $Group1 = GUICtrlCreateGroup("Group1", 32, 48, 553, 489)
Global $Label1 = GUICtrlCreateLabel("Top of Screen", 56, 80, 72, 17)
Global $Label2 = GUICtrlCreateLabel("Bottom of Screen", 56, 504, 86, 17)
GUICtrlCreateGroup("", -99, -99, 1, 1)
Global $TabSheet2 = GUICtrlCreateTabItem("TabSheet2")
GUICtrlCreateTabItem("")
Global $StatusBar1 = _GUICtrlStatusBar_Create($Form2)
Global $StatusBar1_PartsWidth[1] = [-1]
_GUICtrlStatusBar_SetParts($StatusBar1, $StatusBar1_PartsWidth)
_GUICtrlStatusBar_SetText($StatusBar1, "Testing Statusbar Scrolling", 0)
GUISetState(@SW_SHOW)
#EndRegion ### END Koda GUI section ###

While 1
    $iScrollPos = Scrollbar_GetPos($Form2, $SB_VERT)
    $nMsg = GUIGetMsg()
    Switch $nMsg
        Case $GUI_EVENT_CLOSE
            Exit

EndSwitch
ConsoleWrite($iScrollPos&@CRLF)
WEnd
Link to comment
Share on other sites

  • Moderators

newtonspls,

Welcome to the AutoIt forum. :P

I get the following errors when I try to run the code you posted:

M:\Program\Au3 Scripts\fred4.au3(13,43) : ERROR: Scrollbar_Create(): undefined function.
    Scrollbar_Create($Form2, $SB_VERT, 581)
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^
M:\Program\Au3 Scripts\fred4.au3(14,40) : ERROR: Scrollbar_Step(): undefined function.
    Scrollbar_Step(20, $Form2, $SB_VERT)
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^
M:\Program\Au3 Scripts\fred4.au3(32,52) : ERROR: Scrollbar_GetPos(): undefined function.
    $iScrollPos = Scrollbar_GetPos($Form2, $SB_VERT)
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^

Where do you get the code for these 3 functions? Are they functions you have created? :x

Might I suggest you look at the Scrollbars UDF in my sig? It offers a very easy way to use scrollbars in a GUI. :shifty:

M23

Public_Domain.png.2d871819fcb9957cf44f4514551a2935.png 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 columns
ChooseFileFolder ---- Single and multiple selections from specified path treeview listing
Date_Time_Convert -- Easily convert date/time formats, including the language used
ExtMsgBox --------- A highly customisable replacement for MsgBox
GUIExtender -------- Extend and retract multiple sections within a GUI
GUIFrame ---------- Subdivide GUIs into many adjustable frames
GUIListViewEx ------- Insert, delete, move, drag, sort, edit and colour ListView items
GUITreeViewEx ------ Check/clear parent and child checkboxes in a TreeView
Marquee ----------- Scrolling tickertape GUIs
NoFocusLines ------- Remove the dotted focus lines from buttons, sliders, radios and checkboxes
Notify ------------- Small notifications on the edge of the display
Scrollbars ----------Automatically sized scrollbars with a single command
StringSize ---------- Automatically size controls to fit text
Toast -------------- Small GUIs which pop out of the notification area

 

Link to comment
Share on other sites

Sorry, here are the functions I used for the scrollbars. I got them from a post on this forum.

func Scrollbar_Create($hWnd, $iBar, $iMax)

    Local $Size = WinGetClientSize($hWnd)

    If $iBar = $SB_HORZ Then
        $Size = $Size[0]
    ElseIf $iBar = $SB_VERT Then
        $Size = $Size[1]
    Else
        Return 0
    EndIf

    ReDim $SCROLL_AMOUNTS[UBound($SCROLL_AMOUNTS)+1][3]
    $SCROLL_AMOUNTS[UBound($SCROLL_AMOUNTS)-1][0] = $hWnd
    $SCROLL_AMOUNTS[UBound($SCROLL_AMOUNTS)-1][1] = $iBar
    $SCROLL_AMOUNTS[UBound($SCROLL_AMOUNTS)-1][2] = $SCROLL_AMOUNTS[0][0]

    _GUIScrollBars_EnableScrollBar($hWnd, $iBar)
    _GUIScrollBars_SetScrollRange($hWnd, $iBar, 0,$iMax-1)

    _GUIScrollBars_SetScrollInfoPage($hWnd, $iBar, $Size)

    GUIRegisterMsg($WM_VSCROLL, "WM_VSCROLL")
    GUIRegisterMsg($WM_HSCROLL, "WM_HSCROLL")

    Return $iMax

EndFunc

Func Scrollbar_GetPos($hWnd, $iBar)

    Local $tSCROLLINFO = _GUIScrollBars_GetScrollInfoEx($hWnd, $iBar)

    Return DllStructGetData($tSCROLLINFO, "nPos")

EndFunc

Func Scrollbar_Scroll($hWnd, $iBar, $iPos)

    Local $tSCROLLINFO = _GUIScrollBars_GetScrollInfoEx($hWnd, $iBar)

    $iCurrentPos = DllStructGetData($tSCROLLINFO, "nPos")

    DllStructSetData($tSCROLLINFO, "nPos", $iPos)
    DllStructSetData($tSCROLLINFO, "fMask", $SIF_POS)
    _GUIScrollBars_SetScrollInfo($hWnd, $iBar, $tSCROLLINFO)

    If $iBar = $SB_VERT Then

        $iRound = 0

        for $i = 1 to UBound($SCROLL_AMOUNTS)-1
            If $SCROLL_AMOUNTS[$i][0] = $hWnd And $SCROLL_AMOUNTS[$i][1] = $SB_VERT Then
                $iRound = $SCROLL_AMOUNTS[$i][2]
            EndIf
        Next

        If Not $iRound Then Return 0

        _GUIScrollBars_ScrollWindow($hWnd, 0, Round(($iCurrentPos-$iPos)/$iRound)*$iRound)
    ElseIf $iBar = $SB_HORZ Then

        $iRound = 0

        for $i = 1 to UBound($SCROLL_AMOUNTS)-1
            If $SCROLL_AMOUNTS[$i][0] = $hWnd And $SCROLL_AMOUNTS[$i][1] = $SB_HORZ Then
                $iRound = $SCROLL_AMOUNTS[$i][2]
            EndIf
        Next

        If Not $iRound Then Return 0

        _GUIScrollBars_ScrollWindow($hWnd, Round(($iCurrentPos-$iPos)/$iRound)*$iRound, 0)
    Else
        Return 0
    EndIf

    Return 1

EndFunc

Func Scrollbar_Step($iStep, $hWnd=0, $iBar=0)

    If not $hWnd or Not $iBar Then

        $SCROLL_AMOUNTS[0][0] = $iStep
        Return 1

    EndIf

    $iID = 0

    for $i = 1 to UBound($SCROLL_AMOUNTS)-1
        If $SCROLL_AMOUNTS[$i][0] = $hWnd And $SCROLL_AMOUNTS[$i][1] = $iBar Then
            $iID = $i
            ExitLoop
        EndIf
    Next

    If Not $iID Then Return 0

    $SCROLL_AMOUNTS[$iID][2] = $iStep

    Return 1

EndFunc

Func WM_VSCROLL($hWnd, $Msg, $wParam, $lParam)

    #forceref $Msg, $wParam, $lParam
    Local $nScrollCode = BitAND($wParam, 0x0000FFFF)
    Local $index = -1, $yChar, $yPos
    Local $Min, $Max, $Page, $Pos, $TrackPos

    ; Get all the vertial scroll bar information
    Local $tSCROLLINFO = _GUIScrollBars_GetScrollInfoEx($hWnd, $SB_VERT)
    $Min = DllStructGetData($tSCROLLINFO, "nMin")
    $Max = DllStructGetData($tSCROLLINFO, "nMax")
    $Page = DllStructGetData($tSCROLLINFO, "nPage")
    ; Save the position for comparison later on
    $yPos = DllStructGetData($tSCROLLINFO, "nPos")
    $Pos = $yPos
    $TrackPos = DllStructGetData($tSCROLLINFO, "nTrackPos")

    $iRound = 0

    for $i = 1 to UBound($SCROLL_AMOUNTS)-1
        If $SCROLL_AMOUNTS[$i][0] = $hWnd And $SCROLL_AMOUNTS[$i][1] = $SB_VERT Then
            $iRound = $SCROLL_AMOUNTS[$i][2]
        EndIf
    Next

    if Not $iRound Then Return $GUI_RUNDEFMSG

    Switch $nScrollCode
        Case $SB_TOP ; user clicked the HOME keyboard key
            DllStructSetData($tSCROLLINFO, "nPos", $Min)

        Case $SB_BOTTOM ; user clicked the END keyboard key
            DllStructSetData($tSCROLLINFO, "nPos", $Max)

        Case $SB_LINEUP ; user clicked the top arrow
            DllStructSetData($tSCROLLINFO, "nPos", $Pos - $iRound)

        Case $SB_LINEDOWN ; user clicked the bottom arrow
            DllStructSetData($tSCROLLINFO, "nPos", $Pos + $iRound)

        Case $SB_PAGEUP ; user clicked the scroll bar shaft above the scroll box
            DllStructSetData($tSCROLLINFO, "nPos", $Pos - $Page)

        Case $SB_PAGEDOWN ; user clicked the scroll bar shaft below the scroll box
            DllStructSetData($tSCROLLINFO, "nPos", $Pos + $Page)

        Case $SB_THUMBTRACK ; user dragged the scroll box
            DllStructSetData($tSCROLLINFO, "nPos", Round($TrackPos/$iRound)*$iRound)
    EndSwitch

;~    // Set the position and then retrieve it.  Due to adjustments
;~    //   by Windows it may not be the same as the value set.

    DllStructSetData($tSCROLLINFO, "fMask", $SIF_POS)
    _GUIScrollBars_SetScrollInfo($hWnd, $SB_VERT, $tSCROLLINFO)
    _GUIScrollBars_GetScrollInfo($hWnd, $SB_VERT, $tSCROLLINFO)
    ;// If the position has changed, scroll the window and update it
    $Pos = DllStructGetData($tSCROLLINFO, "nPos")


    If ($Pos <> $yPos) Then
        _GUIScrollBars_ScrollWindow($hWnd, 0, $yPos - $Pos)
    EndIf

    Return $GUI_RUNDEFMSG

EndFunc   ;==>WM_VSCROLL

Func WM_HSCROLL($hWnd, $Msg, $wParam, $lParam)

    #forceref $Msg, $wParam, $lParam
    Local $nScrollCode = BitAND($wParam, 0x0000FFFF)
    Local $index = -1, $yChar, $yPos
    Local $Min, $Max, $Page, $Pos, $TrackPos

    ; Get all the vertial scroll bar information
    Local $tSCROLLINFO = _GUIScrollBars_GetScrollInfoEx($hWnd, $SB_HORZ)
    $Min = DllStructGetData($tSCROLLINFO, "nMin")
    $Max = DllStructGetData($tSCROLLINFO, "nMax")
    $Page = DllStructGetData($tSCROLLINFO, "nPage")
    ; Save the position for comparison later on
    $yPos = DllStructGetData($tSCROLLINFO, "nPos")
    $Pos = $yPos
    $TrackPos = DllStructGetData($tSCROLLINFO, "nTrackPos")

    $iRound = 0

    for $i = 1 to UBound($SCROLL_AMOUNTS)-1
        If $SCROLL_AMOUNTS[$i][0] = $hWnd And $SCROLL_AMOUNTS[$i][1] = $SB_HORZ Then
            $iRound = $SCROLL_AMOUNTS[$i][2]
        EndIf
    Next

    if Not $iRound Then Return $GUI_RUNDEFMSG

    Switch $nScrollCode
        Case $SB_TOP ; user clicked the HOME keyboard key
            DllStructSetData($tSCROLLINFO, "nPos", $Min)

        Case $SB_BOTTOM ; user clicked the END keyboard key
            DllStructSetData($tSCROLLINFO, "nPos", $Max)

        Case $SB_LINEUP ; user clicked the top arrow
            DllStructSetData($tSCROLLINFO, "nPos", $Pos - $iRound)

        Case $SB_LINEDOWN ; user clicked the bottom arrow
            DllStructSetData($tSCROLLINFO, "nPos", $Pos + $iRound)

        Case $SB_PAGEUP ; user clicked the scroll bar shaft above the scroll box
            DllStructSetData($tSCROLLINFO, "nPos", $Pos - $Page)

        Case $SB_PAGEDOWN ; user clicked the scroll bar shaft below the scroll box
            DllStructSetData($tSCROLLINFO, "nPos", $Pos + $Page)

        Case $SB_THUMBTRACK ; user dragged the scroll box
            DllStructSetData($tSCROLLINFO, "nPos", Round($TrackPos/$iRound)*$iRound)
    EndSwitch

;~    // Set the position and then retrieve it.  Due to adjustments
;~    //   by Windows it may not be the same as the value set.

    DllStructSetData($tSCROLLINFO, "fMask", $SIF_POS)
    _GUIScrollBars_SetScrollInfo($hWnd, $SB_HORZ, $tSCROLLINFO)
    _GUIScrollBars_GetScrollInfo($hWnd, $SB_HORZ, $tSCROLLINFO)
    ;// If the position has changed, scroll the window and update it
    $Pos = DllStructGetData($tSCROLLINFO, "nPos")


    If ($Pos <> $yPos) Then
        _GUIScrollBars_ScrollWindow($hWnd, $yPos - $Pos, 0)
    EndIf

    Return $GUI_RUNDEFMSG

EndFunc   ;==>WM_HSCROLL
Link to comment
Share on other sites

  • Moderators

newtonspls,

The problem arises because the whole of the client area of the GUI is scrolled and the statusbar forms part of that client area. :shifty:

So we will have to create a child GUI to hold the statusbar, which means we will have to make sure that it follows the main GUI around. Fortunately this is not difficult - if you know how! :nuke:

Here is my version of your script with such a child GUI. I have also used my GUIScrollbars_Ex UDF to generate the scrollbars to show you how easy it is to do this when you use the UDF - which you can find in in my sig: :x

#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
#include <GuiStatusBar.au3>
#include <GuiScrollbars_Ex.au3>

; Create main GUI
$hGUI = GUICreate("Test", 625, 450, 327, 134)

Global $Tab1 = GUICtrlCreateTab(8, 8, 600, 553)
GUICtrlSetResizing(-1, $GUI_DOCKWIDTH+$GUI_DOCKHEIGHT)
Global $TabSheet1 = GUICtrlCreateTabItem("TabSheet1")
Global $Group1 = GUICtrlCreateGroup("Group1", 32, 48, 553, 489)
Global $Label1 = GUICtrlCreateLabel("Top of Screen", 56, 80, 72, 17)
Global $Label2 = GUICtrlCreateLabel("Bottom of Screen", 56, 504, 86, 17)
GUICtrlCreateGroup("", -99, -99, 1, 1)
Global $TabSheet2 = GUICtrlCreateTabItem("TabSheet2")
GUICtrlCreateTabItem("")

; Generate scrollbars
_GUIScrollbars_Generate ($hGUI, 0, 553) ; Yes, it is this easy with my UDF!

GUISetState()

; Get position of main GUI
Global $aPos = WinGetPos($hGUI)
; Create a child GUI for the statusbar - we need to deduct 2 from the width to cater for the child GUI border
$hBar_GUI = GUICreate("Bar", $aPos[2] - 2, 19, $aPos[0], $aPos[1] + $aPos[3], BitOR($WS_POPUP, $WS_BORDER), -1, $hGUI)

Global $StatusBar1 = _GUICtrlStatusBar_Create($hBar_GUI)
Global $StatusBar1_PartsWidth[1] = [-1]
_GUICtrlStatusBar_SetParts($StatusBar1, $StatusBar1_PartsWidth)
_GUICtrlStatusBar_SetText($StatusBar1, "Testing Statusbar Scrolling", 0)

GUISetState(@SW_SHOW)

; Intercept the main GUI moving and move the statusbar GUI with it
GUIRegisterMsg($WM_MOVE, "GUI_Glue")

While 1
    Switch GUIGetMsg()
        Case $GUI_EVENT_CLOSE
            Exit
    EndSwitch
WEnd

Func GUI_Glue($hWnd, $iMsg, $wParam, $lParam)

    ; Ignore the unused parameters
    #forceref $iMsg, $wParam, $lParam
    ; Check which GUI sent the MOVE message
    Switch $hWnd
        Case $hGUI
            ; It was the main GUI so adjust the position of the statusbar GUI
            Local $aPos = WinGetPos($hGUI)
            WinMove($hBar_GUI, "", $aPos[0], $aPos[1] + $aPos[3])
    EndSwitch

EndFunc

I have commented liberally, so I hope you can follow what is going on. If you are not familiar with GUIRegisterMsg, I recommend the GUIRegisterMsg tutorial in the Wiki. Please do ask if you have any questions - we are all here to learn. :P

M23

Public_Domain.png.2d871819fcb9957cf44f4514551a2935.png 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 columns
ChooseFileFolder ---- Single and multiple selections from specified path treeview listing
Date_Time_Convert -- Easily convert date/time formats, including the language used
ExtMsgBox --------- A highly customisable replacement for MsgBox
GUIExtender -------- Extend and retract multiple sections within a GUI
GUIFrame ---------- Subdivide GUIs into many adjustable frames
GUIListViewEx ------- Insert, delete, move, drag, sort, edit and colour ListView items
GUITreeViewEx ------ Check/clear parent and child checkboxes in a TreeView
Marquee ----------- Scrolling tickertape GUIs
NoFocusLines ------- Remove the dotted focus lines from buttons, sliders, radios and checkboxes
Notify ------------- Small notifications on the edge of the display
Scrollbars ----------Automatically sized scrollbars with a single command
StringSize ---------- Automatically size controls to fit text
Toast -------------- Small GUIs which pop out of the notification area

 

Link to comment
Share on other sites

M23-

Thanks for your help on this. I definitely like your UDF for Scrollbars :P And very simple to use :x I understand better about having a child window "glued" to bottom of the main form but is there any way to have the child window look as if it’s part of the main form? Also do you know if there is a way to have a tabsheet scroll only?

Thanks again for your help.

Link to comment
Share on other sites

  • Moderators

newtonspls,

is there any way to have the child window look as if it’s part of the main form?

Reverse the process and make a child GUI within the main GUI (with its statusbar) to hold the scrollable area and tabs: :P

#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
#include <GuiStatusBar.au3>
#include <GuiScrollbars_Ex.au3>

; Create main GUI
$hGUI = GUICreate("Test", 625, 450, 327, 134)

Global $StatusBar1 = _GUICtrlStatusBar_Create($hGUI)
Global $StatusBar1_PartsWidth[1] = [-1]
_GUICtrlStatusBar_SetParts($StatusBar1, $StatusBar1_PartsWidth)
_GUICtrlStatusBar_SetText($StatusBar1, "Testing Statusbar Scrolling", 0)

GUISetState()

; Create a child GUI for the scrollbars
$hBar_GUI = GUICreate("Bar", 625, 425, 0, 0, $WS_POPUP, $WS_EX_MDICHILD, $hGUI)

Global $Tab1 = GUICtrlCreateTab(8, 8, 600, 553)
GUICtrlSetResizing(-1, $GUI_DOCKWIDTH+$GUI_DOCKHEIGHT)
Global $TabSheet1 = GUICtrlCreateTabItem("TabSheet1")
Global $Group1 = GUICtrlCreateGroup("Group1", 32, 48, 553, 489)
Global $Label1 = GUICtrlCreateLabel("Top of Screen", 56, 80, 72, 17)
Global $Label2 = GUICtrlCreateLabel("Bottom of Screen", 56, 504, 86, 17)
GUICtrlCreateGroup("", -99, -99, 1, 1)
Global $TabSheet2 = GUICtrlCreateTabItem("TabSheet2")
GUICtrlCreateTabItem("")

GUISetState()

; Generate scrollbars
_GUIScrollbars_Generate ($hBar_GUI, 0, 553)

While 1
    Switch GUIGetMsg()
        Case $GUI_EVENT_CLOSE
            Exit
    EndSwitch
WEnd

Better? :x

is a way to have a tabsheet scroll only?

Do you mean that the scrollbars appear on just the one tabsheet? If so, then we can do it like this: :shifty:

#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
#include <GuiStatusBar.au3>
#include <GuiScrollbars_Ex.au3>

; Create main GUI with tabsheets and status bar
$hGUI = GUICreate("Test", 620, 450, 327, 134)

Global $hTab = GUICtrlCreateTab(10, 10, 600, 410)
GUICtrlSetResizing(-1, $GUI_DOCKWIDTH+$GUI_DOCKHEIGHT)
Global $TabSheet1 = GUICtrlCreateTabItem("TabSheet1")
Global $TabSheet2 = GUICtrlCreateTabItem("TabSheet2")
GUICtrlCreateTabItem("")

Global $StatusBar1 = _GUICtrlStatusBar_Create($hGUI)
Global $StatusBar1_PartsWidth[1] = [-1]
_GUICtrlStatusBar_SetParts($StatusBar1, $StatusBar1_PartsWidth)
_GUICtrlStatusBar_SetText($StatusBar1, "Testing Statusbar Scrolling", 0)

GUISetState()

; Create a child GUI for the scrollbars which fits inside the tabsheets
$hBar_GUI = GUICreate("Bar", 580, 350, 20, 50, $WS_POPUP, $WS_EX_MDICHILD, $hGUI)

Global $Group1 = GUICtrlCreateGroup("Group1", 10, 10, 560, 560)
Global $Label1 = GUICtrlCreateLabel("Top of Screen", 20, 30, 100, 20)
Global $Label2 = GUICtrlCreateLabel("Bottom of Screen", 20, 540, 100, 20)
GUICtrlCreateGroup("", -99, -99, 1, 1)

GUISetState()

; Generate scrollbars on the child
_GUIScrollbars_Generate ($hBar_GUI, 0, 560)

$iLastTab = 0

While 1
    Switch GUIGetMsg()
        Case $GUI_EVENT_CLOSE
            Exit
        Case $hTab
            ; Check which Tab is active
            $iCurrTab = GUICtrlRead($hTab)
            ; If the Tab has changed
            If $iCurrTab <> $iLastTab Then
                ; Show/Hide the scrollable GUI as required
                Switch $iCurrTab
                    Case 0
                        WinSetState($hBar_GUI, "", @SW_SHOW)
                    Case 1
                        WinSetState($hBar_GUI, "", @SW_HIDE)
                EndSwitch
                ; Store the value for future comparisons
                $iLastTab = $iCurrTab
            EndIf

    EndSwitch
WEnd

You can see that the tab code in the GUIGetMsg loop gets a bit complicated. You might like to read the Tabs tutorial in the Wiki to see why. :nuke:

M23

Public_Domain.png.2d871819fcb9957cf44f4514551a2935.png 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 columns
ChooseFileFolder ---- Single and multiple selections from specified path treeview listing
Date_Time_Convert -- Easily convert date/time formats, including the language used
ExtMsgBox --------- A highly customisable replacement for MsgBox
GUIExtender -------- Extend and retract multiple sections within a GUI
GUIFrame ---------- Subdivide GUIs into many adjustable frames
GUIListViewEx ------- Insert, delete, move, drag, sort, edit and colour ListView items
GUITreeViewEx ------ Check/clear parent and child checkboxes in a TreeView
Marquee ----------- Scrolling tickertape GUIs
NoFocusLines ------- Remove the dotted focus lines from buttons, sliders, radios and checkboxes
Notify ------------- Small notifications on the edge of the display
Scrollbars ----------Automatically sized scrollbars with a single command
StringSize ---------- Automatically size controls to fit text
Toast -------------- Small GUIs which pop out of the notification area

 

Link to comment
Share on other sites

  • Moderators

newtonspls,

My pleasure. :x

M23

Public_Domain.png.2d871819fcb9957cf44f4514551a2935.png 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 columns
ChooseFileFolder ---- Single and multiple selections from specified path treeview listing
Date_Time_Convert -- Easily convert date/time formats, including the language used
ExtMsgBox --------- A highly customisable replacement for MsgBox
GUIExtender -------- Extend and retract multiple sections within a GUI
GUIFrame ---------- Subdivide GUIs into many adjustable frames
GUIListViewEx ------- Insert, delete, move, drag, sort, edit and colour ListView items
GUITreeViewEx ------ Check/clear parent and child checkboxes in a TreeView
Marquee ----------- Scrolling tickertape GUIs
NoFocusLines ------- Remove the dotted focus lines from buttons, sliders, radios and checkboxes
Notify ------------- Small notifications on the edge of the display
Scrollbars ----------Automatically sized scrollbars with a single command
StringSize ---------- Automatically size controls to fit text
Toast -------------- Small GUIs which pop out of the notification area

 

Link to comment
Share on other sites

  • Moderators

newtonspls,

You get a better response time on switching tabs if you do this: :x

; Show/Hide the scrollable GUI as required
Switch $iCurrTab
    Case 0
        GUISetState(@SW_SHOW, $hBar_GUI)
    Case 1
        GUISetState(@SW_HIDE, $hBar_GUI)
EndSwitch

I forgot we were using items created by the native functions rather than a UDF. :P

M23

Public_Domain.png.2d871819fcb9957cf44f4514551a2935.png 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 columns
ChooseFileFolder ---- Single and multiple selections from specified path treeview listing
Date_Time_Convert -- Easily convert date/time formats, including the language used
ExtMsgBox --------- A highly customisable replacement for MsgBox
GUIExtender -------- Extend and retract multiple sections within a GUI
GUIFrame ---------- Subdivide GUIs into many adjustable frames
GUIListViewEx ------- Insert, delete, move, drag, sort, edit and colour ListView items
GUITreeViewEx ------ Check/clear parent and child checkboxes in a TreeView
Marquee ----------- Scrolling tickertape GUIs
NoFocusLines ------- Remove the dotted focus lines from buttons, sliders, radios and checkboxes
Notify ------------- Small notifications on the edge of the display
Scrollbars ----------Automatically sized scrollbars with a single command
StringSize ---------- Automatically size controls to fit text
Toast -------------- Small GUIs which pop out of the notification area

 

Link to comment
Share on other sites

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 account

Sign in

Already have an account? Sign in here.

Sign In Now
 Share

  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...