


scrollbar(n)           Tk Built-In Commands          scrollbar(n)


NAME
       scrollbar - Create and manipulate scrollbar widgets

SYNOPSIS
       (scrollbar                    widget-name                    ?options?)
       :activebackground   :highlightbackground     :orient   :takefocus
       :background    :highlightcolor     :relief   :troughcolor
       :borderwidth   :highlightthickness :repeatdelay
       :cursor   :jump     :repeatinterval

WIDGET-SPECIFIC OPTIONS
       Specifies the relief to use when displaying the element that is active,
       if any.  Elements other than the active element  are  always  displayed
       with  a  raised  relief.  Specifies a STk procedure to invoke to change
       the view in the widget associated with  the  scrollbar.   When  a  user
       requests  a view change by manipulating the scrollbar, the procedure is
       invoked.  The parameters given to this procedure are  described  later.
       Specifies  the  width  of borders drawn around the internal elements of
       the scrollbar (the two arrows and the slider).  The value may have  any
       of  the  forms  acceptable to Tk_GetPixels.  If this value is less than
       zero, the value of the borderWidth option is used in its place.  Speci-
       fies  the desired narrow dimension of the scrollbar window, not includ-
       ing 3-D border, if any.  For vertical scrollbars this will be the width
       and  for  horizontal scrollbars this will be the height.  The value may
       have any of the forms acceptable to Tk_GetPixels.


DESCRIPTION
       The scrollbar procedure creates a new window (given by the  widget-name
       argument)  and  makes  it into a scrollbar widget.  Additional options,
       described above, may be specified on  the  procedure  line  or  in  the
       option  database to configure aspects of the scrollbar such as its col-
       ors, orientation, and relief.  The scrollbar procedure returns its wid-
       get-name  argument.   At the time this procedure is invoked, there must
       not exist a window named widget-name,  but  widget-name's  parent  must
       exist.

       A  scrollbar  is  a widget that displays two arrows, one at each end of
       the scrollbar, and a slider in the middle portion of the scrollbar.  It
       provides information about what is visible in an associated window that
       displays an document of some sort (such as a file  being  edited  or  a
       drawing).   The  position and size of the slider indicate which portion
       of the document is visible in the associated window.  For  example,  if
       the  slider  in  a  vertical scrollbar covers the top third of the area
       between the two arrows, it means that the  associated  window  displays
       the top third of its document.

       Scrollbars  can  be used to adjust the view in the associated window by
       clicking or dragging with the mouse.  See the  BINDINGS  section  below
       for details.


ELEMENTS
       A scrollbar displays five elements, which are referred to in the widget



STk                            3.1                              1





scrollbar(n)           Tk Built-In Commands          scrollbar(n)


       procedures for the scrollbar:

       arrow1    The top or left arrow in the scrollbar.

       trough1   The region between the slider and arrow1.

       slider    The rectangle that indicates what is visible in  the  associ-
                 ated widget.

       trough2   The region between the slider and arrow2.

       arrow2    The bottom or right arrow in the scrollbar.


