Table (クラス)
public Table {inherits Grid}
インポート元: CURL.GUI.STANDARD. package 内で定義されています CURL.GUI.BASE.
直接継承しているサブクラス: CalendarControlDayTable

Graphic のコレクションを行と列に配置するためのコンテナ。

説明

プログラムから表にアクセスする必要がない場合、つまり表に内容を挿入することのみが目的である場合は、代わりに table テキスト書式の使用を推奨します。

Table は、グラフィカル オブジェクトを行と列の 2 次元配列に配置するための便利なインターフェイスを提供します。オブジェクトを複数の行または列、あるいはその両方に広げることも可能です 。Table 内のオブジェクトは重ねることができません。これが必要な場合は、代わりに Grid または Canvas を使用できます。単一行 / 列でのみオブジェクトの配置を構成するときには、HBox または VBox の方が使いやすい場合があります。

Table は行と列で構成され、行と列にはセルが含まれます。セルは、実際には Table に存在する Graphic を保持します。オプションは、Table 全体に設定するか、または個々の行、列、セルに設定することができます。オプションが Table 内の異なるレベルで設定されている場合、Table のオプション検索の規則により、Table 内の異なるオブジェクトに影響を与えるオプションの設定が制御されます。

Table 内の列数は、作成時に指定することができます。Table のコンストラクタは、columns=int キーワード引数を受け取ります。列数を指定すると、内容を表に追加するだけで行が自動的に形成されます。

Table の各行には、関連する TableRow オブジェクトがあります。これは、 Table.get-rowTable.get-element-row を使用して取得できます。同様に、各列には関連する TableColumn オブジェクトがあります。これは、Table.get-columnTable.get-element-column を使用して取得できます。Table の各セルには、関連する TableCell オブジェクトがあります。TableCell オブジェクトは、 Table.get-element-cell を必要に応じて Table.get-element と共に使用して取得することができます。

Table.add を使用すると、既存の Table にオブジェクトを追加できます。この場合、オブジェクトの追加先となる行と列を指定できます。Table.add は、これに指定された行数と列数に到達するために、必要に応じて Table 新しい行や列、あるいはその両方を作成してパディングを行ないます。Table は、次のアイテムの追加先を決定する挿入カーソルを保持します。この挿入カーソルは、Table.add で詳細に説明されています。

さらに、Table.insert-rowTable.insert-columnTable.delete-rowTable.delete-column を使用して、既存の Table に対して行や列を挿入または削除することもできます。

プログラミング注意事項

TableGrid から継承し、Gridフィデューシャルメカニズムを内部的に使用して Table 要素を配置します。このアーキテクチャを採用したことにより、 Grid.make-fiducial などの Grid のパブリック メソッドを Table で呼び出すことができます。ただし通常は、Table でこれらのメソッドを直接呼び出すことは推奨されていません。この理由は、Table の幾何形状の管理が難解な方法で妨害される可能性があるためです。

Table の要素は Table の作成時に指定でき、さらに Table.add を呼び出して作成後に追加することもできます。前者のアプローチは表記上最も簡単で、(1) 表の列数を指定して要素をリストすることにより、あるいは (2) row-prototype を使用して表の各行を指定することにより達成できます。次は、アプローチ (1) の例です。


{Table columns=2, background="cyan",
    {bold What},     {bold How Much?},
    {text Apples},   {text $1.37},
    {text Bananas},  {text $0.89},
    {text Cherries}, {text $6.25}}


次は、アプローチ (2) の例です。


{Table
    background="cyan",
    {row-prototype font-weight="bold", "Destination", "Mileage", "Comments"},
    {row-prototype "Miami", 1583},
    {row-prototype valign="origin",
         "Paris", 3894,
         {CommandButton label="Let's go!"}},
    {row-prototype "Machu Picchu",
         5366,
         "Beware of falling rocks!"}}


キーワード引数 font-weight="bold" が、表の先頭行のプロパティを指定するのに使用され、キーワード引数 valign="origin" が、3 番目の行の全テキストのベースラインを揃えるのに使用されていることに注意してください。

skip を使用すると、情報を入力せずにテーブル セルをスキップすることができます。


{Table
    columns=3,
    background="cyan",
    {skip 2}, "X",
    {skip}, "X", "O",
    "X", {skip}, "O"}


cell-prototype を使用して、与えられた要素が占有するテーブル セルの水平または垂直スパンを指定したり、セルの他のプロパティを指定することができます。


{Table
    border-width=1pt, border-color="black",
    cell-border-width=1pt, cell-border-color="black",
    background="#b0ffff",
    {row-prototype font-weight="bold",
         {cell-prototype {center Stretch{br}Order},
               rowspan=2, halign="center", valign="center"},
         {cell-prototype "Curl Identifier Name", colspan=2}},
    {row-prototype {skip 1}, "Meaning", "Examples of Use",
         halign="center", font-weight="bold"},
    {row-prototype {cell-prototype -10,
               rowspan=2, halign="center", valign="center"},
         {cell-prototype color="blue", colspan=2,
               {monospace unstretchable-stretch-order}}},
    {row-prototype {skip 1},
         {text "Unstretchable" (absolutely rigid) elastic},
         {text Clearing an elastic to an unstretchable
             length of 0}},
    {row-prototype {cell-prototype 0, rowspan=2, halign="center", valign="center"},
         {cell-prototype color="blue", colspan=2,
               {monospace rigid-threshold-stretch-order}}},
    {row-prototype {skip 1},
         {text Rigid elastic, stretching is highly undesirable},
         {text Text, borders, and other objects that should
             have a fixed size}}}


rowspan キーワードと colspan キーワードが、複数の行または列に広げて要素を挿入するためにどのように使用されているかに注意してください。また、skip を使用して、前の行から下に広がっているセル (rowspan が 1 より大きいため) をスキップしてから、"Meaning" などの要素が挿入されていることにも注意してください。これらの位置の 1 つをスキップせずに要素を挿入すると、Table 内の特定の領域をカバーするテーブル セルは常に 1 つであるという不変性を保持するために、以前に挿入された要素 (この rowspan は 1 より大きい) が削除されます。"Missing" という語が次の Table に表示されないのは、この削除のためです。


{Table
    cell-border-width=1.5pt,
    cell-border-style="sunken",
    cell-border-color="gray",
    {row-prototype "First", {cell-prototype "Missing", colspan=2, rowspan=2}},
    {row-prototype "Second", "Overlaps"},
    {row-prototype "Third"}}


row-prototypecell-prototypeskip は、TableContentPrototype オブジェクトを返すプロシージャにすぎないため、表の作成式に直接含める必要はありません。その代わり、必要な row-prototype オブジェクト、cell-prototype オブジェクト、skip オブジェクトを生成するユーザー定義プロシージャを含めることができます。

次の例は、Table.add を使用して Table に要素を挿入する別の方法を示しています。


{value
    let t:Table =
        {Table
            cell-border-width=1.5pt,
            cell-border-style="sunken",
            cell-border-color="#aaaaff",
            background="#aaaaff"}
    {t.add "(0,0)", row=0, column=0}
    {t.add "(0,1)", row=0, column=1}
    {t.add "(0,2)", row=0, column=2}
    {t.add "(0,3)", row=0, column=3}
    {t.add "(0,4)", row=0, column=4}

    {t.add "(1,0)", row=1, column=0}
    {t.add {bold {big Hello, table hacker!}}, row=1, column=1}
    {t.add "(1,3)", row=1, column=3, colspan=2}

    {t.add "(2,0)", row=2, column=0}
    {t.add "(2,1)", row=2, column=1, colspan=2, rowspan=2}
    {t.add "(2,3)", row=2, column=3}
    {t.add "(2,4)", row=2, column=4, rowspan=2}

    {t.add "(3,0)", row=3, column=0}
    {t.add {RectangleGraphic height=6pt, width=72pt}, row=3, column=3}

    set {t.get-column 1}.color = "yellow"
    set {t.get-column 1}.halign = "right"
    set {t.get-row 2}.color = "red"
    set {t.get-row 1}.halign = "center"
    set {t.get-row 1}.valign = "origin"
    set {t.get-column 4}.valign = "center"

    set {t.get-element-cell {t.get-element 0, 3}}.color = "blue"

    t
}

