CellRenderer Part.2
機能に引継ぎCellRendererの解説です。
01 import mx.core.UIComponent 02 import mx.controls.Label 03 /** 04 * テスト用セルレンダラー 05 */ 06 class TestCellRenderer extends UIComponent 07 { 08 var priceLabel :Label; 09 var taniLabel; 10 var listOwner:MovieClip; 11 var getCellIndex:Function; 12 var getDataLabel:Function; 13 function setValue(str:String, item:Object, sel:Boolean):Void 14 { 15 priceLabel.visible = false; 16 taniLabel.visible = false; 17 if (item==undefined){ 18 return; 19 } 20 priceLabel.text =item["getDataLabel()"]; 21 priceLabel.visible = true; 22 taniLabel.visible = true; 23 } 24 }
2行目は、ソース上UIコンポーネントのLabelを使用しているため指定してます。
8,9行目は、ムービークリップ上でインスタンス名を指定した、UIコンポーネントやムービークリップなどのオブジェクトを指定します。操作をしないものについては、指定は不要です。
10〜12行目はお決まりで入れています。
13〜23行目が値を画面に常時している部分です。
15,16行目は、画面上の操作するオブジェクトを非表示にしています。あとで、値を設定した後で、21,22行目で表示しています。
17〜19行目は、itemがundefinedだった場合に、値を設定せずに処理を抜けるようにしています。これは、DataGridから呼ばれる際に、行の高さ分、(データが1行しかなくても、画面上3行表示するスペースがあると、3回)このFunctionが呼ばれるためです。その際には、引数はundefinedのため、このように記述してあります。
20行目は、画面に値を設定している部分です。
今回は、0000円のようにセルに表示できるCellRendererで、金額部分(0000の部分)は、priceLabelというインスタンス名。
単位の部分(円の部分)は、taniLabelというインスタンス名を設定しています。文章が長くなってきたので、Cellの高さや、幅に関する部分は明日に回します。