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の高さや、幅に関する部分は明日に回します。