注意事項

このオブジェクトは、"Table"のスタイル ルールを記述することによりスタイル化することが出来ます。

コンストラクタ
default:新しい Table を作成します。
コンストラクタ public {Table.default ...}

プロパティ
border-color:グラフィカル オブジェクトの境界の色またはパターン。
非ローカル オプション public Table.border-color:FillPattern
cell-border-color:Table オブジェクトのテーブル セルのボーダーの色またはパターン。
非ローカル オプション public Table.cell-border-color:FillPattern
cell-border-spec:Table セルの BorderSpec を指定します。
非ローカル オプション public Table.cell-border-spec:#BorderSpec
cell-border-style:この表のテーブル セル ボーダーの外観を指定します。
非ローカル オプション public Table.cell-border-style:BorderStyle
cell-border-width:Table のテーブル セル ボーダーの幅を指定します。
非ローカル オプション public Table.cell-border-width:any
cell-margin:テーブル セルの境界とその子スロット (テーブル セルがその子グラフィックを配置する場所) の間の距離を指定します。
非ローカル オプション public Table.cell-margin:any
column-count:Table 内の現在の列数を示します。
アクセサ public Table.column-count:int
data-binding-context:このターゲットに関連付けられた既定の DataBindingContext
非ローカル オプション public Table.data-binding-context:#DataBindingContext
display-context:このオブジェクトに関連付けられている DisplayContext
非ローカル オプション public Table.display-context:#DisplayContext
graphical-children:SequenceBox のグラフィカルな子の反復子を返します。
アクセサ public Table.graphical-children:{Iterator-of Graphic}
halign:Table 要素の水平方向の整列方法を指定します。
ローカル オプション public Table.halign:any
horizontal-line-color:Table の行を区切る線の色またはパターン。
非ローカル オプション public Table.horizontal-line-color:FillPattern
horizontal-line-width:Table の行と行の間に引く線の幅を指定します。
ローカル オプション public Table.horizontal-line-width:any =0pt
hstretch?:GraphicTable セルに収まるように水平に伸長されるかどうかを制御します。
ローカル オプション public Table.hstretch?:bool =false
internal-borders:表の境界線を引く場所を決定します。既定値は TableInternalBorders.none です。
ローカル オプション public Table.internal-borders:TableInternalBorders =TableInternalBorders.none
ordered-children:子を順番に返す、この Box のグラフィカルな子の反復子。
アクセサ public Table.ordered-children:{Iterator-of Graphic}
reverse-ordered-children:この Box のグラフィカルな子の反復子で、子を逆の順序で返します。これは、Box.ordered-children を反転するものです。
アクセサ public Table.reverse-ordered-children:{Iterator-of Graphic}
row-count:Table 内の現在の行数を示します。
アクセサ public Table.row-count:int
style-element:スタイリングの目的のための、この Visual の "要素" や "型" です。
アクセサ public Table.style-element:String
valign:Table 要素の垂直方向の整列方法を指定します。
ローカル オプション public Table.valign:any
vertical-line-color:Table の列を区切る線の色またはパターン。
非ローカル オプション public Table.vertical-line-color:FillPattern
vertical-line-width:Table の列と列の間に引く線の幅を指定します。
ローカル オプション public Table.vertical-line-width:any =0pt
vstretch?:GraphicTable セルに収まるように垂直に伸長されるかどうかを制御します。
ローカル オプション public Table.vstretch?:bool =false
プロパティ 継承 Grid: clonable-class?
プロパティ 継承 SequenceBox: child-array, completely-clonable-children?, contains-valid?, invalid-epoch, layouts-have-valid-sequence-number?, option-register-proc, registered-option-keys
プロパティ 継承 GetBoundsBox: layout-locally-valid?, layout-valid?
プロパティ 継承 Box: clip-child-shadows?
プロパティ 継承 Graphic: avoid-page-break?, background, border-spec, border-style, border-width, discrete-select-in-range?, enabled?, graphic-selectable, height, horigin, is-paginating?, layout, margin, opaque-to-events?, option-parent, outside-margin, pagination-state, parent, possibly-displayed?, selection-context, shadow-color, shadow-spec, visible?, visual-parent, vorigin, width
プロパティ 継承 Visual: _style-element, cursor, data-source, dragee, font-size, graphical-parent, has-key-focus?, input-method-enabled?, input-method-keyboard-mode, name, options, style-class, style-manager, style-options, test-child?, test-description, test-name, test-parent?, test-type-name, test-visible?, tooltip, user-data
プロパティ 継承 DataBindingTarget: data-bindings
プロパティ 継承 EventTarget: event-handlers
プロパティ 継承 OptionListInterface: options-present-here

