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();
DB 2009. 6. 4. 09:45

altibase ERR-1105A : Fixed record size exceeds a page size.


Altibase에서 발생하는 오류중 하나이다.

아래는 Alitbase 고객센터에 문의한 내용 전문을 공유합니다.

===============================================================================================================================

알티베이스는 메모리와 디스크 둘다 데이터 공간으로 사용할 수 있는데, 메모리와 디스크테이블스페이스

의 페이지 사이즈가 틀립니다. 메모리 테이블은 한 페이지 사이즈가 32K 이고, 디스크 테이블은 한 페이

지 사이즈가 8K 입니다.

 

위 문의하신 쿼리는 내부적으로 TEMPORARY영역에 저장됩니다.

이때 저장되면서 VARIABLE 한 컬럼이 FIXED 한 컬럼으로 변경되어 저장되는데, 이 결과가 MEMORY TABLESPACE

Temporary 영역에 저장되는지, DISK TABLESPACE Temporary 영역에 저장되는냐에 따라 에러메시지가 나

타날 수 도 있고 나타나지 않을 수도 있습니다. 만약 MEMORY Tablespace에 저장된다면, 한 페이지가 32K

므로 무리없이 수행되겠지만, DISK Tablespace에 저장된다면 한페이지가 8k이므로 [ERR-1105A : Fixed

record size exceeds a page size.] 와 같은 에러메시지를 받을 수 있습니다.

 

=============================================================================================================

 

해결방법

/*+ temp_tbs_memory */ 이것을 쿼리에 포함시켜서 Memory Tablespce에 저장하라고 힌트를 주는것이다.

ex>
select  /*+ temp_tbs_memory */ EMP,ENAME FROM EMP;

 

sql 2009. 5. 19. 16:14

START WITH CONNECT BY~


◈ START WITH
 
 - 계층 질의의 루트(부모행)로 사용될 행을 지정 합니다..
 - 서브쿼리를 사용할 수도 있습니다.
 
 
◈ CONNECT BY
 
 - 이 절을 이용하여 계층 질의에서 상위계층(부모행)과 하위계층(자식행)의 관계를 규정 합니다.
 - 보통 PRIOR 연산자를 많이 사용 합니다..
 - 서브쿼리를 사용할 수 없습니다..
 - PRIOR
   PRIOR 이 붙는 column 이 가져온 row 의 column을 의미한다. 즉 상위에 존재할 데이타가 되

   게 된다. 어느쪽에 붙느냐 잘 따져 본다.
  
 
◈ CONNECT BY의 실행순서는 다음과 같습니다.
 
 - 첫째 START WITH절
 - 둘째 CONNECT BY 절
 - 세째 WHERE 절 순서로 풀리게 되어있습니다.

 

◈ SYNTEX
  
   SELECT
   FROM
   START WITH
   CONNECT BY PRIOR
   AND
   ORDER SIBLINGS BY

 

   or

  

   SELECT
   FROM
   WHERE
   START WITH
   CONNECT BY PRIOR
   ORDER SIBLINGS BY
  
◈ 이용
   1) 쇼핑목 카테고리 관계 - 대분류, 중분류, 소분류 등을 트리 구조로
   2) 게시판 에서 일반글 과 답글과의 관계 등을 트리 구조로    
  
◈ 데이터가 많아질 경우....
 
 - 첫째로 풀리는 START WITH job='PRESIDENT' job 컬럼에 index가 생성되어 있지 않는다면
    속도를 보장할 수 없습니다.
 
 - 그리고 둘째로 풀리는 CONNECT BY PRIOR empno = mgr 역시 PRIOR 쪽의 컬럼값이 상수가
   되기 때문에 MGR컬럼에 index를 생성하여야 CONNECT BY의 속도를 보장할 수 있습니다.
  
 - 계층구조를 CONNECT BY, START WITH로 풀면 부분범위 처리가 불가능하고 Desc으로
   표현하기가 어렵 습니다.
  

--------------- 설명
-- 아래 예제 1
1) job 이 president 인 row 을 가져온다.
2) 가져온 row 에서 prior 이 붙은 comumn 의 데이타를 가져온다. 여긴선 empno 다.
3) PRIOR empno = mgr  empno 을 mgr 로 사용하는 row 을 가져온다. 기존의 row 상위, 비교해서 가져온 row 하위에 있게 된다.
4) 이제 두번째로 가져온 row 에서 PRIOR empno = mgr 을 실행시킨다.
5) 이런 과정이 연속으로 반복되면서 최종적으로 가져온 data 는 트리 구조를 이루게 된다.(계층구조)
6) LEVEL 은 depth 을 의미한다.

7) empno = PRIOR mgr 한다면 가져온 row 의 mgr을 기준으로 비교하여 data을 가져오게 된다.
   예제 2 참조

 
