scrollutil::scrollableframe Commandscrollutil::scrollableframe – Create and manipulate
    scrollableframe widgetsscrollutil::scrollableframe pathName ?options?
-background -highlightbackground -relief -borderwidth -highlightcolor -xscrollcommand -cursor -highlightthickness -yscrollcommand
-contentheight
    screenDistance-contentwidth
    screenDistance-fitcontentheight
    boolean-fitcontentwidth
    boolean-height
    screenDistance-takefocus
    0|1|""|command-width
    screenDistance-xscrollincrement
    screenDistance-yscrollincrement
    screenDistancepathName attrib ?name
    ?value name value ...??pathName autofillx
    ?boolean?pathName autofilly
    ?boolean?pathName autosize
    ?w|h|wh?pathName cget
    optionpathName configure
    ?option ?value option value ...??pathName contentframepathName hasattrib
    namepathName scan option
      args
      pathName scan mark x ypathName scan dragto x y
        ?gain? pathName see widget
    ?nw|ne|sw|se?pathName seerect x1
    y1 x2 y2
    ?nw|ne|sw|se?pathName unsetattrib
    namepathName xview
      ?args?
      pathName xviewpathName xview unitspathName xview moveto
        fractionpathName xview scroll number
        units|pagespathName yview
      ?args?
      pathName yviewpathName yview unitspathName yview moveto
        fractionpathName yview scroll number
        units|pagesscrollutil::scrollableframe – Create and manipulate
    scrollableframe widgetsscrollutil::scrollableframe pathName ?options?
scrollutil::scrollableframe command creates a
    new window named pathName and of the class
    Scrollableframe, and makes it into a
    scrollableframe widget.  Additional options, described below,
    may be specified on the command line or in the option database to configure
    aspects of the scrollableframe widget such as its width, height, and
    scrolling increments.  The
    scrollutil::scrollableframe command returns its
    pathName argument.  At the time this command is
    invoked, there must not exist a window named pathName,
    but pathName's parent must exist.-xscrollcommand and -yscrollcommand
    configuration options and the associated Tcl command has the
    xview and yview subcommands.  The content frame may
    contain any number of arbitrary widgets.  In other words, the
    scrollutil::scrollableframe command implements a
    scrollable widget container.contentframe subcommand.  Individual
    widgets contained in it can be made visible in the scrollableframe window
    with the aid of the see
    subcommand.  In addition to scrolling, scrollableframe widgets also
    support scanning, with the aid of appropriate mouse event bindings that
    invoke the scan subcommand.set sa [scrollutil::scrollarea ...] set sf [scrollutil::scrollableframe $sa.sf ...] $sa setwidget $sf set cf [$sf contentframe] <populate the content frame> $sf autosize w update idletasks $sf configure -height ... -yscrollincrement ... pack $sa -expand yes -fill both
scrollutil::scrollableframe command automatically
    registers it for scrolling with the mouse wheel or touchpad, by passing its
    path name to the scrollutil::enableScrollingByWheel
    command.-background -highlightbackground -relief -borderwidth -highlightcolor -xscrollcommand -cursor -highlightthickness -yscrollcommand
-background,
    -highlightbackground,
    -highlightcolor, and
    -highlightthickness options are only supported by the
    Scrollutil package, but not by Scrollutil_tile.  They have the same
    default values as the options of the same names for Tk frame widgets. 
    The default values of the remaining standard options are:-borderwidth 0 -cursor "" -relief flat -xscrollcommand "" -yscrollcommand ""