メソッド
add:Table にアイテムを追加します。
public {Table.add g:any, ...}:#Visual
add-from-init-args:この Visual のコンストラクタに渡されるオブジェクトを Visual の内容に追加します。
protected {Table.add-from-init-args a:any}:void
clear:ボックスのグラフィカルな子を削除します。
public {Table.clear}:void
compare-children:このボックスの 2 つの子のグラフィカルな順序を検証します。
public {Table.compare-children a:Graphic, b:Graphic}:GraphicalOrder
contains-point?:指定されたポイントで発生するイベントが、ターゲット ボックスと、そのいずれかのグラフィカルな子のどちらに関するものかを判断します。
public {Table.contains-point? x:Distance, y:Distance}:bool
delete-column:Tableから列を削除します。
public {Table.delete-column column:any}:void
delete-row:Table から行を削除します。
public {Table.delete-row row:any}:void
draw:このオブジェクトの可視表現を描画します。
public {Table.draw renderer2d:Renderer2d}:void
get-column:Table から、指定された TableColumn を返します。
public {Table.get-column
column:any,
create?:bool = false,
return-null-if-missing?:bool = false
}:#TableColumn
get-element:Table 内の指定された要素を返します。
public {Table.get-element row:any, column:any}:#Graphic
get-element-cell:Table の指定要素に関連付けられている TableCell を返します。
public {Table.get-element-cell g:any}:TableCell
get-element-column:Table 内で指定要素の左上隅に関連付けられている TableColumn を返します。
public {Table.get-element-column g:any}:#TableColumn
get-element-row:Table 内で指定要素の左上隅に関連付けられている TableRow を返します。
public {Table.get-element-row g:any}:#TableRow
get-range-as-selected-text:start-boundend-bound 間の、このグラフィック内に含まれる選択したテキストを取得します。
public {Table.get-range-as-selected-text
into:StringBuf,
start-bound:#GuiMark = null,
end-bound:#GuiMark = null
}:void
get-row:Table から、指定された TableRow を返します。
public {Table.get-row
row:any,
create?:bool = false,
return-null-if-missing?:bool = false
}:#TableRow
group-columns:group で識別される TableGroup に 1 つ以上の列を割り当てます。
public {Table.group-columns group:TableGroup, ...:int}:void
group-rows:group で識別される TableGroup に 1 つ以上の行を割り当てます。
public {Table.group-rows group:TableGroup, ...:int}:void
insert-column:列を Table に挿入します。
public {Table.insert-column column:any}:TableColumn
insert-row:行を Table に挿入します。
public {Table.insert-row row:any}:TableRow
internal-remove-child:SequenceBox の子を削除します。
protected {Table.internal-remove-child l:SequenceLayout}:void
keyword-init-arg: InitRestArgParser.process-rest-args でキーワード引数が検出されると呼び出されます。
public {Table.keyword-init-arg key:String, value:any}:void
notify-option-children:このオブジェクトのオプションの子にオプションが変更されたことを通知します。
public {Table.notify-option-children
item:OptionItem,
removed?:bool
}:void
paginate:グラフィックにパジネーションを適用します。
public {Table.paginate
page-height:Distance,
next-page-height:Distance,
query-only?:bool
}:(PaginationState, PaginationQuality)
pick-child:指定された点 (x, y) を覆う BasicBox の子をピックアップします。
public {Table.pick-child x:Distance, y:Distance}:#EventForwarder
propagate-option-change:このオブジェクト、および該当する場合はそのオプションの子孫にオプションが変更されたことを通知します。
protected {Table.propagate-option-change
item:OptionItem,
removed?:bool
}:void
メソッド 継承 Grid: bottom, clone-appearance-helper, constrain-height, constrain-width, get-display-context, get-height-preference, get-width-preference, horigin-fiducial, left, make-fiducial, propagate-request-layout, right, set-size, top, vorigin-fiducial
メソッド 継承 SequenceBox: add-at-index, add-at-index-with-layout, after-reposition, allocate-layout-object, attempt-revalidate-layout, before-reposition, end-pagination, find, graphical-child-visible-at, note-attached, note-detaching, register-options, request-draw, request-pointer-trace, swap-children, validate-layout-sequence-numbers
メソッド 継承 BasicBox: find-graphic-at, handle-crossing, on-pointer-envelope-event, pointer-enter-occurred, pointer-leave-occurred
メソッド 継承 GetBoundsBox: get-bounds, get-elastic-bounds-into, get-nonparent-bounds-into, request-layout, validate-layout
メソッド 継承 Box: find-test-children, get-delimited-child-text-selection, get-gui-path-to-child, get-visible-rect-in-root-into, make-gui-mark, search-next-here, search-prev-here
メソッド 継承 Graphic: create-pagination-state, detach, draw-range-as-selected, draw-shadow, find-ancestor, find-graphical-ancestor, fire-inferior-crossing-event, get-graphical-root, get-gui-path, get-origin-in-graphical-ancestor, get-origin-in-root, get-pagination-state, get-top-left-in-ancestor, get-visible-bounds-into, on-drag-enter, on-inspection, on-pointer-enter, option-changed, paint-with-decorations, replace-with, request-draw-rect, search-next, search-prev, set-layout, start-pagination, xy-offset-to
メソッド 継承 Visual: animate, change-cursor, clonable-appearance?, clone-appearance, get-focus-manager, get-layout-context, get-test-parent, get-test-property, get-text, get-view, maybe-fire-attach-event, maybe-fire-detach-event, non-keyword-init-arg, note-caret-position, on-drag-leave, on-pointer-leave, pop-cursor, prepare-test-object, prepare-test-parent, push-cursor, quantize-width, refresh-style-options, release-key-focus, request-key-focus, scroll-to-include, test-record, test-run, transform-from-display-coordinates, transform-from-graphical-root-coordinates, transform-to-display-coordinates, transform-to-graphical-root-coordinates
メソッド 継承 GraphicOptions: any-to-Distance
メソッド 継承 GuiEventTarget: handle-delegate-event, handle-event, on-action, on-cancel-mode, on-command-changed, on-commit, on-composition-change-event, on-composition-result-event, on-context-menu-event, on-current-record-change-request, on-current-record-changed, on-destroy-notify, on-destroy-requested, on-drag-over, on-drag-pointer, on-drag-started, on-drop, on-end-composition-event, on-focus-event, on-focus-in, on-focus-out, on-gesture, on-gesture-begin, on-gesture-end, on-gesture-magnify, on-gesture-pan, on-gesture-rotate, on-gesture-swipe, on-gesture-tap, on-gesture-touch, on-grab-release, on-gui-event, on-input-method-event, on-key-event, on-key-press, on-pointer-button, on-pointer-crossing, on-pointer-event, on-pointer-motion, on-pointer-press, on-pointer-release, on-pointer-scroll, on-raw-key-event, on-raw-key-press, on-raw-key-release, on-reset, on-selectable-added, on-selectable-removed, on-selection-changed, on-selection-context-activated, on-selection-context-deactivated, on-selection-event, on-start-composition-event, on-start-event, on-stop-event, on-view-activate, on-view-deactivate, on-window-close, remove-event-handlers-for-event-class
メソッド 継承 DataBindingTarget: add-data-binding, get-data-binding, refresh-data-binding, remove-data-binding, unset-property, update-data-binding, validate-data-binding
メソッド 継承 EventTarget: accepts-event-class?, add-event-handler, event-handler-present?, remove-event-handler, verify-event
メソッド 継承 OptionListInterface: add-option, add-style-option, change-option-parent-notify, clone-options, get-option, get-option-by-name, local-add-notify, local-remove-notify, name-to-option-key, new-option-item, option-change-notify, option-lookup, option-lookup-here, option-propagate-notify, option-set?, remove-option, remove-style-option, remove-styles, set-option-by-name, set-style-option-by-name, unset-option-by-name, unset-style-option-by-name
メソッド 継承 BasicEventTarget: enqueue-event
メソッド 継承 InitRestArgParser: process-rest-args
メソッド 継承 Object: object-describe, object-describe-for-debugging, object-serialize



コンストラクタ詳細
default (コンストラクタ)
public {Table.default ...}

新しい Table を作成します。

注意事項

このメソッドは 4 種類の引数を受け取ります。



プロパティ詳細
border-color (非ローカル オプション)
public Table.border-color:FillPattern

グラフィカル オブジェクトの境界の色またはパターン。

説明

境界色は、境界が存在する場合、つまり、オブジェクトの border-width オプションを設定した場合にのみ適用されます。

任意の FillPattern オブジェクトに border-color、またはサポートしている String に設定し、FillPattern に自動変換します。

オブジェクトの border-width は定義されているが border-color が定義されていない場合、オブジェクトの境界はオブジェクトの背景色を使ってペイントされます。オブジェクトの背景色は、オブジェクトの border-style オプションによっては境界が見えない場合もあります。

次の図は、グラフィカル オブジェクトの境界を青色で表示しています。



参照: Graphic.background, Graphic.border-width, Graphic.border-style.


cell-border-color (非ローカル オプション)
public Table.cell-border-color:FillPattern

Table オブジェクトのテーブル セルのボーダーの色またはパターン。

説明

セル ボーダーの色は、セル ボーダーが存在する場合、つまりテーブル セルの cell-border-width オプションが設定されている場合にのみ適用されます。


任意の FillPattern オブジェクトや、自動的に FillPattern に変換される、サポートされている Stringcell-border-color を設定します。


テーブル セルの cell-border-width は定義されていて cell-border-color は定義されていない場合、ボーダーはテーブル セルの背景色を使用してペイントされます。テーブル セルの cell-border-style オプションによってはボーダーが見えなくなることもあります。
次は、テーブル セルのボーダーを青で表示しています。






cell-border-spec (非ローカル オプション)
public Table.cell-border-spec:#BorderSpec

Table セルの BorderSpec を指定します。

説明

NULL の場合、Tablecell-border-widthcell-margin を使用して、Table セルのボーダーとマージンを指定します。
NULL でない場合は、BorderSpec に指定されたボーダーとマージンを使用します。BorderSpec.left-border-widthBorderSpec.right-border-widthBorderSpec.top-border-width、および BorderSpec.bottom-border-width のどれもが null であると、Tablecell-border-width で指定された値を使用します。
同様に、BorderSpec.left-marginBorderSpec.right-marginBorderSpec.top-margin、および BorderSpec.bottom-margin のどれもが null であると、Tablecell-margin で指定された値を使用します。


例: BorderSpec の使用
{define-proc package {make-table
                         cell-border-style:BorderStyle,
                         cell-border-color:FillPattern =
                             FillPattern.blue,
                         cell-border-spec:#BorderSpec = null
                     }
    {return
        {Table
            columns = 3,
            width = 7cm,
            height = 3cm,
            background = FillPattern.silver,                
            border-width = 1pt,
            border-color = FillPattern.black,
            cell-border-style = cell-border-style,
            cell-border-color = cell-border-color,
            cell-border-width = 2pt,
            cell-margin = 5pt,                
            cell-border-spec = cell-border-spec,
            "Apple", "Banana", "Grapes",
            "Papaya", "Strawberry", "Guava"
        }
    }
}