WIDGET PROCEDURE
       The  scrollbar procedure creates a new STk procedure whose name is wid-
       get-name.  This procedure may be used to invoke various  operations  on
       the  widget.   It  has  the following general form: (widget-name option
       ?arg arg ...?)  Option and the args determine the exact behavior of the
       procedure.   The  following  procedures are possible for scrollbar wid-
       gets:

       (widget-name 'activate )

       (widget-name 'activate element)
              Marks the element indicated by element as active,  which  causes
              it  to  be  displayed  as  specified by the activeBackground and
              activeRelief options.  The only  element  values  understood  by
              this  procedure  are  arrow1,  slider,  or arrow2.  If any other
              value is specified then no element  of  the  scrollbar  will  be
              active.   If element is not specified, the procedure returns the
              name of the element that is currently active, or an  empty  list
              if no element is active.

       (widget-name 'cget option)
              Returns  the  current value of the configuration option given by
              option.  Option may have any  of  the  values  accepted  by  the
              scrollbar procedure.

       (widget-name 'configure ?option? ?value option value ...?)
              Query  or modify the configuration options of the widget.  If no
              option is specified, returns a list describing all of the avail-
              able  options for widget-name (see Tk_ConfigureInfo for informa-
              tion on the format of this list).  If option is  specified  with
              no  value,  then the procedure 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 procedure
              modifies  the given widget option(s) to have the given value(s);
              in this case the procedure returns an empty string.  Option  may
              have any of the values accepted by the scrollbar procedure.

       (widget-name 'delta deltaX deltaY)
              Returns  a  real  number indicating the fractional change in the



STk                            3.1                              2





scrollbar(n)           Tk Built-In Commands          scrollbar(n)


              scrollbar setting that corresponds to a given change  in  slider
              position.   For  example,  if  the  scrollbar is horizontal, the
              result indicates how much the scrollbar setting must  change  to
              move the slider deltaX pixels to the right (deltaY is ignored in
              this case).  If the scrollbar is vertical, the result  indicates
              how  much  the  scrollbar setting must change to move the slider
              deltaY pixels down.  The arguments and the result may be zero or
              negative.

       (widget-name 'fraction x y)
              Returns a real number between 0 and 1 indicating where the point
              given by x and y lies in the trough area of the scrollbar.   The
              value  0 corresponds to the top or left of the trough, the value
              1 corresponds to the bottom or right,  0.5  corresponds  to  the
              middle,  and  so on.  X and y must be pixel coordinates relative
              to the scrollbar widget.  If x and y refer to  a  point  outside
              the trough, the closest point in the trough is used.

       (widget-name 'get)
              Returns  the scrollbar settings in the form of a list whose ele-
              ments are the arguments to the most recent set widget procedure.

       (widget-name 'identify x y)
              Returns the name of the element under the point given by x and y
              (such as "arrow1"), or  #fif the point does not lie in any  ele-
              ment  of the scrollbar.  X and y must be pixel coordinates rela-
              tive to the scrollbar widget.

       (widget-name 'set first last)
              This procedure is invoked by the scrollbar's  associated  widget
              to tell the scrollbar about the current view in the widget.  The
              procedure takes two arguments, each of which is a real  fraction
              between  0 and 1.  The fractions describe the range of the docu-
              ment that is visible in the associated widget.  For example,  if
              first  is  0.2  and last is 0.4, it means that the first part of
              the document visible in the window is 20% of the way through the
              document, and the last visible part is 40% of the way through.


SCROLLING PROCEDURES
       When the user interacts with the scrollbar, for example by dragging the
       slider, the scrollbar notifies  the  associated  widget  that  it  must
       change  its  view.  The scrollbar makes the notification by calling the
       STk procedure given to the scrollbar's :command option. The  parameters
       passed to the procedure may take any of the following forms:

       Fraction is a real number between 0 and 1.
              The  widget  should  adjust  its view so that the point given by
              fraction appears at the beginning of the widget.  If fraction is
              0 it refers to the beginning of the document.  1.0 refers to the
              end of the document, 0.333 refers to a point  one-third  of  the
              way through the document, and so on.





STk                            3.1                              3





scrollbar(n)           Tk Built-In Commands          scrollbar(n)


       The widget should adjust its view by number units.
              The  units  are defined in whatever way makes sense for the wid-
              get, such as characters or lines in a text  widget.   Number  is
              either 1, which means one unit should scroll off the top or left
              of the window, or -1, which means that one  unit  should  scroll
              off the bottom or right of the window.

       The widget should adjust its view by number pages.
              It  is  up to the widget to define the meaning of a page;  typi-
              cally it is slightly less than what fits in the window, so  that
              there is a slight overlap between the old and new views.  Number
              is either 1, which means the next page should become visible, or
              -1, which means that the previous page should become visible.


OLD PROCEDURE SYNTAX
       In  versions of Tk before 4.0, the set and get widget procedures used a
       different form.  This form is still supported for backward  compatibil-
       ity, but it is deprecated.  In the old procedure syntax, the set widget
       procedure has the following form:

       (widget-name 'set totalUnits windowUnits firstUnit lastUnit)
              In this form the arguments are all integers.   TotalUnits  gives
              the  total  size of the object being displayed in the associated
              widget.  The meaning of one unit depends on the associated  wid-
              get;   for  example,  in a text editor widget units might corre-
              spond to lines of text.  WindowUnits indicates the total  number
              of  units  that  can  fit  in the associated window at one time.
              FirstUnit and lastUnit give the indices of the  first  and  last
              units  currently  visible  in the associated window (zero corre-
              sponds to the first unit of the object).

       Under the old syntax the get widget procedure returns a  list  of  four
       integers,  consisting  of  the  totalUnits, windowUnits, firstUnit, and
       lastUnit values from the last set widget procedure.

       The procedures generated by scrollbars also have a different form  when
       the  old syntax is being used: a single parameter is passed to the pro-
       cedure given to the :command option. This integer indicates what should
       appear  at  the  top or left of the associated widget's window.  It has
       the same meaning as the firstUnit and lastUnit  arguments  to  the  set
       widget procedure.

       The  most  recent set widget procedure determines whether or not to use
       the old syntax.  If it is given two real arguments then the new  syntax
       will  be  used in the future, and if it is given four integer arguments
       then the old syntax will be used.


EXAMPLE
       The following example shows a procedure which is  compatible  with  the
       old  and new syntax for procedure scrolling discussed earlier: (listbox
       '.l :height 5              :yscroll  (lambda  l  (apply  .s  'set  l)))
       (scrollbar '.s :command (lambda l (apply .l 'yview l)))



STk                            3.1                              4





scrollbar(n)           Tk Built-In Commands          scrollbar(n)


       ;;  Set  some  elements  in  the listbox (.l 'insert 0 'one 'two 'three
       'four 'five 'six 'seven 'eight)

       ;; Pack elements (pack .l :side "left" :expand #t  :fill "both")  (pack
       .s :side "right" :expand #f :fill "y")

       Using  apply and a variable length list of parameters for the scrollbar
       procedure is compatible with old and new scrollbar procedure syntax.


BINDINGS
       Tk automatically creates class bindings for scrollbars that  give  them
       the  following default behavior.  If the behavior is different for ver-
       tical and horizontal scrollbars, the horizontal behavior  is  described
       in parentheses.


       [1]    Pressing  button 1 over arrow1 causes the view in the associated
              widget to shift up (left) by  one  unit  so  that  the  document
              appears  to  move  down (right) one unit.  If the button is held
              down, the action auto-repeats.

       [2]    Pressing button 1 over trough1 causes the view in the associated
              widget  to shift up (left) by one screenful so that the document
              appears to move down (right) one screenful.  If  the  button  is
              held down, the action auto-repeats.

       [3]    Pressing  button  1 over the slider and dragging causes the view
              to drag with the slider.  If the jump option is true,  then  the
              view  doesn't  drag along with the slider;  it changes only when
              the mouse button is released.

       [4]    Pressing button 1 over trough2 causes the view in the associated
              widget  to shift down (right) by one screenful so that the docu-
              ment appears to move up (left) one screenful.  If the button  is
              held down, the action auto-repeats.

       [5]    Pressing  button 1 over arrow2 causes the view in the associated
              widget to shift down (right) by one unit so  that  the  document
              appears to move up (left) one unit.  If the button is held down,
              the action auto-repeats.

       [6]    If button 2 is pressed over the trough or the  slider,  it  sets
              the  view  to  correspond  to  the mouse position;  dragging the
              mouse with button 2 down causes the view to drag with the mouse.
              If  button  2  is  pressed over one of the arrows, it causes the
              same behavior as pressing button 1.

       [7]    If button 1 is pressed with the Control key down,  then  if  the
              mouse is over arrow1 or trough1 the view changes to the very top
              (left) of the document;  if the mouse is over arrow2 or  trough2
              the view changes to the very bottom (right) of the document;  if
              the mouse is anywhere else then the button press has no  effect.




STk                            3.1                              5





scrollbar(n)           Tk Built-In Commands          scrollbar(n)


       [8]    In vertical scrollbars the Up and Down keys have the same behav-
              ior as mouse clicks over arrow1 and  arrow2,  respectively.   In
              horizontal scrollbars these keys have no effect.

       [9]    In vertical scrollbars Control-Up and Control-Down have the same
              behavior as mouse clicks over trough1 and trough2, respectively.
              In horizontal scrollbars these keys have no effect.

       [10]   In  horizontal  scrollbars  the  Up  and Down keys have the same
              behavior as mouse clicks over arrow1 and  arrow2,  respectively.
              In vertical scrollbars these keys have no effect.

       [11]   In  horizontal  scrollbars  Control-Up and Control-Down have the
              same behavior as mouse clicks over trough1 and trough2,  respec-
              tively.  In vertical scrollbars these keys have no effect.

       [12]   The  Prior  and Next keys have the same behavior as mouse clicks
              over trough1 and trough2, respectively.

       [13]   The Home key adjusts the view to the top (left edge) of the doc-
              ument.

       [14]   The  End  key adjusts the view to the bottom (right edge) of the
              document.

































STk                            3.1                              6


