## Tcl8.6.17/Tk8.6.17 Documentation > [incr Tcl] Package Commands, version 4.3.4 > itcldelegate

### Tcl/Tk Applications | Tcl Commands | Tk Commands | [incr Tcl] Package Commands | SQLite3 Package Commands | TDBC Package Commands | tdbc::mysql Package Commands | tdbc::odbc Package Commands | tdbc::postgres Package Commands | tdbc::sqlite3 Package Commands | Thread Package Commands | Tcl C API | Tk C API | [incr Tcl] Package C API | TDBC Package C API

  NAME
    itcl::delegation — 手段や手続函数や追加指示を他の対象に代表させる 　　　delegate methods, procs or options to other objects
  警告WARNING!
  構文SYNOPSIS
  説明DESCRIPTION
    delegate method methodName to componentName ?as targetName?
    delegate method methodName ?to componentName? using pattern
      %%
      %c
      %j
      %m
      %M
      %n
      %s
      %t
      %w
    delegate method * ?to componentName? ?using pattern? ?except methodName methodName ...?
    delegate option namespec to comp
    delegate option namespec to comp as target
    delegate option * to comp
    delegate option * to comp except exceptions
    delegate option * ?except optionName optionName ...?
  KEYWORDS

### NAME

itcl::delegation — 手段や手続函数や追加指示を他の対象に代表させる 　　　delegate methods, procs or options to other objects

この記述の部分は､殆ど同一の機能としての Tcl 拡張 [snit] からの "借り物" である｡　　　　 Parts of this description are "borrowed" from Tcl extension [snit], as the functionality is mostly identical.

### 警告WARNING!

API が猶も変化するかもしれない [incr Tcl] 内で､これは新しい機能である!!　　　　　 　　 This is new functionality in [incr Tcl] where the API can still change!!

### 構文SYNOPSIS

delegate method methodName to componentName ?as targetName?
delegate method methodName ?to componentName? using pattern
delegate method * ?to componentName? ?using pattern? ?except methodName methodName ...?
delegate proc procName to componentName ?as targetName?
delegate proc procName ?to componentName? using pattern
delegate proc * ?to componentName? ?using pattern? ?except procName procName ...?
delegate option optionSpec to componentName
delegate option optionSpec to componentName as targetname?
delegate option * to componentName
delegate option * to componentName except optionName optionname ...

### 説明DESCRIPTION

このdelegate 命令は[incr Tcl]拡張級/部品/部品の備品 の内側で 取扱う為に他の対象に対する 手段/手続函数/追加指示 の代理を定義する為に使われる｡　　　　 The delegate command is used inside an [incr Tcl] extendedclass/widget/widgetadaptor definition to delegate methods/procs/options to other objects for handling.

delegate method methodName to componentName ?as targetName?
  この代理手段の形式は構成物 componentName への手段 methodName を代表する｡ 即ち､手段 methdoNameame がこの型の即値上で呼出された時､その手段とその引数は代りにその名前の構成物の命令に引渡される｡即ち､次の宣言では､　　　　　 This form of delegate method delegates method methodName to component componentName. That is, when method methdoNameame is called on an instance of this type, the method and its arguments will be passed to the named component's command instead. That is, the following statement

      delegate method wag to tail

  大雑把には､これは､次の明示的に定義された手段と等価である｡ is roughly equivalent to this explicitly defined method:

      method wag {args} {
          uplevel $tail wag $args
      }

  追加指示項目の as 項は代表化された手段の名前を指定し､幾つかの引数を与える事もできる｡　　　 The optional as clause allows you to specify the delegated method name and possibly add some arguments:

      delegate method wagtail to tail as "wag briskly"

  手段は局所定義と代表の両方にはなれない｡ A method cannot be both locally defined and delegated.

