【ご質問】
グリッド内のデータをリンクテキスト(ハイパーリンク)状態で表示することは可能でしょうか。
【回答】
グリッド内のデータをハイパーリンク表示にする方法として、
StandardRecordGridCellを使用してRecordGridのセルをカスタマイズする方法が考えられます。
詳細は以下のサンプルをご参照ください。
{curl 6.0,7.0,8.0 applet} {curl-file-attributes character-encoding = “shift-jis”}
{define-class public NewCell {inherits StandardRecordGridCell}
field private frame:Frame = {Frame width = {make-elastic}, height = {make-elastic}, ||リンクを含むセルの為、active-traversal-containerをnullにします。 active-traversal-container = null } {constructor public {default} {construct-super} {self.add-internal self.frame} }
{method public open {refresh-data}:void ||このセルの現在のデータを取得します。 let (data:String, valid?:bool) = {self.get-formatted-data} ||Frameにハイパーリンクとして設定したデータをaddします。 {self.frame.add {link href = {url data}, {value data}}, replace? = true} } }
{let people:RecordSet = {RecordSet {RecordFields {RecordField “First”, domain = String}, {RecordField “Last”, domain = String}, {RecordField “Age”, domain = int} }, {RecordData First = “http://www.curl.com”, Last = “Smith”, Age = 25}, {RecordData First = “http://www.curlap.com”, Last = “Mary”, Age = 25} } }
{value {RecordGrid record-source = people, height = 3cm, ||フィールド名:Firstの列のセルをNewCellに設定します。 {RecordGridColumn “First”, width = 3.7cm, cell-spec = NewCell} } }
|
RecordGridCell内にリンクを置く場合、独立したActiveTraversalContainerを使用します。
そのため、active-traversal-containerプロパティを
StandardActiveTraversalContainerのインスタンス、もしくはnullに設定する必要があります。
(サンプルではFrameにlinkテキストプロシージャが含まれているため、
Frameの引数に「active-traversal-container = null」を渡しています。)