{spaced-hbox
    margin = 2pt,
    || Note that this Table is setting the left and right cell 
    || border width to 0pt. Since top and bottom cell border width
    || are not specified in the BorderSpec they will be equal to 
    || the value of the cell-border-width option on the Table. 
    {make-table
        BorderStyle.flat,
        cell-border-spec = 
            {BorderSpec
                left-border-width = 0pt,
                right-border-width = 0pt
            }
    },
    || Note that this Table is setting the left and right cell 
    || margin to 0pt. Since top and bottom cell margin are not 
    || specified in the BorderSpec they will be equal to the 
    || value of the cell margin option on the Table. 
    {make-table 
        BorderStyle.flat,
        cell-border-spec =
            {BorderSpec
                left-margin = 0pt,
                right-margin = 0pt
            }                
    }
}


cell-border-style (非ローカル オプション)
public Table.cell-border-style:BorderStyle

この表のテーブル セル ボーダーの外観を指定します。

説明

有効値は次のとおりです。


例: 次は、さまざまなテーブル セルのボーダー スタイルを青で表示しています (tiled を除く)。
{let t:Table =
    {Table 
        columns = 3, 
        width = 7cm,
        height = 3cm,
        background = FillPattern.silver,
        cell-border-color = FillPattern.blue,
        cell-border-width = 3pt,
        cell-border-style = BorderStyle.flat,
        border-width = 1pt,
        border-color = FillPattern.black,
        "Apple", "Banana", "Grapes",
        "Papaya", "Strawberry", "Guava"
    }
}

{let dd:DropdownList = 
    {DropdownList
        "none", "flat", "raised", "sunken",
        "ridge", "groove", "dash", "dot", 
        "double",
        value = "flat",
        {on ValueChanged do
            set t.cell-border-style = dd.value
        }
    }
}

{spaced-hbox
    dd,
    t
}
この例は、tiled ボーダー スタイルの使用法を示しています。ボーダー幅が変化するにつれて、ボーダーのタイル部分がどのように変化するか注意してください。この場合は、タイル部分には 24px より小さいボーダー幅のイメージの傾斜部分が含まれます。また、ピクセルの単一の行と列が伸長され、イメージ部分がなくなるまで、ボーダーが大きくなるにつれて、両側と上部に沿ったタイル表示に使用できるイメージ部分が小さくなっていくことに注意してください。これは、ボーダー幅がイメージ サイズの半分以上の場合に発生します。このイメージは 256x256 のため、ボーダー幅を 128px 以上に設定するとこの効果を確認することができます。
border-color に使用されるイメージは次のように表示されます。

例: tiled ボーダー スタイルの使用
{let constant t:Table =
    {Table 
        columns = 3, 
        background = FillPattern.silver,
        cell-border-color =
            {FillPattern.from-url
                {url "curl://install/docs/default/images/tiled-border.gif"}
            },
        cell-border-width = 30px,
        cell-border-style = BorderStyle.tiled,
        border-width = 1pt,
        border-color = FillPattern.black,
        "Apple", "Banana", "Grapes",
        "Papaya", "Strawberry", "Guava"
    }
}

{value
    {t.add
        {cell-prototype
            colspan = 3,
            {HBox
                spacing = 5mm,
                "cell-border-width:",
                {TextField
                    value = "30px",
                    {on ValueFinished at tf:TextField do
                        set t.cell-border-width = {evaluate tf.value}
                    }
                }
            }
        }
    }
    
    t
}

注意事項

参照: cell-border-width, cell-border-color.


cell-border-width (非ローカル オプション)
public Table.cell-border-width:any

Table のテーブル セル ボーダーの幅を指定します。

説明

DistancePixelDistanceEmDistance の値を指定します。既定値は 0pt です。

各テーブル セルにはボーダーがあります。たとえば、表内の各セルが幅 1 ピクセルのボーダーを持つ場合、2 つの隣接するセルの内容の間には、2 ピクセル分のボーダーが存在することになります。注意:Curl 言語の将来のバージョンでは、隣接するテーブル セルのボーダーがマージされて、cell-border-width を指定すると、その分のスペースだけが 2 つの隣接するテーブル セルの内容の間に現れるようになる可能性があります。

次の Table 内の 3 つのテーブル セルには、異なるテーブル セル ボーダーの幅 (青で表示) が指定されています。


注意事項

cell-border-width に代入する値には、10pt (10points)、.5cm (.5centimeters)、0.3in (0.3inches)、または 1px (1pixel) などの明示的な距離単位を指定することをお勧めします。単位が指定されていない整数や浮動小数点数は、距離をポイント (1pt = 1/72 インチ) で表していると見なされます。

Graphic.width オプションや Graphic.height オプション同様に、指定したボーダー幅がピクセル サイズの正確な倍数にならない場合、最も近い倍数に丸められます。ただし、ゼロより大きくても 1 ピクセルより小さいピクセル サイズは、常に 1 ピクセルに切り上げられます。


cell-margin (非ローカル オプション)
public Table.cell-margin:any

テーブル セルの境界とその子スロット (テーブル セルがその子グラフィックを配置する場所) の間の距離を指定します。

説明

DistancePixelDistanceEmDistance の値を指定します。既定値は 1mm です。

注意事項

cell-margin に代入する値には、10pt (10points)、.5cm (.5centimeters)、0.3in (0.3inches)、または 1px (1pixel) などの明示的な距離単位を指定することをお勧めします。単位が指定されていない整数や浮動小数点数は、距離をポイント (1pt = 1/72 インチ) で表していると見なされます。

Graphic.width プロパティや Graphic.height プロパティと同様に、指定したマージンがピクセル サイズの正確な倍数にならない場合、ピクセル サイズに最も近い倍数に丸められます。ただし、ゼロより大きくても 1 ピクセルより小さいピクセル サイズは、常に 1 ピクセルに切り上げられます。

次にいくつかの異なるセル マージン サイズが青で表示されています。テーブル ボーダーは黒です。テーブル セル ボーダーは白です。




column-count (アクセサ)
アクセサ public Table.column-count:int

Table 内の現在の列数を示します。

戻り値

Table に含まれる現在の列数。

オーバーライド

通常はオーバーライドされません。


data-binding-context (非ローカル オプション)
public Table.data-binding-context:#DataBindingContext

このターゲットに関連付けられた既定の DataBindingContext

説明

このターゲット上で DataBinding.auto-register? プロパティが true に設定されている DataBinding は、このコンテキストに自動的に登録されます。
このオプションが変更されると、DataBinding.note-target-binding-context-changed の呼び出しによってこのターゲット上のすべてのバインドに通知されます。


display-context (非ローカル オプション)
public Table.display-context:#DisplayContext

このオブジェクトに関連付けられている DisplayContext

プログラミング注意事項

このオプションは、Curl グラフィック システム内での通信のために使用されます。これは、ユーザー コードで不用意に設定や設定解除を行わないでください。また、通常は、ユーザー コードで直接読み取るべきではありません。現在の DisplayContext が必要な場合は、Visual.get-display-context を呼び出すことによりフェッチしてください。

画面上のウィンドウまたは印刷されたページで表示可能なすべてのグラフィック階層は、そのルートにおいて、display-context オプションを DisplayContext オブジェクトに設定するオブジェクトを持つ必要があります。このオブジェクトは、グラフィック階層の表示に使用される表示媒体に適しています。つまり、オブジェクトは、display-context オプションの値が null から非 null DisplayContext オブジェクトに変更されるのをモニタリングすることにより、表示不可能なグラフィック階層に連結されていることを認識します。したがって、特定の動作を実行する必要のある Visual のサブクラスは、表示不可能なグラフィック階層に接続された場合、次のようなオプション宣言を含むことにより display-context オプションをモニタリングします。

{nonlocal-option public display-context:#DisplayContext
change handler}


