bindtags.n
上传用户:rrhhcc
上传日期:2015-12-11
资源大小:54129k
文件大小:4k
源码类别:

通讯编程

开发平台:

Visual C++

  1. '"
  2. '" Copyright (c) 1990 The Regents of the University of California.
  3. '" Copyright (c) 1994-1996 Sun Microsystems, Inc.
  4. '"
  5. '" See the file "license.terms" for information on usage and redistribution
  6. '" of this file, and for a DISCLAIMER OF ALL WARRANTIES.
  7. '" 
  8. '" RCS: @(#) $Id: bindtags.n,v 1.2.26.1 2004/10/28 10:19:29 dkf Exp $
  9. '" 
  10. .so man.macros
  11. .TH bindtags n 4.0 Tk "Tk Built-In Commands"
  12. .BS
  13. '" Note:  do not modify the .SH NAME line immediately below!
  14. .SH NAME
  15. bindtags - Determine which bindings apply to a window, and order of evaluation
  16. .SH SYNOPSIS
  17. fBbindtags fIwindow fR?fItagListfR?
  18. .BE
  19. .SH DESCRIPTION
  20. .PP
  21. When a binding is created with the fBbindfR command, it is
  22. associated either with a particular window such as fB.a.b.cfR,
  23. a class name such as fBButtonfR, the keyword fBallfR, or any
  24. other string.
  25. All of these forms are called fIbinding tagsfR.
  26. Each window contains a list of binding tags that determine how
  27. events are processed for the window.
  28. When an event occurs in a window, it is applied to each of the
  29. window's tags in order:  for each tag, the most specific binding
  30. that matches the given tag and event is executed.
  31. See the fBbindfR command for more information on the matching
  32. process.
  33. .PP
  34. By default, each window has four binding tags consisting of the
  35. name of the window, the window's class name, the name of the window's
  36. nearest toplevel ancestor, and fBallfR, in that order.
  37. Toplevel windows have only three tags by default, since the toplevel
  38. name is the same as that of the window.
  39. The fBbindtagsfR command allows the binding tags for a window to be
  40. read and modified.
  41. .PP
  42. If fBbindtagsfR is invoked with only one argument, then the
  43. current set of binding tags for fIwindowfR is returned as a list.
  44. If the fItagListfR argument is specified to fBbindtagsfR,
  45. then it must be a proper list; the tags for fIwindowfR are changed
  46. to the elements of the list.
  47. The elements of fItagListfR may be arbitrary strings;  however,
  48. any tag starting with a dot is treated as the name of a window;  if
  49. no window by that name exists at the time an event is processed,
  50. then the tag is ignored for that event.
  51. The order of the elements in fItagListfR determines the order in
  52. which binding scripts are executed in response to events.
  53. For example, the command
  54. .CS
  55. fBbindtags .b {all . Button .b}fR
  56. .CE
  57. reverses the order in which binding scripts will be evaluated for
  58. a button named fB.bfR so that fBallfR bindings are invoked
  59. first, following by bindings for fB.bfR's toplevel (``.''), followed by
  60. class bindings, followed by bindings for fB.bfR.
  61. If fItagListfR is an empty list then the binding tags for fIwindowfR
  62. are returned to the default state described above.
  63. .PP
  64. The fBbindtagsfR command may be used to introduce arbitrary
  65. additional binding tags for a window, or to remove standard tags.
  66. For example, the command
  67. .CS
  68. fBbindtags .b {.b TrickyButton . all}fR
  69. .CE
  70. replaces the fBButtonfR tag for fB.bfR with fBTrickyButtonfR.
  71. This means that the default widget bindings for buttons, which are
  72. associated with the fBButtonfR tag, will no longer apply to fB.bfR,
  73. but any bindings associated with fBTrickyButtonfR (perhaps some
  74. new button behavior) will apply.
  75. .SH EXAMPLE
  76. If you have a set of nested fBframefR widgets and you want events
  77. sent to a fBbuttonfR widget to also be delivered to all the widgets
  78. up to the current fBtoplevelfR (in contrast to Tk's default
  79. behavior, where events are not delivered to those intermediate
  80. windows) to make it easier to have accelerators that are only active
  81. for part of a window, you could use a helper procedure like this to
  82. help set things up:
  83. .CS
  84. proc setupBindtagsForTreeDelivery {widget} {
  85.     set tags [list $widget [winfo class $widget]]
  86.     set w $widget
  87.     set t [winfo toplevel $w]
  88.     while {$w ne $t} {
  89.         set w [winfo parent $w]
  90.         lappend tags $w
  91.     }
  92.     lappend tags all
  93.     fBbindtagsfR $widget $tags
  94. }
  95. .CE
  96. .SH "SEE ALSO"
  97. bind
  98. .SH KEYWORDS
  99. binding, event, tag