---- 예제 1
SELECT                  LEVEL,empno,ename, mgr, job  --  LEVEL 은 depth 을 의미한다.
FROM                     emp
START WITH             job = 'PRESIDENT'   -- 직업이 PRESIDENT를 기준으로
CONNECT BY PRIOR empno = mgr -- 사원(empno)과 관리자(mgr)의  관계를 계층

 

-- level 을 공백으로 찍어 본다.

SELECT                  LPAD(' ', 4*(LEVEL-1)) || ename ename,LEVEL, empno, mgr, job 
FROM                     emp
START WITH             job = 'PRESIDENT'   -- 직업이 PRESIDENT를 기준으로
CONNECT BY PRIOR empno = mgr    -- 사원(empno)과 관리자(mgr)의  관계를 계층

-- 결과치
ENAME         LEVEL EMPNO MGR     JOB
KING             1 7839      PRESIDENT
    JONES         2 7566 7839 MANAGER
        SCOTT     3 7788 7566 ANALYST
            ADAMS 4 7876 7788 CLERK
        FORD     3 7902 7566 ANALYST
            SMITH 4 7369 7902 CLERK
        JJS         3 9000 7566 ANALIST
    BLAKE         2 7698 7839 MANAGER
        ALLEN     3 7499 7698 SALESMAN
        WARD     3 7521 7698 SALESMAN
        MARTIN     3 7654 7698 SALESMAN
        TURNER     3 7844 7698 SALESMAN
        JAMES     3 7900 7698 CLERK
    CLARK         2 7782 7839 MANAGER
        MILLER     3 7934 7782 CLERK


----예제 2 - PRIOR 위치 변경
SELECT           LPAD(' ', 4*(LEVEL-1)) || ename ename,LEVEL, empno, mgr, job  -- level 을 공백으로 찍어 본다.
FROM             emp
START WITH       job = 'CLERK'   -- 직업이 CLERK를 기준으로
CONNECT BY empno = PRIOR mgr -- 사원(empno)과 관리자(mgr)의  관계를 계층   


-- 결과치
ENAME             LEVEL EMPNO MGR     JOB
SMITH             1     7369 7902 CLERK
    FORD         2     7902 7566 ANALYST
        JONES     3     7566 7839 MANAGER
            KING 4     7839      PRESIDENT
ADAMS             1     7876 7788 CLERK
    SCOTT         2     7788 7566 ANALYST
        JONES     3     7566 7839 MANAGER
            KING 4     7839      PRESIDENT
JAMES             1     7900 7698 CLERK
    BLAKE         2     7698 7839 MANAGER
        KING     3     7839      PRESIDENT
MILLER             1     7934 7782 CLERK
    CLARK         2     7782 7839 MANAGER
        KING     3     7839      PRESIDENT


---- 예제 3: 조건 절 사용
-- 1) WHERE  절 사용    
SELECT           LPAD(' ', 4*(LEVEL-1)) || ename ename,LEVEL, empno, mgr, job  -- level 을 공백으로 찍어 본다.
FROM             emp
WHERE     ename LIKE '%K%'
START WITH       job = 'PRESIDENT'   -- 직업이 PRESIDENT를 기준으로
CONNECT BY PRIOR empno = mgr -- 사원(empno)과 관리자(mgr)의  관계를 계층

-- 2) CONNECT BY PRIOR 아래에 AND 사용
SELECT           LPAD(' ', 4*(LEVEL-1)) || ename ename,LEVEL, empno, mgr, job  -- level 을 공백으로 찍어 본다.
FROM             emp
START WITH       job = 'PRESIDENT'   -- 직업이 PRESIDENT를 기준으로
CONNECT BY PRIOR empno = mgr -- 사원(empno)과 관리자(mgr)의  관계를 계층
AND      ename LIKE '%K%'

-- 3) LEVEL 조건 사용
SELECT           LPAD(' ', 4*(LEVEL-1)) || ename ename, empno, mgr, job
FROM             emp
START WITH       job='PRESIDENT'
CONNECT BY PRIOR empno =mgr
AND              LEVEL <= 2

 

---- 예제4 :  각 LEVELl별로 급여의 합과 인원수를 구하는 예제
 
SELECT           LEVEL, SUM(sal) salTotal,COUNT(empno) empnCnt
FROM             emp
START WITH       job='PRESIDENT'
CONNECT BY PRIOR empno=mgr     
GROUP BY         LEVEL
ORDER BY         LEVEL


-- 결과치 
     LEVEL   salTotal    empnCnt
---------- ---------- ----------
         1       5000          1
         2       8275          3
         3      13850          8
         4       1900          2



부서별 인원 가로로 출력하기