ここで、change handler 内のコードは display-context オプションの現在値 (変数 display-context の値として、変更ハンドラ内にある) を取得し、null および非 null の値の間で行われる変更をモニタリングし、必要とされる動作を実行します。

ただし、このプログラミング熟語を使用するプログラマーは、グラフィカル表示を再配列する際、グラフィック階層からグラフィカル オブジェクトを一時的に分離し、これらを同じ階層に再アタッチすることが、割に一般的であることを理解するべきです。この処理により、一時的に分離されたオブジェクトは、display-context オブジェクトが null になり、再び非 null になるのを観察します。display-context オプションでの変更をモニタリングするコードは、この可能性を考慮に入れ、この状況における望ましくない動作の実行を回避しなくてはなりません。


graphical-children (アクセサ)
アクセサ public Table.graphical-children:{Iterator-of Graphic}

SequenceBox のグラフィカルな子の反復子を返します。

注意事項

graphical-children を呼び出すときに、SequenceBox の子の追加や削除を同時に実行しないでください。実行すると、反復子が予期せぬ動作を行なう可能性があります。SequenceBox に対して子を追加または削除する場合、graphical-children を再度呼び出して新しい反復子を作成します。


halign (ローカル オプション)
public Table.halign:any

Table 要素の水平方向の整列方法を指定します。

説明

このオプションは、Table の列にある各オブジェクトの水平方向の配置を制御します。Table 内の各列には、列内のオブジェクトを配置する際の基準となる垂直の配置軸があります。Table 内の各セルに適用される halign オプションの値では、セル内の Graphic がこの軸を基準にして配置されるポイントを選択します。

halign オプションの許容値は次のとおりです。



Table 全体、または Table の個々の行、列、セルに halign オプションを設定した場合にその影響を受ける Table セルについて理解するには、『Curl 開発者ガイド』の「グラフィカル コンテナ」の章で Table に関するオプション検索の規則を参照してください。


horizontal-line-color (非ローカル オプション)
public Table.horizontal-line-color:FillPattern

Table の行を区切る線の色またはパターン。

説明

水平線の色は、水平線が存在する場合、つまり Table.horizontal-line-width オプションが設定されている場合にのみ適用されます。


horizontal-line-width (ローカル オプション)
public Table.horizontal-line-width:any =0pt

Table の行と行の間に引く線の幅を指定します。

注意事項

参照: horizontal-line-color.


hstretch? (ローカル オプション)
public Table.hstretch?:bool =false

GraphicTable セルに収まるように水平に伸長されるかどうかを制御します。

説明

true に設定されると、このオプションは必要に応じて Table セルに含まれる子 Graphic を強制的に水平に伸長し、子の幅設定の固定率が高い場合でもセル内のスペースを埋めます。このオプションが false で、子の幅 Elastic の伸長順位が padding-threshold-stretch-order よりも小さい場合、子の周りにスペースが確保されます。子の幅エラスティックの伸長順位がこの値よりも大きい場合、子は伸長され、セルを埋めます。このオプションの既定値は false です。

詳細および例については、 Frame.hstretch? オプションを参照してください。

Table 全体、または Table の個々の行、列、セルに hstretch? オプションを設定した場合に影響を受ける Table セルについて理解するには、Table に関するオプション検索の規則を参照してください。


internal-borders (ローカル オプション)
public Table.internal-borders:TableInternalBorders =TableInternalBorders.none

表の境界線を引く場所を決定します。既定値は TableInternalBorders.none です。

注意事項

詳細については、TableInternalBorders を参照してください。


ordered-children (アクセサ)
アクセサ public Table.ordered-children:{Iterator-of Graphic}

子を順番に返す、この Box のグラフィカルな子の反復子。

説明

選択や検索、および制御のタブ順に使用されます。このメソッドの既定の実装は、Box.graphical-children と同じです。Box のサブクラスで、グラフィカルな子の順序が graphical-children の順序と異なる場合は、このメソッドをオーバーライドする必要があります。


reverse-ordered-children (アクセサ)
アクセサ public Table.reverse-ordered-children:{Iterator-of Graphic}

この Box のグラフィカルな子の反復子で、子を逆の順序で返します。これは、Box.ordered-children を反転するものです。

注意事項

既定の実装では、それぞれの子のポインタにメモリが割り当てられます。

オーバーライド

このメソッドはオーバーライドが必要とは限りません。メソッドの既定の実装では、Box.ordered-children を反転します。ただし、既定の実装は少し効率が悪いので、このアクセッサをより効率的に実装できるサブクラスは適宜実装してください。


row-count (アクセサ)
アクセサ public Table.row-count:int

Table 内の現在の行数を示します。

戻り値

この Table に含まれる現在の行数。

オーバーライド

通常はオーバーライドされません。


style-element (アクセサ)
アクセサ public Table.style-element:String

スタイリングの目的のための、この Visual の "要素" や "型" です。

説明

この実装によって Visual._style-elementの値が返されますが、通常は定数を返すためにオーバーライドされます。

オーバーライド

Visual のサブクラスのスタイルが他のオブジェクトと異なる場合、このゲッターは適切な文字列を返すようにオーバーライドされる必要があります。 慣例では,この文字列はクラス名または、オブジェクトを生成するマークアップの名前です。
オーバーライドでは、空の文字列でないかぎり、self._style-elementを返さなければなりません。
導入: バージョン 6.0


valign (ローカル オプション)
public Table.valign:any

Table 要素の垂直方向の整列方法を指定します。

説明

このオプションは、Table.halign オプションと同様に動作しますが、Table の同じ行に含まれるオブジェクトの垂直方向の相対的な配置を制御します。halign プロパティの "left""right" の値に相当する valign の値は、それぞれ "top""bottom" です。既定値は "origin" で、行に含まれるすべてのオブジェクトの垂直起点を揃えることを意味します。


vertical-line-color (非ローカル オプション)
public Table.vertical-line-color:FillPattern

Table の列を区切る線の色またはパターン。

説明

垂直線の色は、垂直線が存在する場合、つまり Table.vertical-line-width オプションが設定されている場合にのみ適用されます。


vertical-line-width (ローカル オプション)
public Table.vertical-line-width:any =0pt

Table の列と列の間に引く線の幅を指定します。

注意事項

参照: vertical-line-color.


vstretch? (ローカル オプション)
public Table.vstretch?:bool =false

GraphicTable セルに収まるように垂直に伸長されるかどうかを制御します。

説明

このオプションは、Table.hstretch? オプションと同様ですが、垂直方向に動作します。





メソッド詳細
add (メソッド)
public {Table.add g:any, ...}:#Visual

Table にアイテムを追加します。

g: 追加するアイテム。

...: いくつかのキーワード引数を Table.add に提供することができます。

戻り値

この Table.add の呼び出しにより表に実際に追加された最後の Graphic。表に Graphic が追加されなかった場合 (たとえば、空の行が追加された場合)、null が返されます。

説明

使用可能なオプションの数が多く、それに合わせて多数のケースを説明する必要があることから、Table.add の動作の完全な説明はかなり複雑になります。しかし、この複雑な動作の目的は、単純な引数で Table.add を呼び出して、即座に適正であると判断できる方法で Table に要素を配置することにあります。

このメソッドが呼び出されたときに Table に追加されるオブジェクトは、引数 g をいくつかのキーワード引数に関連して調べて決定されます。gTableContentPrototype で、colspan キーワード引数と rowspan キーワード引数がどちらも指定されていない場合、追加されるオブジェクトは、提供される TableContentPrototype の種類に基づいてセル、行、列、なし、のいずれかになります。これらのケースについての詳細情報は、それぞれ



を参照してください。

gTableContentPrototype ではなく、colspan キーワード引数または rowspan キーワード引数のいずれかが指定されている場合、gGraphic にキャストされて (すでに存在する場合を除く) 結果の GraphicTable に追加されます。

Table 内のアイテムが追加される位置は、Table の現在の挿入カーソルを使用して計算されます。挿入カーソルは、Table の作成時には行 0、列 0 にありますが、Table コンストラクタで位置引数が指定されると、Table.add メソッドについてここで説明されている処理のステップに従ってそれらの各アイテムが追加されます。結果として、Table コンストラクタの操作完了時には、挿入カーソルが行 0、列 0 に配置されていない場合があります。

