Archive for 2009/6/10
なにやら意味のわからないタイトルになっていますが、
なんとなく書いている flexのmxmlコンポーネント。
<mx:Canvas> <mx:Label /> </mx:Canvas>
なんて書いていたと思ったら、
<mx:DataGrid>
<mx:columns>
<mx:DataGridColumn />
</mx:columns>
</mx:DataGrid>
のように書いていた。
columnsなんてコンポーネントはないはず。
ここでcolumnsなんて書かなくても、mx:DataGridColumnでいいのになーと思っていた。
また、タグの下に書いたものはその親のaddChildによって追加されると思っていた。
しかし、それではいろいろとつじつまがあわないのも分かっていた。
なんとなーく、flex frameworkのソースをぶらぶらと気になる部分を見ていたら気がつきました。
単なるDataGridのsetterでcolumnsを設定していたという事でした。
[AS]
[Bindable("columnsChanged")]
[Inspectable(arrayType="mx.controls.dataGridClasses.DataGridColumn")]
override public function set columns(value:Array):void{
}
[/AS]
という事なんですね。
だから、columnsの子はDataGridColumnになり、Array型として登録していたということでした。
だから、addChildじゃないんだーーー。
ルールといえばルールだが、エンジニアとしてはソースでわかると安心できますね。
頭での理解がたりなくても、肌の理解度がふかまりますよね。
いやー、この辺もわかった上でドキュメントとか見れば書いてあるんでしょうね。
わからないと、書いてあってもそれが読めないんですよね。
改めて、mxmlの基本を勉強しました。
これで、もう少しは独自コンポーネントを作りやすくなりました。
今まで、CheckBoxや、アイコンを表示する方法を述べてきたが、デフォルトのアイコンを表示しない方法を紹介します。
アイコンを表示しない方法もそうだが、nullを参照させるってこともできるんだ。。。。とちょっと感心してしまった。
<mx:Tree id="categoryTree" width="100%" minWidth="200" height="100%"
defaultLeafIcon="{null}" folderClosedIcon="{null}" folderOpenIcon="{null}" >
以上のように、
- defaultLeafIcon
- folderClosedIcon
- folderOpenIcon
にnullを設定すればいい。
Tree関連で、フォルダをソースの中で folderと言ってみたり、 branchと言ってみたり、自分もプログラムを作っていると、表記ゆれが発生してしまう。結構、作った時期が違うことをがほとんどだが、たまーに、わざと表記を変えることもある。
(自分も、その理由を忘れてしまう事があるが・・・)
余談だが・・・