SELECT     deptno, SUBSTR (MAX (SYS_CONNECT_BY_PATH (ename, ',')), 2) pathU
      FROM (SELECT ename, deptno,
                   ROW_NUMBER () OVER (PARTITION BY deptno ORDER BY ename) rnum
              FROM emp)
START WITH rnum = 1
CONNECT BY PRIOR rnum = rnum - 1 AND PRIOR deptno = deptno
GROUP BY deptno

sql 2009. 5. 19. 16:02

oracle9i ]start with connect by prior~


계층형 게시판 같이 트리구조로 되어 있는

디비를 삭제, 정렬, 기타 등등 트리구조에서 아주아주아~~~~~~~주 편하게 사용할 수 있다.

 글번호

그룹 

단계 

순서 

부모글 

 

 1

1

 3

  3 

 5

3

    5

 6

4

      6

 2

5

  2

 4

1

2

6

 2

    4

 

사용법 ) 3번글을 지우려한다면 그 하위 답변인 5,6번 게시물도 지워져야 한다.

            이때 쿼리 짜낼려고 별짓을 다 했는데; 간단한 방법이 있었으니..두둥~

            delete from s_board

            where 글번호 in (

                                     select *
                                     from s_board
                                     start with 글번호 = 3                          //시작하는 부분
                                     connect by prior 글번호 = 부모글        //검색 대상 을 트리형태로 검색 
                                     order by 그룹 desc, 순서

           )

           요롷게 start with ~ connect by prior 을 써주면 된다.

 

* prior의 위치

   - connect by prior 자식컬럼 =             부모컬럼 => 부모에서 자식으로 트리 구성

   - connect by        자식컬럼 = prior      부모컬럼 => 자식에서 부모로 트리 구성

 

 

 

참고 ) http://blog.naver.com/humanlinux?Redirect=Log&logNo=110005644075

         http://cafe.naver.com/ohsol.cafe?iframe_url=/ArticleRead.nhn%3Farticleid=21

sql 2009. 2. 16. 15:04

oracle (+)을 left outer join on 으로 바꾸기

아래의 두개의 쿼리는 동일한 쿼리인다.
(+)를 left outer join on 으로 변경시킨 sql이다.

SELECT SV.STD_NO, SV.KOR_NM, SV.SUST, SV.DEPT_KOR_NM, SV.SHYR, SV.SHREG_CD, PG.PROGRAM, PC.PDCHECK
       , NVL(MB.YEAR, (CASE WHEN SUBSTR(SV.STD_NO, 0, 4) > 8000 THEN TO_NUMBER(1900+SUBSTR(SV.STD_NO, 0, 2)) ELSE TO_NUMBER(SUBSTR(SV.STD_NO, 0, 4)) END)) AS BASEYEAR
FROM ABK_PROGRAMGROUP PG
    , ABEEK_STUINFO_VIEW SV
    , ABK_ABEEKPDCHECK PC
    , ABK_MIDBASIS MB
WHERE 1=1
AND SV.ABEEK_FG = 'Y'
AND SV.SHREG_CD IN ('1','2')
AND PG.HAKKWACD = SV.SUST
AND SV.STD_NO = PC.HAKBUN(+)
AND SV.STD_NO = MB.HAKBUN(+)
ORDER BY SV.STD_NO DESC, SV.KOR_NM DESC



 

SELECT SV.STD_NO, SV.KOR_NM, SV.SUST, SV.DEPT_KOR_NM, SV.SHYR, SV.SHREG_CD, SV.PROGRAM, PC.PDCHECK
       , NVL(MB.YEAR, (CASE WHEN SUBSTR(SV.STD_NO, 0, 4) > 8000 THEN TO_NUMBER(1900+SUBSTR(SV.STD_NO, 0, 2)) ELSE TO_NUMBER(SUBSTR(SV.STD_NO, 0, 4)) END)) AS BASEYEAR
FROM
(SELECT  S.STD_NO, S.KOR_NM, S.SUST, S.DEPT_KOR_NM, S.SHYR, S.SHREG_CD, PG.PROGRAM
 FROM ABEEK_STUINFO_VIEW S, ABK_PROGRAMGROUP PG
WHERE S.ABEEK_FG = 'Y'
 AND S.SHREG_CD IN ('1','2')
 AND S.SUST = PG.HAKKWACD
)SV
LEFT OUTER JOIN
(SELECT HAKBUN, PDCHECK
FROM ABK_ABEEKPDCHECK
)PC
ON SV.STD_NO = PC.HAKBUN
LEFT OUTER JOIN
(SELECT HAKBUN, YEAR
 FROM ABK_MIDBASIS
)MB
ON SV.STD_NO = MB.HAKBUN
ORDER BY SV.STD_NO DESC, SV.KOR_NM DESC