Table の作成時に column キーワード引数が指定されると、Table.add メソッドの操作が変わります。この引数が指定されると、列カウントという用語を使用してこのキーワードで与えられた整数値のことを意味します。column キーワード引数が指定されなかった場合、Table列カウントを持たないということになります。

追加操作の初めに、挿入カーソルは、Table.add メソッドの row または column キーワード引数として与えられた値に基づいて変更されます。row=r 引数が指定されると、挿入カーソルの行コンポーネントが r に設定されます。同様に、column=c 引数が指定されると、挿入カーソルの列コンポーネントが c に設定されます。次に、挿入列 (つまり挿入カーソルの列部分) が、表の列カウントと比較されます (存在する場合)。Table が列カウントを持ち、さらに挿入列がこの列カウント以上の場合、追加操作を進める前に挿入カーソルが調整され、挿入行が 1 増加し、挿入列が 0 に設定されます。

追加操作の残りのステップはさまざまな方法で進められ、Table に追加されるアイテムの型に応じて、挿入カーソルに異なる影響を与えます。次の場合が可能です。



上記で説明された処理の間に追加される要素が、すでに表内に含まれる要素に重なる場合は、既存の要素が表から削除されます。これは、新しく追加される要素の行と列が、すでに追加されている要素の行や列と同じである場合、異なる (row, column) 位置の要素がそれらの colspanrowspan の値指定が原因で重なる場合の両方に適用されます。

表挿入カーソルがどのように更新されるか心配することなく、簡単にこのメソッドを使用するには、乗法テーブルを作成する次の例で示されるように、各 Table.add メソッド呼び出しで行と列を明示的に指定します。


{value
    let size:int = 10
    let t:Table = {Table halign="right"}
    {for i:int = 1 to size do
        {for j:int = 1 to size do
            {t.add
                row = i - 1,
                column = j - 1,
                i * j
            }
        }
    }
    t
}


表に列カウントを指定して挿入カーソルの更新規則を使用すると、次の例で示されるように、行および列の明示的指定が必要でなくなる場合があります。


{value
    let size:int = 10
    let t:Table = {Table columns=size, halign="right"}
    {for i:int = 1 to size do
        {for j:int = 1 to size do
            {t.add i * j}
        }
    }
    t
}


次の例で説明されるように、情報を一度に 1 行ずつ追加することも可能です。ここでは、行の追加操作により挿入カーソルの標準的な更新が行なわれ、行が自動的に 1 つずつ追加されています。


{value
    let size:int = 10
    let t:Table = {Table halign="right", valign="origin"}
    {t.add
        {row-prototype
            {text N},
            {text N{superscript 2}},
            {text N{superscript 3}},
            {text N{superscript 4}}
        }
    }
    {for i:int = 1 to size do
        {t.add
            {row-prototype
                i,
                i * i,
                i * i * i,
                i * i * i * i
            }
        }
    }
    t
}


次の例に示される表を作成したプログラマーは、行 2 に A B C が現れることを予測していた可能性があります。実際には、文字の行を追加する t.add 呼び出しの直前に挿入カーソルが行 4 、列 1 に配置されていたため、これらの文字は行 3 に表示されます。上記説明の規則に基づき、この呼び出しの row キーワード引数は挿入行を 2 に設定します。ただし、挿入列が 0 ではないため、行が実際に追加される前に挿入行が 1 増加します (さらに挿入列は 0 に設定されます)。


{value
    let t:Table =
        {Table
            background="aqua", border-color="aqua",
            border-width=2pt, border-style="raised",
            cell-border-width=2pt, cell-border-style="sunken",
            halign="center"
        }
    {for i:int = 0 below 5 do
        {t.add
            row = i, column = 0, colspan = 3,
            {format "Row %d", i}
        }
    }
    {t.add
        row = 2,
        {row-prototype "A", "B", "C"}
    }
    t
}


表の個々の要素を追加する操作が、行または列全体を追加する操作と混ざり合うような状況では、次の例に示されるように、各 Table.add 呼び出しで行と列を明示的に指定して、予期せぬ結果を回避することを推奨します。この例は上記の例にわずかに変更を加えたバージョンで、最後の t.add 呼び出しに column = 0 キーワード引数を明示的に含めることにより、文字の行が指示どおりに行 2 に表示されます。


{value
    let t:Table =
        {Table
            background="aqua", border-color="aqua",
            border-width=2pt, border-style="raised",
            cell-border-width=2pt, cell-border-style="sunken",
            halign="center"
        }
    {for i:int = 0 below 5 do
        {t.add
            row = i, column = 0, colspan = 3,
            {format "Row %d", i}
        }
    }
    {t.add
        row = 2, column = 0,
        {row-prototype "A", "B", "C"}
    }
    t
}


引数のさまざまな組み合わせを使用し、Table.add への呼び出しを繰り返し実行して表を作成する例は、Table の説明を参照してください。

オーバーライド

子の追加にさらに別の処理を関連付けることができるように、Table のサブクラスでこのメソッドをオーバーライドできます。オーバーライド メソッドは通常、

{super.add g, ...}

を呼び出して、Table 自体の追加アクションを呼び出し、キーワード引数が指定されている場合はそのキーワード引数とともに渡します。


add-from-init-args (メソッド)
protected {Table.add-from-init-args a:any}:void

この Visual のコンストラクタに渡されるオブジェクトを Visual の内容に追加します。

プログラミング注意事項

このメソッドは Visual.non-keyword-init-arg で呼び出され、通常サブクラスでは直接呼び出しません。

オーバーライド

このメソッドの既定の実装では、Visual.add が呼び出されるだけです。サブクラスではこのメソッドをオーバーライドし、コンストラクタを使ってこの Visual に内容を追加する際の特別な処理を指定してください。


clear (メソッド)
public {Table.clear}:void

ボックスのグラフィカルな子を削除します。



compare-children (メソッド)
public {Table.compare-children a:Graphic, b:Graphic}:GraphicalOrder

このボックスの 2 つの子のグラフィカルな順序を検証します。

a: 検証する 1 つ目の Graphic
b: 検証する 2 つ目の Graphic

戻り値

b と関連する a の位置に対応する GraphicalOrderab のどちらかが self のグラフィックの子で無い場合、GraphicalOrder.equal が返されます。後者の場合、ab と同じでない時は、少なくとも ab のうち一つはこのボックスの子ではありません。

オーバーライド

このメソッドはオーバーライドが必要とは限りません。既定の実装では、Box.ordered-children で指定された順序に従って、子の順序を比較します。ただし、既定の実装は (子の総数に比例するので) 効率が悪い場合があります。サブクラスが多数の子を持つことが予想され、このメソッドのより効率的な実装ができる場合は、適宜実装してください。


contains-point? (メソッド)
public {Table.contains-point? x:Distance, y:Distance}:bool

指定されたポイントで発生するイベントが、ターゲット ボックスと、そのいずれかのグラフィカルな子のどちらに関するものかを判断します。

x, y: ポイントの座標。ターゲット オブジェクトの起点を基準として表現します。

プログラミング注意事項

このメソッドは、通常は、ポインタ イベントをグラフィカルな子に転送するかどうかを決定するためなど、主として内部目的で用意されています。

注意事項

このメソッドは、ポイントがグラフィカルな子によって占められる領域内 (境界を含む) にある場合は、グラフィカルな子が以下のプロパティを持っていると判断して true を返します。

一般に、ボックス内のターゲット ポイントがボックスの可視部分として描画されていない場合、このメソッドは false を返します。

TextFlowBox に選択可能なテキストが含まれている場合 (つまりプロパティ text-selectable? が値 true である場合) は、ポイントが境界ボックス内にある限り、メソッドは true を返します。これは、その領域内の任意のイベントが、ボックス内のテキスト選択に関連付けられる可能性があるからです。それ以外の場合は、TextFlowBox は前述したように、他のボックスと同じように扱われます。


