Flex3.0&AS3 2009. 7. 12. 20:11

flex3] ItemRenderer 이해 및 활용

IDataRenderer인터페이스 상속한 ItemRenderer클래스는 data속성을 받을수있다.


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속성을 받을수있다.
private var _listData:BaseListData;

[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>
<mx:List id="lData" dataProvider="{AutoIndex(dpd)}"
 width="160" itemRenderer="MyItemRenderer" rowCount="2"/>
</mx:Application>

Flex3.0&AS3 2009. 7. 12. 19:10

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>

sql 2009. 7. 1. 17:15

ORALCE] CURSOR 커서 사용하기


여러개의 로우를 하나의 컬럼으로 만들어서 반환하는 FUNCTION이다

아래 간략한 설명은 
SELECT 절에서 특정테이블 컬럼을 값을 인자로 넘겨서 해당인자를 조건으로하여
검색된 여러개의 로우를 LOOF를 돌면서 하나의 컬럼으로 만들고 해당 값을 반환하는 형식이다.

CREATE OR REPLACE FUNCTION   ABEEK2009.GET_SUSTNAME
    (IN_PROGRAM  IN VARCHAR2)   
    RETURN VARCHAR2
    IS
    NAMESTR VARCHAR2(1000);
   
    V_HAKKWACD ABK_PROGRAMGROUP.HAKKWACD%type;
    V_HAKKWANM ABK_PROGRAMGROUP.HAKKWANM%type;        

       CURSOR C1 IS
         SELECT HAKKWACD, HAKKWANM FROM ABK_PROGRAMGROUP
             WHERE PROGRAM = IN_PROGRAM
   ORDER BY HAKKWACD;   
    BEGIN    
  NAMESTR := ''; 
       
        OPEN C1;           
         LOOP    
   FETCH C1 INTO  V_HAKKWACD, V_HAKKWANM;
          
          EXIT WHEN C1%NOTFOUND;
                 IF NAMESTR IS NULL THEN
                    NAMESTR :=  V_HAKKWACD || ' ' || V_HAKKWANM ;    
                 ELSE
                   NAMESTR := NAMESTR  || ',' || V_HAKKWACD || ' ' || V_HAKKWANM;
                 END IF;
         END LOOP;    
         CLOSE C1;        
       
       RETURN NAMESTR;    
      
   END;



아래와 같은 결과를 얻을수있다.

   

script 2009. 7. 1. 11:06

[javascript]struts 팝업후 부모창 리로드


팝업에서 해당 value값을 부모창에 셋팅후  아래와 깉은 방식으로 처리하면
팝업창 닫은후 부모창을 원하는 액션으로 보낼수있다.

 function formSubmit(){
      var o = document.form01;
      var po = opener.document.form01;
    if( o.rYear.value=="" || o.rYear.value==" " ){
       alert("년도를 입력해주세요.");
       o.nYear.focus();
       return false;
    }
    if( confirm("등록하시겠습니까?") ){
      po.mode.value = "I";
      po.rHakgi.value = o.nHakgi.value;
      po.rYear.value = o.rYear.value;
      opener.document.form01.submit();
      self.close();
    }else{
      return;
    }
  }


opener.document.폼이름.submit();