Jump to content
Sign in to follow this  
GPinzone

GUICtrlCreateList scrolled to bottom by default

Recommended Posts

GPinzone

I have a list (GUICtrlCreateList) tall enough to display 7 items. A scrollbar appears when the list had more than 7 items, which is the desired behavior. However, if the list is showing the last 7 items, not the first 7. In other words, the scrollbar is scrolled to the end by default instead of the top of the list. Is there any way to change this behavior?

Here's what I have:

Local $List_Queue = GUICtrlCreateList("", 2, 60, 400, 100, BitOR($LBS_MULTIPLESEL,$WS_HSCROLL,$WS_VSCROLL,$WS_BORDER))
GUICtrlSetLimit(-1, 200) ; to limit horizontal scrolling

Gerard J. Pinzonegpinzone AT yahoo.com

Share this post


Link to post
Share on other sites
Melba23

GPinzone,

When I create a list it is the top 7 items that are displayed:

#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
#include <Constants.au3>
#include <ListBoxConstants.au3>

$hGUI = GUICreate("Test", 500, 500)

Local $cList = GUICtrlCreateList("", 2, 60, 400, 100, BitOR($LBS_MULTIPLESEL,$WS_HSCROLL,$WS_VSCROLL,$WS_BORDER))
GUICtrlSetLimit(-1, 200) ; to limit horizontal scrolling

GUISetState()

For $i = 1 To 20
    GUICtrlSetData($cList, "Item " & $i)
    Sleep(100)
Next

While 1
    Switch GUIGetMsg()
        Case $GUI_EVENT_CLOSE
            Exit
    EndSwitch
WEnd
Can you post a reproducer that results in you keeping the bottom 7 in view? :waco:

M23


Any of my own code posted anywhere on the forum is available for use by others without any restriction of any kind._______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

 

Share this post


Link to post
Share on other sites
GPinzone

I Think I know what's causing the issue for me now that I look at your code. I'm also using _GUICtrlListBox_SetSel to pre select the items as I add them to the list. I modified your example to include _GUICtrlListBox_SetSel and it exhibits the same behavior. 

#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
#include <Constants.au3>
#include <ListBoxConstants.au3>
#include <GuiListBox.au3>

$hGUI = GUICreate("Test", 500, 500)

Local $cList = GUICtrlCreateList("", 2, 60, 400, 100, BitOR($LBS_MULTIPLESEL, $WS_HSCROLL, $WS_VSCROLL, $WS_BORDER))
GUICtrlSetLimit(-1, 200) ; to limit horizontal scrolling GUISetState()

For $i = 1 To 20
    GUICtrlSetData($cList, "Item " & $i)
    _GUICtrlListBox_SetSel($cList, $i-1)
Next

GUISetState(@SW_SHOW)

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

I suppose a "solution" would be to do the loop twice something like:

For $i = 1 To 20
    GUICtrlSetData($cList, "Item " & $i)
Next

For $i = 20 To 1 Step -1
    _GUICtrlListBox_SetSel($cList, $i-1)
Next

to do the _GUICtrlListBox_SetSel stuff in reverse order, but that's not very elegant.


Gerard J. Pinzonegpinzone AT yahoo.com

Share this post


Link to post
Share on other sites
Melba23

GPinzone,

Then I suggest you tell the listbox to scroll to the top once you have filled it: ;)

#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
#include <Constants.au3>
#include <ListBoxConstants.au3>
#include <GuiListBox.au3>

$hGUI = GUICreate("Test", 500, 500)

Local $cList = GUICtrlCreateList("", 2, 60, 400, 100, BitOR($LBS_MULTIPLESEL, $WS_HSCROLL, $WS_VSCROLL, $WS_BORDER))
GUICtrlSetLimit(-1, 200) ; to limit horizontal scrolling GUISetState()

For $i = 1 To 20
    GUICtrlSetData($cList, "Item " & $i)
    _GUICtrlListBox_SetSel($cList, $i-1)
Next

GUICtrlSendMsg($cList, $LB_SETTOPINDEX, 0, 0) ; <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<

GUISetState(@SW_SHOW)

While 1
    Switch GUIGetMsg()
        Case $GUI_EVENT_CLOSE
            Exit
    EndSwitch
WEnd
That seems to work. :)

M23


Any of my own code posted anywhere on the forum is available for use by others without any restriction of any kind._______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

 

Share this post


Link to post
Share on other sites
GPinzone

Yeah, that'll do it. Thanks! :thumbsup:


Gerard J. Pinzonegpinzone AT yahoo.com

Share this post


Link to post
Share on other sites
Melba23

GPinzone,

Glad I could help. :)

M23


Any of my own code posted anywhere on the forum is available for use by others without any restriction of any kind._______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

 

Share this post


Link to post
Share on other sites
TheSaint

Why are you selecting each one as you add it?

I would (and do) just select the one I want, after the List has been fully populated, which is usually the first entry, by using

_GUICtrlListBox_SetSel($cList, 0)

which is outside the Loop, like Melba23's alternative method.

P.S. That will scroll it into view if it's not.

Edited by TheSaint

AutoIt.4.Life Clubrooms - Life is like a Donut (secret key)

Make sure brain is in gear before opening mouth!
Remember, what is not said, can be just as important as what is said.

Spoiler

What is the Secret Key? Life is like a Donut

If I put effort into communication, I expect you to read properly & fully, or just not comment.
Ignoring those who try to divert conversation with irrelevancies.
If I'm intent on insulting you or being rude, I will be obvious, not ambiguous about it.
I'm only big and bad, to those who have an over-active imagination.

I may have the Artistic Liesense ;) to disagree with you. TheSaint's Toolbox (be advised many downloads are not working due to ISP screwup with my storage)

userbar.png

Share this post


Link to post
Share on other sites
GPinzone

Knight:

   It's a CD/DVD duplicator queue, and I want all of the items on the list to be processed by default. That's why I want them all to be selected by default. If any of the discs are to be omitted, the person would click on the corresponding entry, which would toggle it off.

EDIT: After digging into _GUICtrlListBox_SetSel, I could have just used:

GUICtrlSendMsg(-1, $LB_SETSEL, True, $i)

instead of _GUICtrlListBox_SetSel. I still have to re-adjust the list position.
 

Edited by GPinzone

Gerard J. Pinzonegpinzone AT yahoo.com

Share this post


Link to post
Share on other sites
GPinzone

BTW, Take a look at the _GUICtrlListBox_SetSel function:

Func _GUICtrlListBox_SetSel($hWnd, $iIndex = -1, $fSelect = -1)
    If $Debug_LB Then __UDF_ValidateClassName($hWnd, $__LISTBOXCONSTANT_ClassNames)
    Local $i_ret = True
    If IsHWnd($hWnd) Then
        If $iIndex == -1 Then ; toggle all
            For $iIndex = 0 To _GUICtrlListBox_GetCount($hWnd) - 1
                $i_ret = _GUICtrlListBox_GetSel($hWnd, $iIndex)
                If ($i_ret == $LB_ERR) Then Return SetError($LB_ERR, $LB_ERR, False)
                If ($i_ret > 0) Then ;If Selected Then
                    $i_ret = _SendMessage($hWnd, $LB_SETSEL, False, $iIndex) <> -1
                Else
                    $i_ret = _SendMessage($hWnd, $LB_SETSEL, True, $iIndex) <> -1
                EndIf
                If ($i_ret == False) Then Return SetError($LB_ERR, $LB_ERR, False)
            Next
        ElseIf $fSelect == -1 Then ; toggle state of index
            If _GUICtrlListBox_GetSel($hWnd, $iIndex) Then ;If Selected Then
                Return _SendMessage($hWnd, $LB_SETSEL, False, $iIndex) <> -1
            Else
                Return _SendMessage($hWnd, $LB_SETSEL, True, $iIndex) <> -1
            EndIf
        Else ; set state according to flag
            Return _SendMessage($hWnd, $LB_SETSEL, $fSelect, $iIndex) <> -1
        EndIf
    Else
        If $iIndex == -1 Then ; toggle all
            For $iIndex = 0 To _GUICtrlListBox_GetCount($hWnd) - 1
                $i_ret = _GUICtrlListBox_GetSel($hWnd, $iIndex)
                If ($i_ret == $LB_ERR) Then Return SetError($LB_ERR, $LB_ERR, False)
                If ($i_ret > 0) Then ;If Selected Then
                    $i_ret = GUICtrlSendMsg($hWnd, $LB_SETSEL, False, $iIndex) <> -1
                Else
                    $i_ret = GUICtrlSendMsg($hWnd, $LB_SETSEL, True, $iIndex) <> -1
                EndIf
                If ($i_ret == False) Then Return SetError($LB_ERR, $LB_ERR, False)
            Next
        ElseIf $fSelect == -1 Then ; toggle state of index
            If _GUICtrlListBox_GetSel($hWnd, $iIndex) Then ;If Selected Then
                Return GUICtrlSendMsg($hWnd, $LB_SETSEL, False, $iIndex) <> -1
            Else
                Return GUICtrlSendMsg($hWnd, $LB_SETSEL, True, $iIndex) <> -1
            EndIf
        Else ; set state according to flag
            Return GUICtrlSendMsg($hWnd, $LB_SETSEL, $fSelect, $iIndex) <> -1
        EndIf
    EndIf
    Return $i_ret