Flex3.0&AS3 2009. 2. 13. 17:00

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>
Flex3.0&AS3 2009. 2. 12. 15:39

플렉스 관련 사이트


플렉스 이미지 효과내는 예제 목록들
1. Setting effects with ActionScript in Flex
2. Image Manipulation in Flex
3. Rounding the corners of an Image control in Flex using a mask
http://blog.flexexamples.com/2008/09/09/rounding-the-corners-of-an-image-control-in-flex-using-a-mask/#more-792
4. Setting a complete effect on an Image control in Flex
http://blog.flexexamples.com/2008/06/29/setting-a-complete-effect-on-an-image-control-in-flex/#more-689
5. Preventing an image from automatically loading in an Image control in Flex
http://blog.flexexamples.com/2008/06/29/preventing-an-image-from-automatically-loading-in-an-image-control-in-flex/#more-688
6. Maintaining an image’s aspect ratio on an Image control in Flex
http://blog.flexexamples.com/2008/06/28/maintaining-an-images-aspect-ratio-on-an-image-control-in-flex/#more-687
7. Displaying a hand cursor when mousing over a Flex control
http://blog.flexexamples.com/2007/11/18/displaying-a-hand-cursor-when-mousing-over-a-flex-control/
8. Detecting whether an image loaded successfully in Flex
http://blog.flexexamples.com/2007/11/04/detecting-whether-an-image-loaded-successfully-in-flex/
9. Using the Image control as a pop up
http://blog.flexexamples.com/2007/10/18/using-the-image-control-as-a-pop-up/
10. Flex Quick Starts: Building a simple user interface
http://www.adobe.com/devnet/flex/quickstart/adding_effects/
11. Creating a simple image gallery with the Flex TileList control
http://blog.flexexamples.com/2008/03/08/creating-a-simple-image-gallery-with-the-flex-tilelist-control/
12. Image control -- Flex 2.01
http://livedocs.adobe.com/flex/201/html/wwhelp/wwhimpl/common/html/wwhelp.htm?context=LiveDocs_Book_Parts&file=controls_059_18.html
13. Skewing an Image control in Flex
14. Disabling container layout for effects
http://livedocs.adobe.com/flex/201/html/wwhelp/wwhimpl/common/html/wwhelp.htm?context=LiveDocs_Book_Parts&file=behaviors_068_29.html
15. Image Gallery Component - ImageRail
http://www.flexer.info/2008/05/29/image-gallery-component-imagerail/
16. ImageRail - Adding Click Event, Styles And HandCursor
http://www.flexer.info/2008/06/05/imagerail-adding-click-event-styles-and-handcursor/
17. Tips:three ways to load an image file in Flex
http://ntt.cc/2008/03/09/tips-three-ways-to-load-an-image-file-in-flex.html
18. Using the AnimateProperty effect
Flex 프로젝트명 : AnimateProperty.mxml
19. Flex CoverFlow performance improvement, Flex Carousel Component, and Vertical CoverFlow
20. 이미지 팁(flash & silverlight)
http://www.shinedraw.com/
21. Creating a simple image gallery with the Flex HorizontalList control (redux)
22. 여러가지 예제
http://blog.naver.com/rubberdam?Redirect=Log&logNo=120052663108
23. Flex Roll Over Image with link Component
24. Adding time delay to mouse over events
25. Posts Tagged ‘scroll image flex’
http://www.infuy.com/blogs/alex/?tag=scroll-image-flex
26. Mouseover and Mouseout example
27. CursorManager - Change Mouse Cursor
28. Free ImageZoomer Flex Component!
31. Roll Over Image/Button Examples
카테고리 없음 2009. 2. 11. 16:35

COLLECTION_CHANGE 이벤트를 통한 DATAGRID안의 체크박스 RENDERER 제어


아래내용은 두개의 데이타 그리를 가지고 한쪽에 체크박에서 데이타를 선택시 다른쪽에 선택한 아이템을 넣기위해
사용된 방법중 COLLECTION_CHANGE   이벤트를 이용하였다.


    [Bindable] private var databases1:ArrayCollection;
    [Bindable] private var databases2:ArrayCollection;
 

databases2.addEventListener(CollectionEvent.COLLECTION_CHANGE, handleDataProviderChange);


private function handleDataProviderChange(event:CollectionEvent):void
            {
                var selIdx:int = dgList2.selectedIndex;
               
                for(var i:int=0; i<databases1.length; i++)
                {
                 if(databases1[i].HAKKWACD == databases2[selIdx].DEPT)
                 {
                  databases1.removeItemAt(i);
                  return;
                 }
                }
                  databases1.addItem
                  (
                   {HAKKWACD : databases2[selIdx].DEPT, HAKKWANM : databases2[selIdx].DEPT_KOR_NM}
                  );
            }