| Command-Line Name: | -contentheight | 
| Database Name: |  contentHeight | 
| Database Class: |  ContentHeight | 
Specifies the desired height for the content frame in any of the forms acceptable to
Tk_GetPixels. If the option's value is less than or equal to zero then the content frame's height is made just large enough to hold all its children. This option is only relevant if the value of the-fitcontentheightoption is false; otherwise the content frame will have the same height as the scrollableframe window (excluding the latter's border and highlight rectangle, if any), regardless of the value of the-contentheightoption. The default is0, which is suitable for the vast majority of applications.
| Command-Line Name: | -contentwidth | 
| Database Name: |  contentWidth | 
| Database Class: |  ContentWidth | 
Specifies the desired width for the content frame in any of the forms acceptable to
Tk_GetPixels. If the option's value is less than or equal to zero then the content frame's width is made just large enough to hold all its children. This option is only relevant if the value of the-fitcontentwidthoption is false; otherwise the content frame will have the same width as the scrollableframe window (excluding the latter's border and highlight rectangle, if any), regardless of the value of the-contentwidthoption. The default is0, which is suitable for the vast majority of applications.
| Command-Line Name: | -fitcontentheight | 
| Database Name: |  fitContentHeight | 
| Database Class: |  FitContentHeight | 
Specifies a boolean value indicating whether or not the content frame should have the same height as the scrollableframe window (excluding the latter's border and highlight rectangle, if any). If true then the content frame's height will be kept in sync with that of the widget and the value of the
-contentheightoption will be ignored. The default is0.
| Command-Line Name: | -fitcontentwidth | 
| Database Name: |  fitContentWidth | 
| Database Class: |  FitContentWidth | 
Specifies a boolean value indicating whether or not the content frame should have the same width as the scrollableframe window (excluding the latter's border and highlight rectangle, if any). If true then the content frame's width will be kept in sync with that of the widget and the value of the
-contentwidthoption will be ignored. The default is0.
| Command-Line Name: | -height | 
| Database Name: |  height | 
| Database Class: |  Height | 
Specifies the desired height for the scrollableframe widget in any of the forms acceptable to
Tk_GetPixels. Note that this sets the inner height, excluding the border and highlight rectangle (if any) drawn around the outside of the widget. The default is7c, which should be overridden with a suitable application-specific value.
| Command-Line Name: | -takefocus | 
| Database Name: |  takeFocus | 
| Database Class: |  TakeFocus | 
This option determines whether the scrollableframe widget accepts the focus during keyboard traversal. It is almost identical to the standard option of the same name (see the options manual entry for details). The only difference is that not the scrollableframe widget itself but its content frame will receive the focus during keyboard traversal with the standard keys (
TabandShift-Tab). The default is0, being that a scrollableframe widget is esentially a frame used as a view for its content frame component.
| Command-Line Name: | -width | 
| Database Name: |  width | 
| Database Class: |  Width | 
Specifies the desired width for the scrollableframe widget in any of the forms acceptable to
Tk_GetPixels. Note that this sets the inner width, excluding the border and highlight rectangle (if any) drawn around the outside of the widget. The default is10c, which should be overridden with a suitable application-specific value.
| Command-Line Name: | -xscrollincrement | 
| Database Name: |  xScrollIncrement | 
| Database Class: |  ScrollIncrement | 
Specifies an increment for horizontal scrolling, in any of the forms acceptable to
Tk_GetPixels. If the value of this option is greater than zero then the horizontal view in the window will be constrained so that the x coordinate within the content frame at the left edge of the window is always an even multiple ofxScrollIncrement; furthermore, the units for horizontal scrolling (see thexviewsubcommad) will also bexScrollIncrement. If the value is less than or equal to zero then the horizontal scrolling is unconstrained. The default is0.
| Command-Line Name: | -yscrollincrement | 
| Database Name: |  yScrollIncrement | 
| Database Class: |  ScrollIncrement | 
Specifies an increment for vertical scrolling, in any of the forms acceptable to
Tk_GetPixels. If the value of this option is greater than zero then the vertical view in the window will be constrained so that the y coordinate within the content frame at the top edge of the window is always an even multiple ofyScrollIncrement; furthermore, the units for vertical scrolling (see theyviewsubcommad) will also beyScrollIncrement. If the value is less than or equal to zero then the vertical scrolling is unconstrained. The default is0.
scrollutil::scrollableframe command creates a new
      Tcl command whose name is pathName.  This
      command may be used to invoke various operations on the widget.  It
      has the following general form:
      pathName option ?arg arg ...?
option and the args determine
    the exact behavior of the command.  The following commands are
    possible for scrollableframe widgets:pathName attrib
        ?name ?value name value ...??name is specified, the command returns a list of
        pairs, each of which contains the name and the value of an attribute
        for pathName.  If name is
        specified with no value, then the command returns
        the value of the one named attribute, or an empty string if no
        corresponding value exists (you can use the hasattrib subcommand to distinguish this
        case from the one that the value of an existing attribute is an
        empty string).  If one or more
        name-value pairs are specified,
        then the command sets the given widget attribute(s) to the given
        value(s); in this case the return value is an empty string.  Each
        name may be an arbitrary string.pathName autofillx
        ?boolean?-fitcontentwidth option to true if
        the content frame's requested width is less than the scrollableframe's
        inner width and to false otherwise.  Moreover, the command makes
        sure that this action will be repeated whenever the content frame's
        requested width or the scrollableframe's inner width changes.  If
        the optional argument is false then the command clears the flag that
        controls this dynamic action.  In both cases, the return value is
        an empty string.  Without the optional argument the command
        returns the current value of the above-mentioned flag.pathName autofilly
        ?boolean?-fitcontentheight option to true if
        the content frame's requested height is less than the scrollableframe's
        inner height and to false otherwise.  Moreover, the command makes
        sure that this action will be repeated whenever the content frame's
        requested height or the scrollableframe's inner height changes. 
        If the optional argument is false then the command clears the flag that
        controls this dynamic action.  In both cases, the return value is
        an empty string.  Without the optional argument the command
        returns the current value of the above-mentioned flag.pathName autosize
        ?dimensions?-width and/or -height option of the scrollableframe to the
        requested width and/or height of its content frame, according to the
        optional dimensions argument, whose possible values
        are w (width), h (height), and
        wh (width and height).  The default is an
        empty string, meaning that neither the width nor the height is
        explicitly requested to be set.  Note that if the value of
        the -fitcontentwidth
        option is true then the command sets the widget's inner width to the
        requested width of its content frame, regardless of whether this was
        explicitly specified or not.  Similarly, if the value of
        the -fitcontentheight option is true
        then the command sets the widget's inner height to the requested height
        of its content frame, even if this was not explicitly
        specified."after 100"  callback, to make sure that by
        the time the widget's width and/or height are set, the geometry
        management calculations in its content frame are finished.pathName cget
        optionoption, which may have any of the values accepted
        by the scrollutil::scrollableframe command.pathName configure
        ?option ?value option value
        ...??option is specified, the command returns a
        list describing all of the available options for
        pathName (see Tk_ConfigureInfo
        for information on the format of this list).  If
        option is specified with no
        value, then the command returns a list describing
        the one named option (this list will be identical to the corresponding
        sublist of the value returned if no option is
        specified).  If one or more
        option-value pairs are
        specified, then the command modifies the given widget option(s) to have
        the given value(s); in this case the return value is an empty
        string.  option may have any of the values
        accepted by the scrollutil::scrollableframe
        command.pathName
        contentframepathName hasattrib
        name1 if the attribute name
        exists and 0 otherwise.pathName scan option
        argsoption:pathName scan mark x
            yx and y and the
            current view in the scrollableframe window; used in conjunction
            with later  scan dragto 
            commands.  Typically this command is associated with a mouse
            button press in the widget and x and
            y are the coordinates of the mouse.  It
            returns an empty string.pathName scan dragto x y
            ?gain?x and y arguments (which
            are typically mouse coordinates) and the x and
            y arguments to the last  scan
            mark  command for the widget.  It then
            adjusts the view by gain times the difference
            in coordinates, where gain defaults to
            10.  This command is typically associated with
            mouse motion events in the widget, to produce the effect of
            dragging the content frame at high speed through the window. 
            The return value is an empty string.pathName see widget
        ?corner?widget becomes visible in it.  The
        specified widget must be a descendant of the content frame and must
        have the same toplevel.  In addition, it must be managed by some
        geometry manager (such as grid,
        pack, place,
        text, or canvas).  The
        optional corner argument specifies which corner of
        widget should become visible if it is too large to
        fit into the window.  The possible values are
        nw (north-west), ne
        (north-east), sw (south-west), and
        se (south-east).  The default corner is
        nw.$w is a descendant
        of the content frame of the scrollableframe widget
        $sf (it is assumed that $sf doesn't contain
        % characters):
            
bind $w <<TraverseIn>> [list $sf see %W]
          
        $w was embedded into a scrollarea via the latter's setwidget subcommand, and
        the scrollarea in turn is a descendant of the content frame, then it is
        more user-friendly to bring the scrollarea into view rather than just
        the widget:
            
bind $w <<TraverseIn>> [list seeScrollarea $sf %W]
proc seeScrollarea {sf w} { $sf see [scrollutil::getscrollarea $w] }
          
        pathName seerect x1
        y1 x2 y2 ?corner?x1,
        y1, x2, and
        y2 becomes visible in it.  These coordinates
        are relative to the content frame and specify two diagonally opposite
        corners of the rectangle (which will include its upper and left edges
        but not its lower or right edges).  The optional
        corner argument specifies which corner of the
        rectangle should become visible if it is too large to fit into the
        window.  The possible values are nw
        (north-west), ne (north-east),
        sw (south-west), and se
        (south-east).  The default corner is nw.pathName
        unsetattrib namename.  Returns an
        empty string.pathName xview
        ?args?pathName xview0 and 1; together
            they describe the horizontal span that is visible in the
            window.  For example, if the first element is 0.2
            and the second element is 0.6 then 20% of the content
            frame is off-screen to the left, the middle 40% is visible in the
            window, and 40% of the content frame is off-screen to the
            right.  These are the same values passed to scrollbars via the
            -xscrollcommand option.pathName xview
            unitsunits is displayed at the
            left edge of the window.  This argument specifies a number of
            units of the xScrollIncrement option if it is
            greater than zero, or of one-tenth the window's inner width
            otherwise.pathName xview moveto
            fractionfraction of the total width of the content
            frame is off-screen to the left.  fraction
            must be a fraction between 0 and 1.pathName xview scroll number
            whatnumber and
            what.  number must be
            an integer or a float; if it is a float then it is converted to an
            integer, rounded away from 0. 
            what must be either units
            or pages or an abbreviation of one of
            these.  If what is
            units, the view adjusts left or right in units
            of the xScrollIncrement option if it is
            greater than zero, or in units of one-tenth the window's inner
            width otherwise.  If what is
            pages then the view adjusts in units of
            nine-tenths the window's inner width.  If
            number is negative then information farther to
            the left becomes visible; if it is positive then information
            farther to the right becomes visible.pathName yview
        ?args?pathName yview0 and 1; together
            they describe the vertical span that is visible in the
            window.  For example, if the first element is 0.2
            and the second element is 0.6 then 20% of the content
            frame is off-screen to the top, the middle 40% is visible in the
            window, and 40% of the content frame is off-screen to the
            bottom.  These are the same values passed to scrollbars via
            the -yscrollcommand option.pathName yview
            unitsunits is displayed at the
            top edge of the window.  This argument specifies a number of
            units of the yScrollIncrement option if it is
            greater than zero, or of one-tenth the window's inner height
            otherwise.pathName yview moveto
            fractionfraction of the total height of the content
            frame is off-screen to the top.  fraction
            must be a fraction between 0 and 1.pathName yview scroll number
            whatnumber and what. 
            number must be an integer or a float; if it is
            a float then it is converted to an integer, rounded away from
            0.  what must be either
            units or pages or an
            abbreviation of one of these.  If what is
            units, the view adjusts up or down in units of
            the yScrollIncrement option if it is
            greater than zero, or in units of one-tenth the window's inner
            height otherwise.  If what is
            pages then the view adjusts in units of
            nine-tenths the window's inner height.  If
            number is negative then information farther to
            the top becomes visible; if it is positive then information farther
            to the bottom becomes visible.The scrollutil::scrollableframe widget was designed as a lightweight, theme-able, and full-featured replacement for BWidget ScrollableFrame and iwidgets::scrolledframe. The following table contains a comparison of the options and commands provided by the three widgets:
| scrollutil::scrollableframe | BWidget ScrollableFrame | iwidgets::scrolledframe | 
|---|---|---|
| -background | -background | -background | 
| -borderwidth | -borderwidth | |
| -cursor | -cursor | |
| -contentheight | -areaheight | [pathName component canvas] \ | 
| -contentwidth | -areawidth | [pathName component canvas] \ | 
| -fitcontentheight | -constrainedheight | bind [pathName component canvas]
      <Configure> \ | 
| -fitcontentwidth | -constrainedwidth | bind [pathName component canvas]
      <Configure> \ | 
| -height(sets the inner height,
      excludingthe border and highlight rectangle, if any) | -height(inner height = total height) | -height(sets the total height,
      includingthe border and horizontal scrollbar, if any) | 
| -highlightbackground | ||
| -highlightcolor | ||
| -highlightthickness | ||
| -relief | -relief | |
| -takefocus | ||
| -width(sets the inner width,
      excludingthe border and highlight rectangle, if any) | -width(inner width = total width) | -width(sets the total width,
      includingthe border and vertical scrollbar, if any) | 
| -xscrollcommand | -xscrollcommand | |
| -xscrollincrement | -xscrollincrement | -xscrollincrementfor[pathName
      component canvas] | 
| -yscrollcommand | -yscrollcommand | |
| -yscrollincrement | -yscrollincrement | -yscrollincrementfor[pathName
      component canvas] | 
| attrib | ||
| autosize | ||
| autofillx | ||
| autofilly | ||
| cget | cget | cget | 
| configure | configure | configure | 
| contentframe | getframe | childsite | 
| hasattrib | ||
| scan(with mouse event bindings) | ||
| see widget
      ?nw|ne|sw|se? | see widget
      ?top|bottom ?left|right?? | |
| seerect x1 y1 x2 y2
      ?nw|ne|sw|se? | ||
| unsetattrib | ||
| xview | xview | xview | 
| yview | yview | yview | 
| xview|yview units | ||
| xview|yview moveto 0|1 | xview|yview moveto 0|1 | justify
      left|right|top|bottom(shortcut for xview|yview
      moveto 0|1) | 
REMARK 1:  For the see command provided by
  the BWidget ScrollableFrame widget one cannot specify the horizontal side
  without the vertical one.  More annoying is, however, that in the
  presence of a positive -xscrollincrement or
  -yscrollincrement value, widgets that are small enough to
  fit into the window are quite often just partially brought into view. 
  In addition, the command works only for direct children of the
  ScrollableFrame widget's content frame.
REMARK 2:  The iwidgets::scrolledframe widget has no
  equivalents of the scrollutil::scrollableframe options
  -contentheight, -contentwidth,
  -fitcontentheight, and
  -fitcontentwidth, but these can be emulated (using
  undocumented internal information!) as shown above.  It provides a
  justify command, which is, however, just a shortcut
  for  xview|yview moveto 0|1. 
  What this widget is really missing, is a see command for
  making individual widgets visible in the window (which is important for
  user-friendly keyboard navigation).