(クラス)
public Table
{inherits
Grid}
Graphic のコレクションを行と列に配置するためのコンテナ。
説明
プログラミング注意事項
例
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-prototype、
cell-prototype、
skip は、
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"のスタイル ルールを記述することによりスタイル化することが出来ます。
コンストラクタ public | {Table.default ...} |
非ローカル オプション public Table.cell-border-spec:#
BorderSpec
非ローカル オプション public Table.cell-border-width:
any
cell-margin: | テーブル セルの境界とその子スロット (テーブル セルがその子グラフィックを配置する場所) の間の距離を指定します。 |
非ローカル オプション public Table.cell-margin:
any
アクセサ public Table.column-count:
int
アクセサ public Table.graphical-children:{
Iterator-of Graphic}
ローカル オプション public Table.halign:
any
非ローカル オプション public Table.horizontal-line-color:
FillPattern
ローカル オプション public Table.horizontal-line-width:
any =0pt
ローカル オプション public Table.hstretch?:
bool =false
アクセサ public Table.ordered-children:{
Iterator-of Graphic}
アクセサ public Table.reverse-ordered-children:{
Iterator-of Graphic}
アクセサ public Table.row-count:
int
アクセサ public Table.style-element:
String
ローカル オプション public Table.valign:
any
非ローカル オプション public Table.vertical-line-color:
FillPattern
ローカル オプション public Table.vertical-line-width:
any =0pt
ローカル オプション public Table.vstretch?:
bool =false
プロパティ 継承 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
protected | {Table.add-from-init-args a:any}:void |
clear: | ボックスのグラフィカルな子を削除します。 |
public | {Table.clear}:void |
contains-point?: | 指定されたポイントで発生するイベントが、ターゲット ボックスと、そのいずれかのグラフィカルな子のどちらに関するものかを判断します。 |
public | {Table.delete-column column:any}:void |
public | {Table.delete-row row:any}:void |
draw: | このオブジェクトの可視表現を描画します。 |
public | {Table.get-range-as-selected-text}:void |
public | {Table.get-row row:any,create?:bool = false,return-null-if-missing?:bool = false }:#TableRow |
public | {Table.notify-option-children}:void |
public | {Table.paginate}:(PaginationState, PaginationQuality) |
protected | {Table.propagate-option-change}: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 メソッド 継承 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 メソッド 継承 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 メソッド 継承 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
(コンストラクタ)
public | {Table.default ...} |
(非ローカル オプション)
グラフィカル オブジェクトの境界の色またはパターン。
説明
境界色は、境界が存在する場合、つまり、オブジェクトの
border-width オプションを設定した場合にのみ適用されます。
任意の
FillPattern オブジェクトに
border-color、またはサポートしている
String に設定し、
FillPattern に自動変換します。
オブジェクトの
border-width は定義されているが
border-color が定義されていない場合、オブジェクトの境界はオブジェクトの
背景色を使ってペイントされます。オブジェクトの
背景色は、オブジェクトの
border-style オプションによっては境界が見えない場合もあります。
次の図は、グラフィカル オブジェクトの境界を青色で表示しています。
参照:
Graphic.background,
Graphic.border-width,
Graphic.border-style.
(非ローカル オプション)
Table オブジェクトのテーブル セルのボーダーの色またはパターン。
説明
セル ボーダーの色は、セル ボーダーが存在する場合、つまりテーブル セルの cell-border-width オプションが設定されている場合にのみ適用されます。
任意の FillPattern オブジェクトや、自動的に FillPattern に変換される、サポートされている String に cell-border-color を設定します。
テーブル セルの cell-border-width は定義されていて cell-border-color は定義されていない場合、ボーダーはテーブル セルの背景色を使用してペイントされます。テーブル セルの cell-border-style オプションによってはボーダーが見えなくなることもあります。
次は、テーブル セルのボーダーを青で表示しています。
(非ローカル オプション)
Table セルの BorderSpec を指定します。
説明
例
例:
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
}
}
}
| |
(非ローカル オプション)
この表のテーブル セル ボーダーの外観を指定します。
説明
有効値は次のとおりです。
- "none": 境界を描きません。境界領域は背景色で塗りつぶされます。
- "flat" :境界はセルの境界色で単純にペイントされます。border-style を指定しない場合、これが既定値です。
- "raised": 斜めに浮き上がって見えるように、セルの境界色より薄い色と濃い色を使って境界をペイントします。
- "sunken":斜めにへこんだ外観を作ります。
- "ridge": 浮き上がった境界でへこんだ境界を囲むように、境界領域を塗りつぶします。
- "groove":へこんだ境界で浮き上がった境界を囲むように、境界領域を塗りつぶします。
- "dash":破線の境界線を描くため、境界領域を塗りつぶします。
- "dot":点線の境界線を描くため、境界領域を塗りつぶします。
- "double":二重線の境界線を描くため、境界領域を塗りつぶします。
- "tiled": 境界領域を埋め、 タイル状の border-color FillPattern 表示を生成します。 Pixmap ベースの FillPattern で使用されます。
例
例:
次は、さまざまなテーブル セルのボーダー スタイルを青で表示しています (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
}
| |
注意事項
(非ローカル オプション)
public Table.cell-border-width:
any Table のテーブル セル ボーダーの幅を指定します。
説明
Distance、
PixelDistance、
EmDistance の値を指定します。既定値は 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 ピクセルに切り上げられます。
(非ローカル オプション)
public Table.cell-margin:
any テーブル セルの境界とその子スロット (テーブル セルがその子グラフィックを配置する場所) の間の距離を指定します。
説明
注意事項
cell-margin に代入する値には、
10pt (
10points)、
.5cm (
.5centimeters)、
0.3in (
0.3inches)、または
1px (
1pixel) などの明示的な距離単位を指定することをお勧めします。単位が指定されていない整数や浮動小数点数は、距離をポイント (
1pt = 1/72 インチ) で表していると見なされます。
Graphic.width プロパティや
Graphic.height プロパティと同様に、指定したマージンがピクセル サイズの正確な倍数にならない場合、ピクセル サイズに最も近い倍数に丸められます。ただし、ゼロより大きくても 1 ピクセルより小さいピクセル サイズは、常に 1 ピクセルに切り上げられます。
例
次にいくつかの異なるセル マージン サイズが青で表示されています。テーブル ボーダーは黒です。テーブル セル ボーダーは白です。
(アクセサ)
アクセサ public Table.column-count:
int Table 内の現在の列数を示します。
戻り値
オーバーライド
通常はオーバーライドされません。
(非ローカル オプション)
(非ローカル オプション)
このオブジェクトに関連付けられている 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 オプションでの変更をモニタリングするコードは、この可能性を考慮に入れ、この状況における望ましくない動作の実行を回避しなくてはなりません。
(アクセサ)
アクセサ public Table.graphical-children:{
Iterator-of Graphic}
SequenceBox のグラフィカルな子の反復子を返します。
注意事項
graphical-children を呼び出すときに、SequenceBox の子の追加や削除を同時に実行しないでください。実行すると、反復子が予期せぬ動作を行なう可能性があります。SequenceBox に対して子を追加または削除する場合、graphical-children を再度呼び出して新しい反復子を作成します。
(ローカル オプション)
Table 要素の水平方向の整列方法を指定します。
説明
このオプションは、
Table の列にある各オブジェクトの水平方向の配置を制御します。
Table 内の各列には、列内のオブジェクトを配置する際の基準となる垂直の配置軸があります。
Table 内の各セルに適用される
halign オプションの値では、セル内の
Graphic がこの軸を基準にして配置されるポイントを選択します。
halign オプションの許容値は次のとおりです。
- "left" Graphic の左端が配置軸に揃うように指定します。halign プロパティが指定されていない場合、これが既定の配置になります。
- "center" Graphic の中心線が配置軸に揃うように指定します。
- "right" Graphic の右端が配置軸に揃うように指定します。
- "origin" Graphic の起点が配置軸に揃うように指定します。
- 0 から 1 まで (それぞれを含む) の数字。配置ポイントの左側にあるそれぞれの子の幅の比率を指定します。つまり、"left" は 0 に相当し、"right" は 1 に相当します。
Table 全体、または
Table の個々の行、列、セルに
halign オプションを設定した場合にその影響を受ける
Table セルについて理解するには、『
Curl 開発者ガイド』の「
グラフィカル コンテナ」の章で Table に関するオプション検索の規則を参照してください。
(非ローカル オプション)
Table の行を区切る線の色またはパターン。
説明
(ローカル オプション)
public Table.horizontal-line-width:
any =0pt
Table の行と行の間に引く線の幅を指定します。
注意事項
(ローカル オプション)
public Table.hstretch?:
bool =false
(ローカル オプション)
表の境界線を引く場所を決定します。既定値は TableInternalBorders.none です。
注意事項
(アクセサ)
アクセサ public Table.ordered-children:{
Iterator-of Graphic}
子を順番に返す、この Box のグラフィカルな子の反復子。
説明
選択や検索、および制御のタブ順に使用されます。このメソッドの既定の実装は、
Box.graphical-children と同じです。Box のサブクラスで、グラフィカルな子の順序が
graphical-children の順序と異なる場合は、このメソッドをオーバーライドする必要があります。
(アクセサ)
アクセサ public Table.reverse-ordered-children:{
Iterator-of Graphic}
この Box のグラフィカルな子の反復子で、子を逆の順序で返します。これは、Box.ordered-children を反転するものです。
注意事項
既定の実装では、それぞれの子のポインタにメモリが割り当てられます。
オーバーライド
このメソッドはオーバーライドが必要とは限りません。メソッドの既定の実装では、
Box.ordered-children を反転します。ただし、既定の実装は少し効率が悪いので、このアクセッサをより効率的に実装できるサブクラスは適宜実装してください。
(アクセサ)
アクセサ public Table.row-count:
int Table 内の現在の行数を示します。
戻り値
オーバーライド
通常はオーバーライドされません。
(アクセサ)
アクセサ public Table.style-element:
String スタイリングの目的のための、この Visual の "要素" や "型" です。
説明
オーバーライド
Visual のサブクラスのスタイルが他のオブジェクトと異なる場合、このゲッターは適切な文字列を返すようにオーバーライドされる必要があります。 慣例では,この文字列はクラス名または、オブジェクトを生成するマークアップの名前です。
オーバーライドでは、空の文字列でないかぎり、self._style-elementを返さなければなりません。
導入:
バージョン 6.0
(ローカル オプション)
Table 要素の垂直方向の整列方法を指定します。
説明
このオプションは、
Table.halign オプションと同様に動作しますが、
Table の同じ行に含まれるオブジェクトの垂直方向の相対的な配置を制御します。
halign プロパティの
"left" と
"right" の値に相当する
valign の値は、それぞれ
"top"、
"bottom" です。既定値は
"origin" で、行に含まれるすべてのオブジェクトの垂直起点を揃えることを意味します。
(非ローカル オプション)
Table の列を区切る線の色またはパターン。
説明
(ローカル オプション)
public Table.vertical-line-width:
any =0pt
Table の列と列の間に引く線の幅を指定します。
注意事項
(ローカル オプション)
public Table.vstretch?:
bool =false
(メソッド)
Table にアイテムを追加します。
...: いくつかのキーワード引数を
Table.add に提供することができます。
- row=row-spec は、Table の挿入カーソルの行位置を row-spec で指定された行に設定します。row-spec は、表の行を指定する負でない整数であることが必要です (表の先頭行は 0 とされています)。row-spec が現在 Table にある行数よりも大きい場合、必要に応じて行が追加されます。
- columncol-spec は、挿入カーソルの新しい列位置を指定することを除き、row キーワードと同じように機能します。
- colspan=ncols は、g が拡張する列の数を指定します。c が g を追加する列である場合、g は、c から c+ncols-1 までのすべての列に広がることになります。colspan の既定値は 1 です。
- rowspan=nrows は、colspan に似ていますが、g が広がる列の数を制御します。
戻り値
説明
使用可能なオプションの数が多く、それに合わせて多数のケースを説明する必要があることから、
Table.add の動作の完全な説明はかなり複雑になります。しかし、この複雑な動作の目的は、単純な引数で
Table.add を呼び出して、即座に適正であると判断できる方法で
Table に要素を配置することにあります。
このメソッドが呼び出されたときに
Table に追加されるオブジェクトは、引数
g をいくつかのキーワード引数に関連して調べて決定されます。
g が
TableContentPrototype で、
colspan キーワード引数と
rowspan キーワード引数がどちらも指定されていない場合、追加されるオブジェクトは、提供される
TableContentPrototype の種類に基づいてセル、行、列、なし、のいずれかになります。これらのケースについての詳細情報は、それぞれ
を参照してください。
g が
TableContentPrototype ではなく、
colspan キーワード引数または
rowspan キーワード引数のいずれかが指定されている場合、
g は
Graphic にキャストされて (すでに存在する場合を除く) 結果の
Graphic が
Table に追加されます。
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 に追加されるアイテムの型に応じて、挿入カーソルに異なる影響を与えます。次の場合が可能です。
- 追加されるアイテムが、cell-prototype プロシージャにより返されるセル プロトタイプの場合、セルの左上隅が挿入カーソルにより指定された (row, column) の位置になるように追加されます。挿入列はセル プロトタイプの colspan 値の分だけ増加されます (既定では 1 です)。
- 追加されるアイテムが行プロトタイプで、挿入列が現在 0 でない値である場合、挿入列はまず 0 に設定され、挿入行は 1 増加します。行の要素は結果の挿入行に 1 つずつ挿入されます。最終的に挿入列は 0 に設定し直され、挿入行は 1 増加します。その結果、挿入カーソルの最終値は、最初の行要素が挿入された (row, column) 位置の直ぐ下の (row, column) 位置を指すことになります。要素が 1 よりも大きい rowspan を持つ場合、この位置は最初の行要素の上に重なることに注意してください。
- 追加されるアイテムが列プロトタイプの場合、行と列の役割が逆になっていることを除き、操作は行プロトタイプの場合と同じように進められます。つまり、挿入行が最初 0 ではない場合は 0 に設定され、挿入列が 1 増加します。続いて列の要素が結果の操作列に挿入されて、挿入行が 0 に設定し直され、挿入列が 1 増加します。
- 追加されるアイテムが skip プロトタイプである場合、挿入カーソルへの影響は、スキップ カウントに等しい colspan を指定してセル プロトタイプを追加する場合と同じです。ただし、skip プロトタイプでは、実際に Table に追加される要素はありません。
- 追加されるアイテムが Graphic である場合、または追加される前に Graphic にキャストされる場合、追加操作の影響は、Graphic を含み rowspan 値と colspan 値が指定されているセル プロトタイプを追加する場合と同じです。
上記で説明された処理の間に追加される要素が、すでに表内に含まれる要素に重なる場合は、既存の要素が表から削除されます。これは、新しく追加される要素の行と列が、すでに追加されている要素の行や列と同じである場合、異なる
(row, column) 位置の要素がそれらの
colspan や
rowspan の値指定が原因で重なる場合の両方に適用されます。
例
表挿入カーソルがどのように更新されるか心配することなく、簡単にこのメソッドを使用するには、乗法テーブルを作成する次の例で示されるように、各
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 自体の追加アクションを呼び出し、キーワード引数が指定されている場合はそのキーワード引数とともに渡します。
(メソッド)
protected | {Table.add-from-init-args a:any}:void |
この Visual のコンストラクタに渡されるオブジェクトを Visual の内容に追加します。
プログラミング注意事項
オーバーライド
このメソッドの既定の実装では、
Visual.add が呼び出されるだけです。サブクラスではこのメソッドをオーバーライドし、コンストラクタを使ってこの
Visual に内容を追加する際の特別な処理を指定してください。
(メソッド)
public | {Table.clear}:void |
(メソッド)
このボックスの 2 つの子のグラフィカルな順序を検証します。
戻り値
b と関連する
a の位置に対応する
GraphicalOrder。
a か
b のどちらかが
self のグラフィックの子で無い場合、
GraphicalOrder.equal が返されます。後者の場合、
a が
b と同じでない時は、少なくとも
a か
b のうち一つはこのボックスの子ではありません。
オーバーライド
このメソッドはオーバーライドが必要とは限りません。既定の実装では、
Box.ordered-children で指定された順序に従って、子の順序を比較します。ただし、既定の実装は (子の総数に比例するので) 効率が悪い場合があります。サブクラスが多数の子を持つことが予想され、このメソッドのより効率的な実装ができる場合は、適宜実装してください。
(メソッド)
指定されたポイントで発生するイベントが、ターゲット ボックスと、そのいずれかのグラフィカルな子のどちらに関するものかを判断します。
x, y: ポイントの座標。ターゲット オブジェクトの起点を基準として表現します。
プログラミング注意事項
このメソッドは、通常は、ポインタ イベントをグラフィカルな子に転送するかどうかを決定するためなど、主として内部目的で用意されています。
注意事項
このメソッドは、ポイントがグラフィカルな子によって占められる領域内 (境界を含む) にある場合は、グラフィカルな子が以下のプロパティを持っていると判断して true を返します。
一般に、ボックス内のターゲット ポイントがボックスの可視部分として描画されていない場合、このメソッドは false を返します。
TextFlowBox に選択可能なテキストが含まれている場合 (つまりプロパティ
text-selectable? が値
true である場合) は、ポイントが境界ボックス内にある限り、メソッドは true を返します。これは、その領域内の任意のイベントが、ボックス内のテキスト選択に関連付けられる可能性があるからです。それ以外の場合は、
TextFlowBox は前述したように、他のボックスと同じように扱われます。
(メソッド)
public | {Table.delete-column column:any}:void |
Tableから列を削除します。
column:
Table.add の
column キーワードにより受け入れられる形式を使用して、削除する列を指定します。
注意事項
削除される列に要素の左上隅が含まれる場合、これらはすべて表から削除されます。列を削除すると列番号と列のマッピングが変わり、削除の後で
Table 内の列は 0 から順番に番号が付け直されます。
オーバーライド
通常はオーバーライドされません。
(メソッド)
public | {Table.delete-row row:any}:void |
Table から行を削除します。
row:
Table.add の
row キーワードにより受け入れられる形式を使用して、削除する行を指定します。
注意事項
削除される行に表の要素の左上隅が含まれる場合、これらはすべて表から削除されます。行を削除すると行番号と行のマッピングが変わり、削除の後で
Table 内の行は 0 から順番に番号が付け直されます。
オーバーライド
通常はオーバーライドされません。
(メソッド)
このオブジェクトの可視表現を描画します。
オーバーライド
(メソッド)
Table から、指定された TableColumn を返します。
create?, return-null-if-missing?: 指定された列が存在しない場合の動作を指定します。
return-null-if-missing? が true の場合、null が返されます。それ以外の場合、
create? が true の場合、
TableColumn が作成されて返されます。それ以外の場合、エラーが生じます。
戻り値
プログラミング注意事項
このメソッドは主に、
TableColumn を取得してその列のプロパティを設定または削除するために使用されます。
オーバーライド
通常はオーバーライドされません。
(メソッド)
Table 内の指定された要素を返します。
row:
Table.add の
row キーワードにより受け入れられる形式を使用した、要素を含む行の指定。
column:
Table.add の
column キーワードにより受け入れられる形式を使用した、要素を含む列の指定。
戻り値
プログラミング注意事項
オーバーライド
通常はオーバーライドされません。
(メソッド)
(メソッド)
(メソッド)
Table 内で指定要素の左上隅に関連付けられている TableRow を返します。
戻り値
オーバーライド
通常はオーバーライドされません。
(メソッド)
public | {Table.get-range-as-selected-text}:void |
start-bound と end-bound 間の、このグラフィック内に含まれる選択したテキストを取得します。
start-bound: グラフィック内の開始ポイントを区切る
GuiMark。null の場合、開始ポイントはグラフィックの先頭の端と見なされます。
end-bound: グラフィック内の終了ポイントを区切る
GuiMark。null の場合、終了ポイントは、グラフィックの最後の端と見なされます。
オーバーライド
通常コンテナは再帰的に呼び出しを実行して、適切な区切り文字を挿入します。その他のサブクラスは、直接テキストを提供します。
(メソッド)
public | {Table.get-row row:any,create?:bool = false,return-null-if-missing?:bool = false }:#TableRow |
Table から、指定された TableRow を返します。
create?, return-null-if-missing?: 指定された行が存在しない場合の動作を指定します。
return-null-if-missing? が true の場合、null が返されます。それ以外の場合、
create? が true の場合、
TableRow が作成されて返されます。それ以外の場合、エラーが生じます。
戻り値
プログラミング注意事項
このメソッドは主に、
TableRow を取得してその行のプロパティを設定または削除するために使用されます。
オーバーライド
通常はオーバーライドされません。
(メソッド)
group で識別される TableGroup に 1 つ以上の列を割り当てます。
...: 列インデックスの一覧。
(メソッド)
group で識別される TableGroup に 1 つ以上の行を割り当てます。
...: 行インデックスの一覧。
(メソッド)
列を Table に挿入します。
column: 新しい列が挿入されたときの列番号。たとえば、
2 を指定した場合、挿入された列は
Table の 3 番目の列になり、その列の右にあるすべての列の番号が変更されます (列は 0 から順番に、左から右へと番号が付けられます)。有効な値は、
Table.add の
column キーワードにより受け入れられる任意の形式です。
column が
"last" の場合、新しい列は、
Table に存在する列の最後に配置されます。
戻り値
オーバーライド
通常はオーバーライドされません。
(メソッド)
行を Table に挿入します。
row: 新しい行が挿入されたときの行番号。たとえば、
2 を指定した場合、挿入された行は
Table の 3 番目の行になり、それより下にあるすべての行の番号が変更されます (行は 0 から順番に、上から下へ番号が付けられます)。有効な値は、
Table.add の
row キーワードにより受け入れられる任意の形式です。
row が
"last" の場合、新しい行は、
Table に存在する行の一番下に配置されます。
戻り値
オーバーライド
通常はオーバーライドされません。
例
次の例では、
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
} | |
(メソッド)
SequenceBox の子を削除します。
プログラミング注意事項
オーバーライド
子が
SequenceBox から切り離されたときにサブクラスが別の記録処理を実行する場合、
SequenceBox のサブクラスでオーバーライドできます。
(メソッド)
(メソッド)
public | {Table.notify-option-children}:void |
このオブジェクトのオプションの子にオプションが変更されたことを通知します。
item: 追加または削除されたバインディング オプション。
removed?: item が削除された場合は true、それ以外の場合は false。
オーバーライド
(メソッド)
public | {Table.paginate}:(PaginationState, PaginationQuality) |
グラフィックにパジネーションを適用します。
page-height: グラフィックをページにレンダリングするのに有効な高さ。これには、ボーダーとマージンが占めるスペースは含まれません。
next-page-height: このグラフィックが次のページに移動される場合に、このグラフィックをパジネートするのに有効な高さ。
戻り値
プログラミング注意事項
オーバーライド
Graphic 自身が何らかの具体的な方法でページ間でパジネーションを実行するようにしたい場合は、このメソッドをオーバーライドします。
このメソッドをオーバーライドするときは、以下の規則に従う必要があります。
page-height が負または無視できるほどである場合は、返されたパジネーション状態がオブジェクトの現在のパジネーション状態であり、返されたパジネーションの質が PaginationQuality.clipped-outside でなければなりません。
Box などのコンテナ (パジネーションによってその子をページ間で分割しないようにする場合)。このようなコンテナは、現行ページに子を収容できない場合は、次の 2 つのステップに従う必要があります。
2. 子にパジネーションを依頼し、返された
PaginationQuality が
PaginationQuality.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
}
}
}
注意事項
(メソッド)
指定された点 (x, y) を覆う BasicBox の子をピックアップします。
x, y: ポイントの座標です。
戻り値
この点を覆う子。該当する子がない場合は NULL を返します。
プログラミング注意事項
注意事項
このメソッドの実装では、x と y の最新の値を、これらの値について返された答えと合わせてキャッシュすることが推奨されます。このメソッドはたいてい同じ入力で連続して複数回呼び出されるからです。
オーバーライド
このメソッドは、適切な戻り値を計算するコードを持つ、
BasicBox の具象サブクラスでオーバーライドする必要があります。
(メソッド)
protected | {Table.propagate-option-change}:void |
このオブジェクト、および該当する場合はそのオプションの子孫にオプションが変更されたことを通知します。
item: 追加または削除されたバインディング オプション。
removed?: item が削除された場合は true、それ以外の場合は false。
注意事項
プログラミング注意事項
option-list パッケージでの内部使用を目的としています。
オーバーライド
通常はオーバーライドされません。