EndFunc ;==>_GUICtrlListBox_SetSel

If the function is called without an index value (or given -1 as the index), it toggles all the entries and leaves the list at the bottom. Perhaps the loop counter should go from _GUICtrlListBox_GetCount($hWnd) - 1 to 0 instead? Or maybe the existing position is temporarily saved at the beginning of the function and then reset after it's run?

EDIT: Is it possible to use_GUIScrollBars_GetScrollPos to get the position on a list? I tried it just for fun, but it always returns -1.

Edited by GPinzone

Gerard J. Pinzonegpinzone AT yahoo.com

Share this post


Link to post
Share on other sites
TheSaint

Sorry, hadn't picked up on the Multiple selection angle.

By memory, another possible alternative way, and using Melba23's final scroll method, would be to do a count after the list is fully populated, and then a range selection.

Overall, I'd recommend following what Melba23 provided, I only interjected out of curiosity and to provide what I thought might be an alternative.

 

Not sure what you mean by getting position on list?

If you are just after a single selected item, then just get the selected Index for that.


AutoIt.4.Life Clubrooms - Life is like a Donut (secret key)

Make sure brain is in gear before opening mouth!
Remember, what is not said, can be just as important as what is said.

Spoiler

What is the Secret Key? Life is like a Donut

If I put effort into communication, I expect you to read properly & fully, or just not comment.
Ignoring those who try to divert conversation with irrelevancies.
If I'm intent on insulting you or being rude, I will be obvious, not ambiguous about it.
I'm only big and bad, to those who have an over-active imagination.

I may have the Artistic Liesense ;) to disagree with you. TheSaint's Toolbox (be advised many downloads are not working due to ISP screwup with my storage)

userbar.png

Share this post


Link to post
Share on other sites
GPinzone

Let's assume the listbox contains 100 items and the user has scrolled down some arbitrary distance from the top. The _GUICtrlListBox_SetSel command is issued to toggle one or more entries in the list, but this forces the list to scroll to the entry in being modified. If we want to preserve the scrollbar locations prior to executing _GUICtrlListBox_SetSel, how would we do that? I suggested using _GUIScrollBars_GetScrollPos to get the position before executing _GUICtrlListBox_SetSel, store it in a variable, execute _GUICtrlListBox_SetSel, then restore the scrolbar position after it's done. However, I'm not sure it possible to get or set a listbox's scrollbar position.

The second question would be whether or not the _GUICtrlListBox_SetSel function should be modified assuming preservation of scrollbar positions is possible.


Gerard J. Pinzonegpinzone AT yahoo.com

Share this post