delegate method methodName ?to componentName? using pattern
  この形式の代表宣言の中で､using 項はそれへの手段の名前が代表している命令の正確な形式を指定する為に使用される｡ to 項は任意指定である､選択された命令はどの特定の構成物も含まないかもしれないので｡　　　　　 In this form of the delegate statement, the using clause is used to specify the precise form of the command to which method name name is delegated. The to clause is optional, since the chosen command might not involve any particular component.

  using 字句の値は､次の置換符号命令の幾つか或いは全てを含むリストである; それらの符号命令は､代表された命令前倚辞を形成する為に､記述された値で置換される｡ 註意すべきは､次の二つの宣言は等価である: 　　　 The value of the using clause is a list that may contain any or all of the following substitution codes; these codes are substituted with the described value to build the delegated command prefix. Note that the following two statements are equivalent:

      delegate method wag to tail
      delegate method wag to tail using "%c %m"

  このリストのそれぞれの要素は代表された一つの要素になる--それは文字列として再度解析されることはない｡　　　　 Each element of the list becomes a single element of the delegated command --it is never reparsed as a string.

  Substitutions:

  %%
    これは一つの "%" で置換される｡従って､命令に文字列 "%c" を引数として渡したい場合は "%%c" と書くべきである｡　　　　 This is replaced with a single "%". Thus, to pass the string "%c" to the command as an argument, you'd write "%%c".

  %c
    これは名前の付いた構成物の命令によって置換される｡　　　 This is replaced with the named component's command.

  %j
    これは手段の名前によって置換される; もし名前が多数の解析語句によって構成されると､それは下線 ("_") によって結合される｡　　　　 This is replaced by the method name; if the name consists of multiple tokens, they are joined by underscores ("_").

  %m
    これは手段の名前の最終解析語句によって置換される; もし手段の名前が一つの解析語句を有する場合､それは %M と一致する｡　　　　 This is replaced with the final token of the method name; if the method name has one token, this is identical to %M.

  %M
    手段の名前と置換される; もし多重の名前が多数の解析語句で構成されている場合､それらは空白文字で結合される｡　　　 This is replaced by the method name; if the name consists of multiple tokens, they are joined by space characters.

  %n
    これは即値の私的名前空間の名前で置換される｡　　　　 This is replaced with the name of the instance's private namespace.

  %s
    これは即値の命令の名前で置換される｡ This is replaced with the name of the instance command.

  %t
    これは完全に修飾された名前で置換される｡　　　　 This is replaced with the fully qualified type name.

  %w
    これは即値の命令の元の名前で置換される; Itcl 部品と部品備品については Tk 窓の名前になる｡それは即値命令が名前変更されても定数であり続ける｡ 　　　 This is replaced with the original name of the instance command; for Itcl widgets and widget adaptors, it will be the Tk window name. It remains constant, even if the instance command is renamed.

delegate method * ?to componentName? ?using pattern? ?except methodName methodName ...?
  この形式では全ての未知の手段の名前は指定された構成物を代表している｡ except の字句は例外のリスト､即ち､代表していない手段の名前を指定する為に使うことができる｡using 字句は上で与えられた様に定義されている｡この形式内では､宣言は to 字句か､using 字句か､その両方を含まなければならない｡　　　　　　　　 In this form all unknown method names are delegeted to the specified component. The except clause can be used to specify a list of exceptions, i.e., method names that will not be so delegated. The using clause is defined as given above. In this form, the statement must contain the to clause, the using clause, or both.

  事実､ "*" は､次の実施例の如く､最後の要素が "*" の二つ或はそれ以上の解析語句のリストであってもよい: 　　 In fact, the "*" can be a list of two or more tokens whose last element is "*", as in the following example:

      delegate method {tail *} to tail

  これは､その副命令が末尾構成物の代表をすることになる手段末尾を暗黙の内に定義する｡　　　　　 This implicitly defines the method tail whose subcommands will be delegated to the tail component.

  delegate proc ...の為の定義は手段の為のものと同じであり､違いは､単にそれが手続函数の為のものであることだけである｡　　　　 The definitions for delegate proc ... are the same as for method, the only difference being, that this is for procs.

delegate option namespec to comp

delegate option namespec to comp as target

delegate option * to comp

delegate option * to comp except exceptions
  代表された指示項目を定義する; 名前空間は指示項目宣言として定義される｡ 指示項目の値の設定や取出しに configure か configurelist か cget の 即値手段が指示項目の値の設定や取出しに使われた時は､恰も､指示項目が次の -configuremethod and -cgetmethod によって定義されているかの様に､等価な configure か cget 命令が構成物に適用される: 　　　　　　　　 Defines a delegated option; the namespec is defined as for the option statement. When the configure, configurelist, or cget instance method is used to set or retrieve the option's value, the equivalent configure or cget command will be applied to the component as though the option was defined with the following -configuremethod and -cgetmethod:

      method ConfigureMethod {option value} {
          $comp configure $option $value
      }

      method CgetMethod {option} {
          return [$comp cget $option]
      }

  註意すべきは､代表された指示項目は itcl_options 配列内に現れることはない｡ もし､項として指定されていると､標的指示項目の名前は名前の場所に使用される｡ 　　　　 Note that delegated options never appear in the itcl_options array. If the as clause is specified, then the target option name is used in place of name.

delegate option * ?except optionName optionName ...?
  この形式は指定された構成物の全ての未知の指示項目を代表する｡ except の字句は例外のリスト､即ち､代表していない手段の名前を指定する為に使うことができる｡　　　　　　　　 This form delegates all unknown options to the specified component. The except clause can be used to specify a list of exceptions, i.e., option names that will not be so delegated.

  警告: 指示項目は､もし configure と cget 即値の手段を運営している場合､構成要素に代表されるだけである｡ Warning: options can only be delegated to a component if it supports the configure and cget instance methods.

  指示項目は局所定義と代表の両方になることはできない｡ 未定: 此処から継続する｡　　　　　 An option cannot be both locally defined and delegated. TBD: Continue from here.

### KEYWORDS

delegation, option, method, proc
Copyright © 2008 Arnulf Wiedemann