忍者ブログ
プログラミングとか日常とかの覚書っぽいなにか
×

[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。

最近はちょっとAdobe Flash Builderの体験版をインストールしてFlex AIRアプリを作っていたりします。とりあえずTwitterクライアントなどに取り組んでみています。

アプリ製作中にDataGridのセルにHTMLテキストを表示させる手順について調べましたので、メモ書き程度に。まぁ、HTMLテキストといっても簡単なタグしか使えないものですが、見栄えを整えるにはそれで十分かと。

DataGridで実際にセルに表示されている部分のコンポーネントはitemRendererで決定されるようです。DataGridで通常使用されているDataGridItemRendererの代わりに、HTML形式文字列を表示できるタイプのコンポーネントを作ってやればOKだろうと推測を立ててみました。

しかも、通常のDataGridItemRendererを調べてみるとTextFieldの派生ではありませんか!
ということは、何とかしてテキストをitemRendererの htmlText プロパティにセットしてやることができればうまくいくはずです。

ということで、試行錯誤を重ねて出来上がった DataGirdItemRenderer の派生クラスが以下。
package
{
import mx.controls.dataGridClasses.DataGridItemRenderer;

public class HtmlDataGridItemRenderer extends DataGridItemRenderer
{
override public function validateProperties():void
{
super.validateProperties();
if (listData) {
htmlText = listData.label;
}
}
}
}
validateProperties() をオーバーライドして htmlText をセットしてます。それだけです。
詳しい原理は知りませんがまぁその辺はキニシナイ。
(パッケージ名がないじゃないか!とか、その辺もキニシナイ。まぁ慣れないもので。)

で、実際にDataGridを作成する際に、このクラスを DataGridColumn の itemRenderer プロパティに設定するなり、  DataGrid の defaultDataGridItemRenderer (こちらはFlex 4.0の新しいものかしら。)に指定してやるなりして、あとは通常のテキストの代わりにHTML形式のテキストを渡せばよしということで。

ちなみに、この状態だと <a> タグでリンク先をブラウザで表示させたりとかイベントを発生させたりがうまく働かないようです。
調べてみたところ、上で作成した DataGridItemRenderer の selectable を true にすれば良いようです。
が、実際に試してみてちょっと私の目的には合わなかったのでそちらは却下。
ここでも詳しくは触れませんのであしからず。

拍手

PR


忍者ブログ [PR]
プロフィール
HN:
はむぱい
職業:
ソフト作ったりしてる人
Twitter
最新CM
[06/09 replica rolex oyster perpetual datejust]
[06/09 bracelets imitation cartier love]
[06/09 replica the oyster perpetual datejust]
[06/09 datejust rolex oyster perpetual]
[06/09 replica gold love bangle]
カレンダー
10 2017/11 12
S M T W T F S
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30
ブログ内検索
あ~いい漢字