Link to post
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
Sign in to follow this  

  • Similar Content

    • argumentum
      By argumentum
      I'd like to add tab Stops to a previously created listbox. Maybe use a GUICtrlSendMsg() or _SendMessage() but I don't know. Help 
      #include <GUIConstantsEx.au3> #include <GuiListBox.au3> #include <WinAPI.au3> Example() Func Example() Local $aTabs[4] = [3, 100, 200, 300], $idListBox ; Create GUI GUICreate("List Box Set Tab Stops", 400, 296) $idListBox = GUICtrlCreateList("", 2, 2, 396, 296) ;, BitOR($LBS_STANDARD, $LBS_USETABSTOPS)) GUISetState(@SW_SHOW) Local $Style = _WinAPI_GetWindowLong(GUICtrlGetHandle($idListBox), $GWL_STYLE) ;Capture Existing Style ;~ Local $ExStyle = _WinAPI_GetWindowLong(GUICtrlGetHandle($idListBox), $GWL_EXSTYLE) ;Capture Existing ExStyle ConsoleWrite("- before $Style = 0x" & Hex($Style) & @CRLF) ;~ ConsoleWrite("- before $ExStyle = 0x" & Hex($ExStyle) & @CRLF) GUICtrlSetStyle($idListBox, BitOR($Style, $LBS_USETABSTOPS)) ; change the Style $Style = _WinAPI_GetWindowLong(GUICtrlGetHandle($idListBox), $GWL_STYLE) ;~ $ExStyle = _WinAPI_GetWindowLong(GUICtrlGetHandle($idListBox), $GWL_EXSTYLE) ConsoleWrite("- after $Style = 0x" & Hex($Style) & @CRLF) ; updated style but is not reflected in it's behaviour ;~ ConsoleWrite("- after $ExStyle = 0x" & Hex($ExStyle) & @CRLF) ; Set tab stops _GUICtrlListBox_SetTabStops($idListBox, $aTabs) ; Add tabbed string _GUICtrlListBox_AddString($idListBox, "Column 1" & @TAB & "Column 2" & @TAB & "Column 3") ; Loop until the user exits. Do Until GUIGetMsg() = $GUI_EVENT_CLOSE GUIDelete() EndFunc ;==>Example  
    • Guy_
      By Guy_
      Let's say a script has to do something that may or may not shift the page a fair bit in a general DTP program, browser, ...
      In other words, the scrollbar was moved.
      (1) Can the original scrollbar position be saved and restored?
      I can think of a rough workaround or two, but I mean, more precisely...?
      (2) If so, is it for example a different control for every program?
      (3) Let's say for a workaround you might use the help of ...
      MouseWheel ( "direction" [, clicks = 1] ) Is there an absolute relationship of clicks to pixels?
      Or does the amount of scroll from these 'clicks' depend on how much movement was defined for the scroll wheel in Windows or Mouse driver software?
      Thank You
    • mpower
      By mpower
      Hi guys, I have a GUI which requires scrolling, however resizing is a bit of a problem because any time you scroll down/up and then resize, the controls move down/up and blank space is created within the scrollable area. 
      Any help with maintaining scrollable area size to be fixed would be great.
      Here is a reproducer:
      To achieve the undesirable effect I described, simply run the script, scroll down and then resize window. You will notice that new blank space is created either on top or on bottom of the window depending on scrolling/resizing direction. Easiest way to see how bad it is, is to scroll down the page about half-way and then maximise the window. You will notice now a whole bunch of blank space is added to the top of the window and scrolling up simply shows nothing, scrolling down shows controls but they are cut off because of the blank space created on top of the page.
      This is all happening within the yellow bg  child gui. I need to make it so that even if the GUI is resized the contents of the yellow bg child gui do not move and the scrollable area within the child gui remains the same.
      #NoTrayIcon #include-once #include <GUIConstantsEx.au3> #include <WindowsConstants.au3> #include <GUIScroll.au3> #include <SendMessage.au3> Opt("GUIResizeMode", 802) Global $parentgui_w = 880, $parentgui_h = 810, $childgui_w = $parentgui_w - 2, $childgui_h = $parentgui_h - 292 $parentgui = GUICreate("Scrollbar resize problem", $parentgui_w, $parentgui_h, -1, -1, BitOR($WS_MINIMIZEBOX, $WS_MAXIMIZEBOX, $WS_SIZEBOX)) GUISetBkColor(0xFFFFFF, $parentgui) $childgui = GUICreate("", $childgui_w, $childgui_h, -5, 263, $WS_POPUP, $WS_EX_MDICHILD, $parentgui) GUISetBkColor(0xFFF123, $childgui) Dim $buttons[25] For $i = 0 to 24 If $i > 0 Then $cPos = ControlGetPos($childgui, "", $buttons[$i - 1]) $buttons[$i] = GUICtrlCreateButton("Button " & $i + 1, ($childgui_w - 200) / 2, $cPos[1] + $cPos[3] + 50, 200, 80) Else $buttons[$i] = GUICtrlCreateButton("Button " & $i + 1, ($childgui_w - 200) / 2, 20, 200, 80) EndIf Next Scrollbar_Create($childgui, $SB_VERT, 130 * 25) Scrollbar_Step(15, $childgui, $SB_VERT) GUIRegisterMsg($WM_SIZE, "WM_SIZE") GUIRegisterMsg($WM_NCACTIVATE, "WM_NCACTIVATE") GUIRegisterMsg($WM_MOUSEWHEEL, "WM_MOUSEWHEEL") GUISetState(@SW_SHOW, $parentgui) GUISetState(@SW_SHOWNOACTIVATE, $childgui) While 1 $msg = GUIGetMsg(1) Switch $msg[1] Case $parentgui Switch $msg[0] Case $GUI_EVENT_CLOSE Exit Case $GUI_EVENT_RESTORE $pPos = WinGetPos($parentgui) WinMove($parentgui, "", Default, Default, $pPos[2]+1, $pPos[3]+1) WinMove($parentgui, "", Default, Default, $pPos[2]-1, $pPos[3]-1) EndSwitch EndSwitch WEnd Func WM_MOUSEWHEEL($hWnd, $iMsg, $wParam, $lParam) Local $iMw = BitShift($wParam, 16) $scroll_lines = 5 If $iMw > 0 Then For $i = 0 to $scroll_lines _SendMessage($childgui, $WM_VSCROLL, $SB_LINEUP) Next Else For $i = 0 to $scroll_lines _SendMessage($childgui, $WM_VSCROLL, $SB_LINEDOWN) Next EndIf Return $GUI_RUNDEFMSG EndFunc Func WM_SIZE($hwnd, $uMsg, $wParam, $lParam) If $hwnd = $parentgui Then $wPos = WinGetPos($parentgui) $pgui_wdiff = ($wPos[2] - $parentgui_w) / 2 $pgui_hdiff = ($wPos[3] - $parentgui_h) / 2 If $pgui_wdiff > 7 Then If $pgui_hdiff <> 0 Then If $wPos[2] > $parentgui_w Then WinMove($childgui, "", $wPos[0] + 2 + $pgui_wdiff, Default, $parentgui_w - 2, $wPos[3] - 306) Else WinMove($childgui, "", $wPos[0] + 2 + $pgui_wdiff, Default, $wPos[2] - 16, $wPos[3] - 306) EndIf Else WinMove($childgui, "", $wPos[0] + 2 + $pgui_wdiff, Default) EndIf ElseIf $pgui_wdiff < 7 Then If $wPos[0] <> -32000 Then WinMove($childgui, "", $wPos[0] + 8, Default, $wPos[2] - 16, $wPos[3] - 306) EndIf ElseIf $pgui_hdiff > 42 Then WinMove($childgui, "", Default, Default, Default, $wPos[3] - 306) EndIf EndIf Return 0 EndFunc Func WM_NCACTIVATE($hwnd, $imsg, $wparam) If $hwnd = $parentgui Then If NOT $wparam Then Return 1 EndIf Return $gui_rundefmsg EndFunc  
    • AaronOoi
      By AaronOoi
      Hi,
       
      I followed the AutoIT Help guideline for GUICtrlCreateList. When i clicked at the "Add" button, it will update the list to the 3rd line and if i continue to add, it will add to 4th and 5th line, if this going further, the data will be not shown as it keep getting down to the list. I want the data to update from the top always so that the updated data is always from the first line while the rest will keeps going down. Here is an example of the scripts:
      #include <GUIConstantsEx.au3> #include <MsgBoxConstants.au3> #include <EditConstants.au3> #include <ComboConstants.au3> Example() Func Example() Local $sMESSAGE = "The following buttons have been clicked" GUICreate("My GUI list") ; will create a dialog box that when displayed is centered Local $idAdd = GUICtrlCreateButton("Add", 64, 32, 75, 25) Local $idClear = GUICtrlCreateButton("Clear", 64, 72, 75, 25) Local $idMylist = GUICtrlCreateList("buttons that have been clicked", 176, 32, 121, 97,$CBS_AUTOHSCROLL) GUICtrlSetLimit(-1, 200) ; to limit horizontal scrolling GUICtrlSetData(-1, $sMESSAGE) Local $idClose = GUICtrlCreateButton("my closing button", 64, 160, 175, 25) GUISetState(@SW_SHOW) ; Loop until the user exits. While 1 Switch GUIGetMsg() Case $GUI_EVENT_CLOSE ExitLoop Case $idAdd GUICtrlSetData($idMylist, "You clicked button No1|") Case $idClear GUICtrlSetData($idMylist, "") Case $idClose MsgBox($MB_SYSTEMMODAL, "", "the closing button has been clicked", 2) Exit EndSwitch WEnd EndFunc ;==>Example  
       
       
       
    • Skysnake
      By Skysnake
       
      $ListLHT = GUICtrlCreateList("", 8, 152, 664, 279,BitOR($WS_GROUP,$WS_BORDER,$WS_VSCROLL,$WS_HSCROLL))  
      Hi, code works, but not documented.  Its not in the Help file, but HSCROLL works for List
      3.3.12.0
      If I am wrong, please point me in the right direction.
      Have a nice day now
×