검색결과 리스트
Flex3.0&AS3에 해당되는 글 26건
- 2010.12.20 IME MODE
- 2009.07.12 flex3] ItemRenderer 이해 및 활용
- 2009.07.12 flex3] custom tooltip
- 2009.02.13 advanceddatagrid 에서 체크박스 랜더러 사용하기
- 2009.02.12 플렉스 관련 사이트
- 2009.02.10 Datagrid 안에서 itemrenderer활용 샘플
- 2009.02.03 itemEditor 이해와 커스텀 itemEditor 만들어보기
- 2009.02.02 ListBase기반 콤포넌트 이해
- 2009.01.30 AdvancedDataGrid row 속성 style 변경하기
- 2009.01.30 AdvancedDatagrid] Itemrenderer 활용
글
IME MODE
<mx:TextInput imeMode="KOREAN" />
<mx:TextInput imeMode="ALPHANUMERIC_HALF" />
imeMode | property |
imeMode:String
[read-write]
IME (입력 Methods 에디터)의 모드를 지정합니다. IME 를 사용하는 것에 의해, 유저는 중국어, 일본어, 및 한국어의 텍스트를 입력할 수 있습니다. Flex 에서는, 컨트롤에 포커스가 놓여졌을 때에, IME 가 지정된 모드로 설정해, 컨트롤로부터 포커스가 떨어졌을 때에, 원의 모드에 되돌립니다.
flash.system.IMEConversionMode 클래스에서, 이 property의 유효한 값의 정수를 정의합니다. IME 를 전혀 지정하지 않는 경우는,null
를 지정합니다.
디폴트치null
.
ALPHANUMERIC_FULL |
public static const ALPHANUMERIC_FULL:String = "ALPHANUMERIC_FULL"
string "ALPHANUMERIC_FULL"
. IME.conversionMode
property로 사용합니다. 이 정수는, 모든 IME 로 사용합니다. 문장구조법 IMEConversionMode.ALPHANUMERIC_FULL
를 사용합니다.
See also
ALPHANUMERIC_HALF |
public static const ALPHANUMERIC_HALF:String = "ALPHANUMERIC_HALF"
string "ALPHANUMERIC_HALF"
. IME.conversionMode
property로 사용합니다. 이 정수는, 모든 IME 로 사용합니다. 문장구조법 IMEConversionMode.ALPHANUMERIC_HALF
를 사용합니다.
See also
CHINESE |
public static const CHINESE:String = "CHINESE"
string "CHINESE"
. IME.conversionMode
property로 사용합니다. 이 정수는, 중공에서 정식으로 쓰는 약자체?중국어 IME 와 번체자 중국어 IME 로 사용합니다. 문장구조법 IMEConversionMode.CHINESE
를 사용합니다.
See also
JAPANESE_HIRAGANA |
public static const JAPANESE_HIRAGANA:String = "JAPANESE_HIRAGANA"
string "JAPANESE_HIRAGANA"
. IME.conversionMode
property로 사용합니다. 이 정수는, 일본어 IME 로 사용합니다. 문장구조법 IMEConversionMode.JAPANESE_HIRAGANA
를 사용합니다.
See also
JAPANESE_KATAKANA_FULL |
public static const JAPANESE_KATAKANA_FULL:String = "JAPANESE_KATAKANA_FULL"
string "JAPANESE_KATAKANA_FULL"
. IME.conversionMode
property로 사용합니다. 이 정수는, 일본어 IME 로 사용합니다. 문장구조법 IMEConversionMode.JAPANESE_KATAKANA_FULL
를 사용합니다.
See also
JAPANESE_KATAKANA_HALF |
public static const JAPANESE_KATAKANA_HALF:String = "JAPANESE_KATAKANA_HALF"
string "JAPANESE_KATAKANA_HALF"
. IME.conversionMode
property로 사용합니다. 이 정수는, 일본어 IME 로 사용합니다. 문장구조법 IMEConversionMode.JAPANESE_KATAKANA_HALF
를 사용합니다.
See also
KOREAN |
public static const KOREAN:String = "KOREAN"
string "KOREAN"
. IME.conversionMode
property로 사용합니다. 이 정수는, 한국어 IME 로 사용합니다. 문장구조법 IMEConversionMode.KOREAN
를 사용합니다.
See also
UNKNOWN | 정수 |
public static const UNKNOWN:String = "UNKNOWN"
string "UNKNOWN"
. IME.conversionMode
property의 호출에 의해 돌려주어집니다. 이 값은 설정하지 못하고, 플레이어가 현재 액티브한 IME 를 식별할 수 없는 경우에게만 돌려주어집니다. 문장구조법 IMEConversionMode.UNKNOWN
를 사용합니다.
See also
설정
트랙백
댓글
글
flex3] ItemRenderer 이해 및 활용
private var _data:Object;
[Bindable("dataChange")]
public function get data():Object{
return _data;
}
public function set data(value:Object):void{
_data = value
dispatchEvent(new FlexEvent(FlexEvent.DATA_CHANGE));
}
IDropInListItemRenderer 인터페이스 상속한 ItemRenderer 클래스는 listData속성을 받을수있다.
[Bindable("dataChange")]
public function get listData():BaseListData{
return _listData;
}
public function set listData(value:BaseListData):void{
_listData = value;
dispatchEvent(new FlexEvent(FlexEvent.DATA_CHANGE));
}
* FLEX 메뉴얼 참고
ItemRenderer컴포넌트 작성시 Container클래스 기반으로설계하는것은 IDataRenderer인터페이스를 구현하였기 때문에
data속성을 사용할수있다.
MyItemRenderer.mxml // 아이템렌더러 컴포넌트
<?xml version="1.0" encoding="utf-8"?>
<mx:Container xmlns:mx="http://www.adobe.com/2006/mxml"
width="110" height="200"
implements="mx.core.IDataRenderer"
>
<mx:Script>
<![CDATA[
import mx.events.FlexEvent;
private var _data:Object;
[Bindable("dataChange")]
override public function get data():Object{
return _data;
}
override public function set data(value:Object):void{
super.data = value;
_data = value;
dispatchEvent(new FlexEvent(FlexEvent.DATA_CHANGE));
}
]]>
</mx:Script>
<mx:Label text="{data.label}:{data.index}" y="0" width="120" height="20" fontSize="12"/>
<mx:SWFLoader id="sLoader" y="20" width="110" height="160" source="{data.url1}"/>
</mx:Container>
main.mxml
<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml"
layout="vertical">
<mx:Script>
<![CDATA[
[Bindable]
[Embed(source='asserts/17.gif')]
private var m1:Class;
[Bindable][Embed(source="asserts/18.gif")]
private var m2:Class;
[Bindable][Embed(source="asserts/19.gif")]
private var m3:Class;
private function AutoIndex(m:ArrayCollection):ArrayCollection{
var mLen:Number = m.length;
for(var i:Number=0; i<mLen;++i){
m[i].index = i;
}
return m;
}
]]>
</mx:Script>
<mx:ArrayCollection id="dpd">
<mx:source>
<mx:Object label="오만과 편견" icon="{m1}" url1="http://imgmovie.naver.com/mdi/mit500/0447/D4728-00.jpg" />
<mx:Object label="캐리비안의 해적" icon="{m2}" url1="http://imgmovie.naver.com/mdi/mit500/0436/D3679-01.jpg"/>
<mx:Object label="러브 액츄얼리" icon="{m3}" url1="http://imgmovie.naver.com/mdi/mit500/0368/C6843-00.jpg"/>
</mx:source>
</mx:ArrayCollection>
width="160" itemRenderer="MyItemRenderer" rowCount="2"/>
설정
트랙백
댓글
글
flex3] custom tooltip
사용자정의 툴팁
<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="vertical">
<mx:Script>
<![CDATA[
import mx.events.ToolTipEvent;
import mx.events.ListEvent;
import mx.collections.IList;
import mx.controls.Alert;
import mx.managers.DragManager;
import mx.events.DragEvent;
[Bindable]
[Embed(source='asserts/17.gif')]
private var m1:Class;
[Bindable][Embed(source="asserts/18.gif")]
private var m2:Class;
[Bindable][Embed(source="asserts/19.gif")]
private var m3:Class;
private var mTipString:String;
private function fnRollOut(event:ListEvent):void
{
mTipString = "";
event.target.toolTip = mTipString;
event.target.removeEventListener(ToolTipEvent.TOOL_TIP_CREATE,createCustomTip);
}
private function fnRollOver(event:ListEvent):void {
event.target.addEventListener(ToolTipEvent.TOOL_TIP_CREATE,createCustomTip);
// 사용자 정의형 툴팁을 적용하기 위한 장치
mTipString = event.itemRenderer.data.toolStr; // 툴팁 문구를 변수에 저장한다.(item정보 얻어냄)
event.target.toolTip = mTipString ;
}
private function createCustomTip(event:ToolTipEvent):void {
var ptt:PanelToolTip = new PanelToolTip(); //사용자 정의형 퉅팁 객체 생성
ptt.title = "사용자 정의 툴팁";
ptt.text= mTipString; // 툴팁 문자열은 전송
event.toolTip = ptt; //사용자 정의형 툴팁 객체로 지정
}
]]>
</mx:Script>
<mx:Style source="css/flex_css.css"/>
<mx:ArrayCollection id="dpd">
<mx:source>
<mx:Object label="label1" data="data1" icon="{m1}" toolStr="Elara ToolTip1"/>
<mx:Object label="label2" data="data1" icon="{m2}" toolStr="Elara ToolTip2"/>
<mx:Object label="label3" data="data1" icon="{m3}" toolStr="Elara ToolTip3"/>
</mx:source>
</mx:ArrayCollection>
<mx:List id="lData" dataProvider="{dpd}" width="240" height="114"
dragEnabled="true" dropEnabled="true"
itemRollOver="fnRollOver(event)"
itemRollOut="fnRollOut(event)"
/>
<mx:Label text="Selected label : {lData.selectedItem.label}"/>
<mx:Label text="Selected data : {lData.selectedItem.data}"/>
<mx:Image source="{lData.selectedItem.icon}"/>
</mx:Application>
설정
트랙백
댓글
글
advanceddatagrid 에서 체크박스 랜더러 사용하기
datagrid 컬럼에 렌더러와 rendererIsEditor에 true으로 설정후에 랜더러 설정해주면 정상적으로 동작한다.
데이타 그리드안에 체크박스 넣을시 스크롤시에 체크박스가 비정상적으로 체크되는 현상이 발생한다.
데이타 그리드의 row인덱스값에 따라서 해당위치에 표시가 되는현상이기때문에 이런 부분을 예방하기 위해서는
체크여부와 체크박스의 위치를 기억할수있는 label을 만들어서 편법으로 만들어주었다.
이 선택여부와 label 번호를 기억(저장)되고 있는 부분이 있어야 하는데 db로부터 데이타를 받아온후에 가상으로
아래처럼 필드를 추가해주었다.
for(var i:int=0; i<main_dataList.length; i++)
{
main_dataList[i].IsChecked = false;
main_dataList[i].No = i;
}
아래처럼 for문돌면서 check여부를 확인해서 체크된녀석들만 뭔가 수행하고자하는 작업을 넣어주면 될듯함.
for(var i:int=0; i<main_dataList.length; i++)
{
if(main_dataList[i].IsChecked)
trace(main_dataList[i].PPE_CONTENT+' : '+main_dataList[i].No+' : '+main_dataList[i].IsChecked);
}
datagrid 일부..
<mx:DataGridColumn itemRenderer="MASTER.SWF.CheckboxRenderer" rendererIsEditor="true" />
CheckboxRenderer.mxml 렌더러파일
<?xml version="1.0" encoding="utf-8"?>
<mx:HBox xmlns:mx="http://www.adobe.com/2006/mxml" horizontalAlign="center" implements="mx.controls.listClasses.IDropInListItemRenderer">
<mx:Script>
<![CDATA[
import mx.controls.Alert;
import mx.controls.advancedDataGridClasses.AdvancedDataGridListData;
import Dsic.Controls.DsDataGrid;
import mx.controls.DataGrid;
import mx.controls.dataGridClasses.DataGridListData;
import mx.controls.listClasses.BaseListData;
private var _listData:BaseListData;
public function get listData():BaseListData {
return _listData;
}
public function set listData( value:BaseListData ):void {
_listData = value;
}
private function changeCB(evt:MouseEvent):void {
var myListData:AdvancedDataGridListData = evt.target.parentDocument.listData;
var myDG:DsDataGrid = DsDataGrid(myListData.owner);
myDG.document.main_dataList[Number(no.text)].No = no.text;
myDG.document.main_dataList[Number(no.text)].IsChecked =!data.IsChecked;
}
]]>
</mx:Script>
<mx:Text id="no" text="{data.No}" visible="true" width="0"/>
<mx:CheckBox id="cb" selected="{data.IsChecked}" click="changeCB(event)"/>
</mx:HBox>
설정
트랙백
댓글
글
플렉스 관련 사이트
설정
트랙백
댓글
글
Datagrid 안에서 itemrenderer활용 샘플
<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" xmlns:local="*"
width="450" height="370" verticalScrollPolicy="off" horizontalScrollPolicy="off"
backgroundColor="#FFFFFF">
<mx:Script>
<![CDATA[
import comp.MultiObject;
import mx.collections.ArrayCollection;
[Bindable]
public var initDG:ArrayCollection = new ArrayCollection([
new MultiObject(1, 'Test1', 1, false),
new MultiObject(2, 'Test2', 2, false),
new MultiObject(3, 'Test3', 3, false),
new MultiObject(4, 'Test4', 4, false),
new MultiObject(5, 'Test5', 5, false),
new MultiObject(6, 'Test6', 6, false),
new MultiObject(7, 'Test7', 7, false),
new MultiObject(8, 'Test8', 8, false),
new MultiObject(9, 'Test9', 9, false),
new MultiObject(10, 'Test10', 10, true),
new MultiObject(11, 'Test11', 11, false),
new MultiObject(12, 'Test12', 12, false),
new MultiObject(13, 'Test13', 13, false),
new MultiObject(14, 'Test14', 14, false),
new MultiObject(15, 'Test15', 15, false),
new MultiObject(16, 'Test16', 16, false),
new MultiObject(17, 'Test17', 17, false),
new MultiObject(18, 'Test18', 18, false),
new MultiObject(19, 'Test19', 19, false),
new MultiObject(20, 'Test20', 20, true)
]);
[Bindable] public var isEditable:Boolean = false;
[Bindable] public var totalData:String = "Total : ";
[Bindable] public var test:String = "test: ";
private function activateRadio():void {
isEditable = true;
}
private function deActivateRadio():void {
isEditable = false;
}
private var flag:Boolean = false;
public function checkAll():void {
if(flag) {
flag = false;
} else {
flag = true;
}
for(var idx:uint=0; idx<initDG.length; idx++) {
initDG[idx] = new MultiObject(initDG[idx].No, initDG[idx].Name, initDG[idx].CheckNum, flag);
}
}
]]>
</mx:Script>
<mx:DataGrid id="myGrid" dataProvider="{initDG}" headerHeight="50" variableRowHeight="false"
editable="true" width="450" height="300" >
<mx:columns>
<mx:DataGridColumn headerText="No" dataField="No" width="30"/>
<mx:DataGridColumn headerText="Name" dataField="Name"/>
<mx:DataGridColumn headerText="IsChecked" dataField="IsChecked" editable="true"/>
<mx:DataGridColumn headerText="Radio IR" dataField="IsChecked" editable="false">
<mx:itemRenderer>
<mx:Component>
<mx:HBox horizontalAlign="center" implements="mx.controls.listClasses.IDropInListItemRenderer">
<mx:Script>
<![CDATA[
import mx.controls.Alert;
import comp.MultiObject;
import mx.controls.DataGrid;
import mx.controls.dataGridClasses.DataGridListData;
import mx.controls.listClasses.BaseListData;
private var _listData:BaseListData;
public function get listData():BaseListData {
return _listData;
}
public function set listData( value:BaseListData ):void {
_listData = value;
}
private function changeRDO(evt:MouseEvent):void {
var myListData:DataGridListData = evt.target.parentDocument.listData;
var myDG:DataGrid = DataGrid(myListData.owner);
var idx:Number = Number(no.text)-1;
Alert.show(myDG.document.test);
for(var i:uint=0; i<myDG.document.initDG.length; i++) {
if(i == idx) {
myDG.document.initDG[i] = new MultiObject(myDG.document.initDG[i].No, myDG.document.initDG[i].Name,
myDG.document.initDG[i].CheckNum, true);
}else{
myDG.document.initDG[i] = new MultiObject(myDG.document.initDG[i].No, myDG.document.initDG[i].Name,
myDG.document.initDG[i].CheckNum, false);
}
}
}
]]>
</mx:Script>
<mx:Text id="no" text="{data.No}" visible="false" width="0"/>
<mx:RadioButton id="rdo" selected="{data.IsChecked}" click="changeRDO(event)"/>
</mx:HBox>
</mx:Component>
</mx:itemRenderer>
</mx:DataGridColumn>
<mx:DataGridColumn dataField="IsChecked" headerText="itemEditor" editorDataField="cbSelected">
<mx:itemEditor>
<mx:Component>
<mx:VBox backgroundColor="yellow" implements="mx.controls.listClasses.IDropInListItemRenderer">
<mx:Script>
<![CDATA[
import mx.events.FlexEvent;
import comp.MultiObject;
import mx.controls.DataGrid;
import mx.controls.dataGridClasses.DataGridListData;
import mx.controls.listClasses.BaseListData;
private var _listData:BaseListData;
public function get listData():BaseListData {
return _listData;
}
public function set listData( value:BaseListData ):void {
_listData = value;
}
public var cbSelected:Boolean;
override public function set data(value:Object):void {
if(value != null) {
super.data = value;
if (value.IsChecked == true) {
combo.selectedIndex = 0;
} else {
combo.selectedIndex = 1;
}
}
dispatchEvent(new FlexEvent(FlexEvent.DATA_CHANGE));
}
private function changeCombo(evt:Event):void {
var myListData:DataGridListData = evt.target.parentDocument.listData;
var myDG:DataGrid = DataGrid(myListData.owner);
var idx:Number = Number(no.text)-1;
for(var i:uint=0; i<myDG.document.initDG.length; i++) {
if(i == idx && evt.target.selectedIndex == 0) {
myDG.document.initDG[i] = new MultiObject(myDG.document.initDG[i].No, myDG.document.initDG[i].Name,
myDG.document.initDG[i].CheckNum, true);
} else {
myDG.document.initDG[i] = new MultiObject(myDG.document.initDG[i].No, myDG.document.initDG[i].Name,
myDG.document.initDG[i].CheckNum, false);
}
}
}
]]>
</mx:Script>
<mx:ComboBox id="combo" change="changeCombo(event)" updateComplete="cbSelected=combo.selectedItem.data" >
<mx:dataProvider>
<mx:Object label="true" data="true"/>
<mx:Object label="false" data="false"/>
</mx:dataProvider>
</mx:ComboBox>
<mx:Text id="no" text="{data.No}" visible="false" width="0"/>
</mx:VBox>
</mx:Component>
</mx:itemEditor>
</mx:DataGridColumn>
<mx:DataGridColumn dataField="IsChecked" headerText="CheckBox IR" editable="false" rendererIsEditor="true" >
<mx:itemRenderer>
<mx:Component>
<mx:HBox horizontalAlign="center" implements="mx.controls.listClasses.IDropInListItemRenderer">
<mx:Script>
<![CDATA[
import comp.MultiObject;
import mx.controls.DataGrid;
import mx.controls.dataGridClasses.DataGridListData;
import mx.controls.listClasses.BaseListData;
private var _listData:BaseListData;
public function get listData():BaseListData {
return _listData;
}
public function set listData( value:BaseListData ):void {
_listData = value;
}
private function changeCB(evt:MouseEvent):void {
var myListData:DataGridListData = evt.target.parentDocument.listData;
var myDG:DataGrid = DataGrid(myListData.owner);
myDG.document.initDG[Number(no.text)-1] = new MultiObject(myDG.selectedItem.No, myDG.selectedItem.Name,
myDG.selectedItem.CheckNum, evt.target.selected);
}
]]>
</mx:Script>
<mx:Text id="no" text="{data.No}" visible="false" width="0"/>
<mx:CheckBox id="cb" selected="{data.IsChecked}" click="changeCB(event)"/>
</mx:HBox>
</mx:Component>
</mx:itemRenderer>
</mx:DataGridColumn>
</mx:columns>
</mx:DataGrid>
<mx:HBox width="650" horizontalAlign="center">
<mx:Button label="Check All or None" click="checkAll()"/>
</mx:HBox>
</mx:Application>
설정
트랙백
댓글
글
itemEditor 이해와 커스텀 itemEditor 만들어보기
데이터 그리드에서 편집기능을 사용할때 우리는 보통 editable 속성값을 true 로 셋팅한것만으로 편하게
바인딩된 원 데이터를 마음대로 수정이 가능했습니다.
또 다른 방법으로 우리는 itemEditor 를 일반적인 컨트롤 컴포넌트들의 클래스 네임을 적어줌으로서 편하게(?) 작업이 가능했습니다.
하지만 그보다 복잡한 형태의 itemEditor 을 사용해야한다면 어떻게 해야할까?
아래 소스는 가장 복잡한 형태의 커스텀 itemEditor 을 사용함으로서 itemEditor 가 갖추어야할것들을 모두 표시 해주고 있습니다.
소스는 itemEditor 의 베이스 클래스를 HBOX 로 선언해주었습니다.
실제 itemEditor 가 기본적으로 갖추어야 할 것은
mx.controls.listClasses.IDropInListItemRenderer 인터페이스와
get listData , set listData
속성입니다. 그리고 set Data 에서의
dispatchEvent(new FlexEcent(FlexEvent.DATA_CHANGE)); 와 listData 의 [Bindable("datachange")] 또한
필수 입력 사항들입니다. 그렇다면 왜? 이것들이 필요한것일까? 이유는 간단합니다. 이미 IDropInListItemmRenderer 의 인터페이스를 가진 컨트롤들은 이미 선언이 되어 있기 때문입니다. 위의 내용들은 해당 컴포넌트가 ItemRenderer 또는 ItemEditor 에 사용되었을경우 ListBase 로 부터 데이터를 가져오기 위해 선언된 것일 뿐입니다. 레퍼런스의 IDropInListItemmRenderer 를 찾아보면 좀 더 자세한 설명을 얻으실수 있습니다. DataGridColumn 쪽을 살펴보면 editorDataField = 'text' 라고 적혀있습니다. text 는 기본값이지만 설명을 위해 적어 두었습니다. editorDataField 는 데이터의 필드가 아닌 itemRenderer , itemEditor 간의 데이터 통신을 위한 속성을 지칭하는것입니다. 우리는 기본컨트롤과의 통신을 위해 text 속성을 그대로 유지하고 바꾸지는 않겠습니다. 아래 보시면 set text 와 get text 가 보일겁니다. set text는 여기서 전혀 사용되지않지만 get text 는 itemRenderer 로 데이터를 보내주기 위해 콤보박스의 text 값을 보내주게 만들었습니다. 이전에 itemRenderer 를 설명할때 listData -> set data -> set text 로 실행된다고 하였지만. 그것은 IDropInListItemmRenderer 인터페이스를 가진 기본적인 컨트롤들의 set data 내부에서 set text 를 호출하였지만. 우리가 만든 커스텀 itemEditor 에는 그럴필요가 없기에 그냥 두었습니다. import mx.collections.ArrayCollection; <mx:DataGrid id="grid" width="300" dataProvider="{dataSet}" editable="true"> </mx:Application>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="vertical">
<mx:Script>
<![CDATA[
import mx.utils.ObjectUtil;
[Bindable] private var dataSet:ArrayCollection = new ArrayCollection([
{label:"http://blog.naver.com/mash9"},
{label:"blog"},
{label:"naver"},
{label:"com"},
{label:"mash9"}
]);
[Bindable] public var combo:ArrayCollection = new ArrayCollection(ObjectUtil.copy(dataSet.source) as Array);
]]>
</mx:Script>
<mx:columns>
<mx:DataGridColumn dataField="label" editorDataField="kkkk">
<mx:itemEditor>
<mx:Component>
<mx:HBox implements="mx.controls.listClasses.IDropInListItemRenderer">
<mx:Script>
<![CDATA[
import mx.controls.Alert;
import mx.events.FlexEvent;
import mx.controls.listClasses.BaseListData;
private var property:String;
override public function set data(value:Object):void
{
super.data = value;
for(var i:Number = 0 ; i < cb.dataProvider.length ; i++)
if(cb.dataProvider[i][property] == value[property])
{
cb.selectedIndex = i;
break;
}
dispatchEvent(new FlexEvent(FlexEvent.DATA_CHANGE));
}
[Bindable("dataChange")]
private var _listData:BaseListData;
public function get listData():BaseListData
{
return _listData;
}
public function set listData(value:BaseListData):void
{
property = value["dataField"];
_listData = value;
}
public function set kkkk(value:String):void
{
//"not use"
}
public function get kkkk():String
{
return cb.text;
}
]]>
</mx:Script>
<mx:Label text="select:"/>
<mx:ComboBox id="cb" dataProvider="{outerDocument.combo}"/>
</mx:HBox>
</mx:Component>
</mx:itemEditor>
</mx:DataGridColumn>
</mx:columns>
</mx:DataGrid>
출처 : http://blog.naver.com/mash9 블로그 닫힌문님
설정
트랙백
댓글
글
ListBase기반 콤포넌트 이해
ListBase기반의 콤포넌트중 List 콤포넌트의 대한 간단한 예제이다.
아래 내용중에 참고해야될 부분이 빨간색부분 event.itemRenderer.data.url1 이다.
List콤포넌트에 dataProvider 로 ArrayCollection을 바인딩시킨후 ListEvent이벤트를 통해서
List콤포넌트에 바인딩된 dataProvider의 데이타 접근할수가 있다.
ListBase계열을 상속받은 콤포넌트들은 ListBase의 data라는 프로퍼티를통해서 원시데이타에 접근할수있기때문이다.
따라서 itemRednderer.data 는 하나의 item을 가르키게 되고 원하는값을 뽑아낼수있다.
Datagrid나 Tree역시 비슷하다..
<?xml version="1.0"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" height="500">
<mx:Script>
<![CDATA[
[Bindable]
[Embed(source='assets/m2.jpg')]
private var m1:Class;
[Bindable]
[Embed(source='assets/m2.jpg')]
private var m2:Class;
[Bindable]
[Embed(source='assets/m3.jpg')]
private var m3:Class;
import mx.events.ListEvent;
private function fnRollOver(event:ListEvent):void {
sLoader.source= event.itemRenderer.data.url1;
}
private function fnRollOut(event:ListEvent):void {
sLoader.source=""
}
]]>
</mx:Script>
<mx:ArrayCollection id="dpd">
<mx:source>
<mx:Object label="오만과 편견" icon="{m1}" url1="http://imgmovie.naver.com/mdi/mit500/0447/D4728-00.jpg" />
<mx:Object label="캐리비안의 해적" icon="{m2}" url1="http://imgmovie.naver.com/mdi/mit500/0436/D3679-01.jpg"/>
<mx:Object label="러브 액츄얼리" icon="{m3}" url1="http://imgmovie.naver.com/mdi/mit500/0368/C6843-00.jpg"/>
</mx:source>
</mx:ArrayCollection>
<mx:List id="lData"
dataProvider="{dpd}"
width="230"
itemRollOut="fnRollOut(event);"
itemRollOver="fnRollOver(event);"
fontSize="12"
height="71"/>
<mx:SWFLoader id="sLoader" width="230" height="330"/>
</mx:Application>
설정
트랙백
댓글
글
AdvancedDataGrid row 속성 style 변경하기
private var dpADG:ArrayCollection = new ArrayCollection([
{Artist:'Pavement', Album:'Slanted and Enchanted', Price:11.99},
{Artist:'Pavement', Album:'Brighten the Corners', Price:11.99},
{Artist:'Saner', Album:'A Child Once', Price:11.99},
{Artist:'Saner', Album:'Helium Wings', Price:12.99},
{Artist:'The Doors', Album:'The Doors', Price:10.99},
{Artist:'The Doors', Album:'Morrison Hotel', Price:12.99},
{Artist:'Grateful Dead', Album:'American Beauty', Price:11.99},
{Artist:'Grateful Dead', Album:'In the Dark', Price:11.99},
{Artist:'Grateful Dead', Album:'Shakedown Street', Price:11.99},
{Artist:'The Doors', Album:'Strange Days', Price:12.99},
{Artist:'The Doors', Album:'The Best of the Doors', Price:10.99}
]);
public function myColStyleFunc(data:Object,
col:AdvancedDataGridColumn):Object
{
if(data["Price"] <= 11.00)
return {color:0x00FF00};
return null;
}
<mx:AdvancedDataGridColumn dataField="Price"
styleFunction="myColStyleFunc"/>
설정
트랙백
댓글
글
AdvancedDatagrid] Itemrenderer 활용
<?xml version="1.0"?>
<!-- dpcontrols/adg/HierarchicalADGSimpleRenderer.mxml -->
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" width="500" height="150">
<mx:Script>
<![CDATA[
import mx.collections.ArrayCollection;
[Bindable]
public var OrexhComboData:ArrayCollection = new ArrayCollection(
[
{Region:"CICAGO", Territory_Rep:10,Actual:10,Estimate:20},
{Region:"SEOUL", Territory_Rep:100,Actual:100,Estimate:10},
{Region:"TEXAS", Territory_Rep:10,Actual:12,Estimate:34}
] );
]]>
</mx:Script>
<mx:AdvancedDataGrid width="100%" height="100%" dataProvider="{OrexhComboData}" sortExpertMode="true">
<mx:columns>
<mx:AdvancedDataGridColumn dataField="Region" width="70"/>
<mx:AdvancedDataGridColumn dataField="Territory_Rep"
headerText="Territory Rep" width="100"/>
<mx:AdvancedDataGridColumn dataField="Actual" width="70"/>
<mx:AdvancedDataGridColumn dataField="Estimate" width="70"/>
<mx:AdvancedDataGridColumn id="diffCol"
headerText="Difference"/>
</mx:columns>
<mx:rendererProviders>
<mx:AdvancedDataGridRendererProvider column="{diffCol}"
renderer="SummaryRenderer"/>
</mx:rendererProviders>
</mx:AdvancedDataGrid>
</mx:Application>
<?xml version="1.0"?>
<!-- dpcontrols/adg/myComponents/SummaryRenderer.mxml -->
<mx:Label xmlns:mx="http://www.adobe.com/2006/mxml" textAlign="center">
<mx:Script>
<![CDATA[
override public function set data(value:Object):void
{
var diff:Number =
Number(value["Actual"]) - Number(value["Estimate"]);
// 다른필드데이타필드로부터 값얻어오는방법 value["필드명"]
if (diff < 0)
{
setStyle("color", "red");
text = "Undersold by " + usdFormatter.format(diff);
}
else
{
setStyle("color", "green");
text = "Exceeded estimate by " + usdFormatter.format(diff);
}
}
]]>
</mx:Script>
<mx:CurrencyFormatter id="usdFormatter" precision="2"
currencySymbol="$" decimalSeparatorFrom="."
decimalSeparatorTo="." useNegativeSign="true"
useThousandsSeparator="true" alignSymbol="left"/>
</mx:Label>
RECENT COMMENT