delete-column (メソッド)
public {Table.delete-column column:any}:void

Tableから列を削除します。

column: Table.addcolumn キーワードにより受け入れられる形式を使用して、削除する列を指定します。

注意事項

削除される列に要素の左上隅が含まれる場合、これらはすべて表から削除されます。列を削除すると列番号と列のマッピングが変わり、削除の後で Table 内の列は 0 から順番に番号が付け直されます。

オーバーライド

通常はオーバーライドされません。


delete-row (メソッド)
public {Table.delete-row row:any}:void

Table から行を削除します。

row: Table.addrow キーワードにより受け入れられる形式を使用して、削除する行を指定します。

注意事項

削除される行に表の要素の左上隅が含まれる場合、これらはすべて表から削除されます。行を削除すると行番号と行のマッピングが変わり、削除の後で Table 内の行は 0 から順番に番号が付け直されます。

オーバーライド

通常はオーバーライドされません。


draw (メソッド)
public {Table.draw renderer2d:Renderer2d}:void

このオブジェクトの可視表現を描画します。

renderer2d: このオブジェクトを使用してそれ自身を描画する Renderer2d

オーバーライド

既定のメソッド Graphic.draw は何もしません。Graphic のサブクラスは、必要とされる描画の操作を実行するコードでこのメソッドをオーバーライドしなければなりません。
このメソッドをオーバーライドする場合は、再描画が必要となる時はいつでも、描画する Graphic の範囲が有効でない事を確認しなければなりません。たとえば、データの値を更新するために描画をする時は、データの値が変わる時にアプレットは必ず Graphic.request-drawGraphic.request-draw-rectを呼び出さなければなりません。


get-column (メソッド)
public {Table.get-column
column:any,
create?:bool = false,
return-null-if-missing?:bool = false
}:#TableColumn

Table から、指定された TableColumn を返します。

column: Table.addcolumn キーワードにより受け入れられる形式を使用して、TableColumn を指定します。
create?, return-null-if-missing?: 指定された列が存在しない場合の動作を指定します。return-null-if-missing? が true の場合、null が返されます。それ以外の場合、create? が true の場合、TableColumn が作成されて返されます。それ以外の場合、エラーが生じます。

戻り値

column により指定された TableColumn

プログラミング注意事項

このメソッドは主に、TableColumn を取得してその列のプロパティを設定または削除するために使用されます。

オーバーライド

通常はオーバーライドされません。


get-element (メソッド)
public {Table.get-element row:any, column:any}:#Graphic

Table 内の指定された要素を返します。

row: Table.addrow キーワードにより受け入れられる形式を使用した、要素を含む行の指定。
column: Table.addcolumn キーワードにより受け入れられる形式を使用した、要素を含む列の指定。

戻り値

指定行や列に位置する GraphicGraphic が存在しない場合は null。

プログラミング注意事項

Table 内の指定行や列の位置で、Graphic ではなく TableCell を取得するには、このメソッドを使用し、指定位置で Graphic を取得してから Table.get-element-cell を呼び出し、TableCell オブジェクトそのものを取得します。

オーバーライド

通常はオーバーライドされません。


get-element-cell (メソッド)
public {Table.get-element-cell g:any}:TableCell

Table の指定要素に関連付けられている TableCell を返します。

g: 対象となる要素の指定。g は、表に含まれる Graphic、あるいは Graphic のレイアウト オブジェクトです。

戻り値

要素に関連付けられている TableCell

オーバーライド

通常はオーバーライドされません。


get-element-column (メソッド)
public {Table.get-element-column g:any}:#TableColumn

Table 内で指定要素の左上隅に関連付けられている TableColumn を返します。

g: 対象となる要素の指定。g は、表に含まれる Graphic、あるいは Graphic のレイアウト オブジェクトです。

戻り値

該当する TableColumn

オーバーライド

通常はオーバーライドされません。


get-element-row (メソッド)
public {Table.get-element-row g:any}:#TableRow

Table 内で指定要素の左上隅に関連付けられている TableRow を返します。

g: 対象となる要素の指定。g は、表に含まれる Graphic、あるいは Graphic のレイアウト オブジェクトです。

戻り値

該当する TableRow

オーバーライド

通常はオーバーライドされません。


get-range-as-selected-text (メソッド)
public {Table.get-range-as-selected-text
into:StringBuf,
start-bound:#GuiMark = null,
end-bound:#GuiMark = null
}:void

start-boundend-bound 間の、このグラフィック内に含まれる選択したテキストを取得します。

into: 結果を格納する StringBuf
start-bound: グラフィック内の開始ポイントを区切る GuiMark。null の場合、開始ポイントはグラフィックの先頭の端と見なされます。
end-bound: グラフィック内の終了ポイントを区切る GuiMark。null の場合、終了ポイントは、グラフィックの最後の端と見なされます。

オーバーライド

通常コンテナは再帰的に呼び出しを実行して、適切な区切り文字を挿入します。その他のサブクラスは、直接テキストを提供します。


get-row (メソッド)
public {Table.get-row
row:any,
create?:bool = false,
return-null-if-missing?:bool = false
}:#TableRow

Table から、指定された TableRow を返します。

row: Table.addrow キーワードにより受け入れられる形式を使用した TableRow の指定。
create?, return-null-if-missing?: 指定された行が存在しない場合の動作を指定します。return-null-if-missing? が true の場合、null が返されます。それ以外の場合、create? が true の場合、 TableRow が作成されて返されます。それ以外の場合、エラーが生じます。

戻り値

row により指定された TableRow

プログラミング注意事項

このメソッドは主に、 TableRow を取得してその行のプロパティを設定または削除するために使用されます。

オーバーライド

通常はオーバーライドされません。


group-columns (メソッド)
public {Table.group-columns group:TableGroup, ...:int}:void

group で識別される TableGroup に 1 つ以上の列を割り当てます。

...: 列インデックスの一覧。


group-rows (メソッド)
public {Table.group-rows group:TableGroup, ...:int}:void

group で識別される TableGroup に 1 つ以上の行を割り当てます。

...: 行インデックスの一覧。


insert-column (メソッド)
public {Table.insert-column column:any}:TableColumn

列を Table に挿入します。

column: 新しい列が挿入されたときの列番号。たとえば、2 を指定した場合、挿入された列は Table の 3 番目の列になり、その列の右にあるすべての列の番号が変更されます (列は 0 から順番に、左から右へと番号が付けられます)。有効な値は、Table.addcolumn キーワードにより受け入れられる任意の形式です。column"last" の場合、新しい列は、Table に存在する列の最後に配置されます。

戻り値

新しく挿入された列に対応する TableColumn オブジェクト。

オーバーライド

通常はオーバーライドされません。


insert-row (メソッド)
public {Table.insert-row row:any}:TableRow

行を Table に挿入します。

row: 新しい行が挿入されたときの行番号。たとえば、2 を指定した場合、挿入された行は Table の 3 番目の行になり、それより下にあるすべての行の番号が変更されます (行は 0 から順番に、上から下へ番号が付けられます)。有効な値は、Table.addrow キーワードにより受け入れられる任意の形式です。row"last" の場合、新しい行は、Table に存在する行の一番下に配置されます。

戻り値

新しく挿入された行に対応する TableRow オブジェクト。

オーバーライド

通常はオーバーライドされません。

次の例では、Table に行を挿入してそこに内容を追加しています。


{value let t:Table=
    {Table cell-border-width=1pt, cell-border-color="blue",
           border-width=1pt, border-color="blue",
           {row-prototype {text font-size=12pt, Big},
                {text font-size=24pt, Hello}},
           {row-prototype {text font-size=16pt, Bigger},
                {text font-size=16pt, Goodbye}},
           {row-prototype {text font-size=24pt, Biggest},
                {text font-size=8pt, Maybe}}}
    || Insert a row at row number 2
    {t.insert-row 2}
    || Add content to the newly added row
    {t.add row=2,
           {row-prototype {text color="red", New},
                {text color="red", Text}}}
    t
}


internal-remove-child (メソッド)
protected {Table.internal-remove-child l:SequenceLayout}:void

SequenceBox の子を削除します。

l: 削除される子 Graphic のレイアウト オブジェクト。

プログラミング注意事項

通常、レイアウト オブジェクトが l である GraphicGraphic.detach を呼び出した結果として、SequenceLayout.detach により呼び出されます。

オーバーライド

子が SequenceBox から切り離されたときにサブクラスが別の記録処理を実行する場合、SequenceBox のサブクラスでオーバーライドできます。


keyword-init-arg (メソッド)
public {Table.keyword-init-arg key:String, value:any}:void

InitRestArgParser.process-rest-args でキーワード引数が検出されると呼び出されます。

key: キーワード引数でキーとして表示される String
value: キーワード引数で表示される値。

オーバーライド

既定の実装 InitRestArgParser.keyword-init-arg は、呼び出されるとエラーをレポートします。このメソッドは、 InitRestArgParser.process-rest-args に渡される引数リストのキーワード引数を受け入れるサブクラスによってオーバーライドされます。


notify-option-children (メソッド)
public {Table.notify-option-children
item:OptionItem,
removed?:bool
}:void

このオブジェクトのオプションの子にオプションが変更されたことを通知します。

item: 追加または削除されたバインディング オプション。
removed?: item が削除された場合は true、それ以外の場合は false。

オーバーライド

既定の実装 OptionListInterface.notify-option-children では、何も行われません。サブクラスではこのメソッドをオーバーライドして、このオブジェクトの各オプションの子 c に対して {c.option-propagate-notify item removed? } を呼び出すようにする必要があります。


paginate (メソッド)
public {Table.paginate
page-height:Distance,
next-page-height:Distance,
query-only?:bool
}:(PaginationState, PaginationQuality)

グラフィックにパジネーションを適用します。

page-height: グラフィックをページにレンダリングするのに有効な高さ。これには、ボーダーとマージンが占めるスペースは含まれません。
next-page-height: このグラフィックが次のページに移動される場合に、このグラフィックをパジネートするのに有効な高さ。
query-only?: true の場合は、この Graphic に対する PaginationState の状態は変わりません。詳細については、Graphic.get-pagination-state および注を参照してください。

戻り値

返される PaginationState は、このメソッドが呼び出された後の Graphic のパジネーション状態です。
返される PaginationQuality 値は、与えられた page-height を使用して達成されるページ分割の品質を示します。

プログラミング注意事項

Graphic にパジネーションを適用する前に、true に設定された query-only? でこの関数を呼び出すことができます。このように、呼び出し元は、与えられた page-height でどんな PaginationQuality を達成できるかを決定することができます。呼び出し元は、PaginationQuality に応じて、現行ページにあるオブジェクトの一部にパジネーションを適用するか、オブジェクト全体を次のページに押し込むことができます。これを行うには、このオブジェクトの先頭を指すように、Graphic に関連付けられた PaginationStatePaginationState.end-offset を設定します。

オーバーライド

Graphic 自身が何らかの具体的な方法でページ間でパジネーションを実行するようにしたい場合は、このメソッドをオーバーライドします。
このメソッドをオーバーライドするときは、以下の規則に従う必要があります。
query-only?Graphic.get-pagination-state を呼び出して、この Graphic の現在のパジネーションの状態を取得します。query-only?true であると、メソッドはこの GraphicPaginationState のクローンに作用します。
このメソッドが前に PaginationQuality.complete を返した Graphic で呼び出される場合は、PaginationState.start-offsetPaginationState.end-offset に設定されていて、返されたパジネーションの質が PaginationQuality.complete であることを確認してください。
page-height が負または無視できるほどである場合は、返されたパジネーション状態がオブジェクトの現在のパジネーション状態であり、返されたパジネーションの質が PaginationQuality.clipped-outside でなければなりません。
そうでない場合は、page-height が使用可能であれば、新しいページの PaginationState.start-offsetPaginationState.end-offset、および PaginationState.min-end-offset を計算して設定し、このパジネーション シーケンスにふさわしい PaginationQuality を返してください。
Box などのコンテナ (パジネーションによってその子をページ間で分割しないようにする場合)。このようなコンテナは、現行ページに子を収容できない場合は、次の 2 つのステップに従う必要があります。
1. その子が改ページしないように要求しているかどうかを調べる (Graphic.avoid-page-break? を参照)。要求している場合は、現行ページでこのグラフィックに使用できる高さが next-page-height より小さければ、その子を次のページに押し込みます。子を次のページに押し込むためには、コンテナがその現在の PaginationStatePaginationState.end-offset を、-{child.get-cell-bounds}.ascent である子の先頭に設定する必要があります。
2. 子にパジネーションを依頼し、返された PaginationQualityPaginationQuality.good 以上であれば、現行ページで子のパジネーションを開始する。そうでなければ、コンテナが、true として渡される query-only? と、独自の Graphic.paginate メソッドに渡された next-page-height として渡される page-height および next-page-heightとで Graphic.paginate メソッドを呼び出して子を次のページに押し込んだ場合に子のパジネーションが少なくとも PaginationQuality.good になるかどうかを調べる必要があります。PaginationQuality.good である場合は子を次のページに押し込み、そうでない場合は子が現行ページからパジネーションするようにします。
コンテナは、子グラフィックを直接パジネーションさせるのではなく、子グラフィックの Layout にパジネーションを依頼する必要があるので、注意してください。
以下は、Graphic.paginate がどのようにして実装されるかを示すコードです。
{method public open {paginate
page-height:Distance,
next-page-height:Distance,
query-only?:bool
}:(PaginationState, PaginationQuality)
let pstate:PaginationState = 
{self.get-pagination-state query-only?}
let bounds:GRect = pstate.bounds
let constant epsilon:Distance = epsilon-float * 1m

|| All done.
{if {abs bounds.descent - pstate.end-offset} < epsilon then
set pstate.start-offset = pstate.end-offset
{return pstate, PaginationQuality.complete}
}

|| No space left for the graphic.
{if page-height < epsilon then
{return pstate, PaginationQuality.clipped-outside}
}

let new-start-offset:Distance = pstate.min-end-offset
let new-end-offset:Distance = 
{min new-start-offset + page-height, bounds.descent}

{return
{pstate.advance-pagination
new-start-offset,
new-end-offset,
quality-if-not-complete = PaginationQuality.poor
}
}
}

注意事項

これは、Layout.paginate を呼び出したときに呼び出されます。


pick-child (メソッド)
public {Table.pick-child x:Distance, y:Distance}:#EventForwarder

指定された点 (x, y) を覆う BasicBox の子をピックアップします。

x, y: ポイントの座標です。

戻り値

この点を覆う子。該当する子がない場合は NULL を返します。

プログラミング注意事項

このメソッドは、PointerEvent を転送する場合やその他の類似の状況で使用されます。

注意事項

このメソッドの実装では、xy の最新の値を、これらの値について返された答えと合わせてキャッシュすることが推奨されます。このメソッドはたいてい同じ入力で連続して複数回呼び出されるからです。

オーバーライド

このメソッドは、適切な戻り値を計算するコードを持つ、BasicBox の具象サブクラスでオーバーライドする必要があります。


propagate-option-change (メソッド)
protected {Table.propagate-option-change
item:OptionItem,
removed?:bool
}:void

このオブジェクト、および該当する場合はそのオプションの子孫にオプションが変更されたことを通知します。

item: 追加または削除されたバインディング オプション。
removed?: item が削除された場合は true、それ以外の場合は false。

注意事項

このオブジェクトのオプション変更通知メソッドが呼び出され、さらにオプションが非ローカル オプションの場合は、 OptionListInterface.notify-option-children を呼び出して、この通知をこのオブジェクトのオプションの子に伝えます。

プログラミング注意事項

option-list パッケージでの内部使用を目的としています。

オーバーライド

通常はオーバーライドされません。