달력

5

« 2025/5 »

  • 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
  • 31
2011. 11. 11. 11:32

[Flex] TextInput 한글 일본어 짤림현상. 공부/flex2011. 11. 11. 11:32


TextInput에서 "한글테스트입니다" 라고 입력했을때, 화면에서는 제대로 보이지만

textInput.text 해서 값을 가져왔을 경우는 "한글테스트입니" 라고 값이 짤려서 가져오는 데

아직 글을 작성중으로 인식해서 TextField에만 값이 있고 Text로넘어가지 않은 상태입니다.

mx:TextInput에서는 textfield에 직접 접해서 textField.text로해서 값을 가져옴..

public class CTextInput extends TextInput
 {
    public function CTextInput()
    {
        super();
    }
    override public function get stext():String{
               return textField.text;
    }
 }

s:TextInput에서는 RichEditableText 에 직접 접해서 값을 가져옴..


public class CTextInput extends TextInput
 {
    public function CTextInput()
    {
        super();
     }
     override public function set text(value:String):void{
        super.text = value;
    }
    override public function get text():String{
         var rich:RichEditableText = this.textDisplay as RichEditableText;
         var tflow:SpanElement = rich.textFlow.mxmlChildren[0].mxmlChildren[0];
         return tflow.text;
     }
 }
:
Posted by 알 수 없는 사용자
2011. 10. 12. 11:57

[Flex] spark datagrid itemeditor 공부/flex2011. 10. 12. 11:57


mx dataGrid 는 itemEditor를 사용해서 값을 바꾸면 바로 적용되는데...

spark dataGrid는 값이 Commit 되지않는다..

mx dataGrid에서 column에 editorDataField속성에 값을 지정해주면 바로 커밋되는데.....

왤까....????? spark column에는속성도없고... 뭘써야되는지....-_-

오늘의 숙제다.


--------------------------------------------------------------------------------------------
Adobe Help 참조
<?xml version="1.0" encoding="utf-8"?>
<!-- dpcontrols\sparkdpcontrols\SparkDGItemEditor.mxml -->
<s:Application xmlns:fx="http://ns.adobe.com/mxml/2009" 
    xmlns:s="library://ns.adobe.com/flex/spark" 
    xmlns:mx="library://ns.adobe.com/flex/mx" 
    width="450">
    <fx:Script>
        <![CDATA[                
            import mx.collections.ArrayCollection;
            
            [Bindable]
            private var myDP:ArrayCollection = new ArrayCollection([
                {label1:"Order #2314", quant:3, Sent:true},
                {label1:"Order #2315", quant:3, Sent:false}     
            ]);       
        ]]>
    </fx:Script>
    
    <s:DataGrid id="myDG" width="100%" 
        dataProvider="{myDP}" 
        variableRowHeight="true" 
        editable="true" >
        <s:columns>
            <s:ArrayList>
                <s:GridColumn dataField="label1" headerText="Order #"/>
                <s:GridColumn dataField="quant" 
                    headerText="Qty"
                    itemEditor="myComponents.DGNumStepperEditor"/>
            </s:ArrayList> 
        </s:columns >
    </s:DataGrid> 
</s:Application>

<?xml version="1.0" encoding="utf-8"?>
<!-- dpcontrols\sparkdpcontrols\myComponents\DGNumStepperEditor.mxml -->
<s:GridItemEditor xmlns:fx="http://ns.adobe.com/mxml/2009" 
    xmlns:s="library://ns.adobe.com/flex/spark" 
    xmlns:mx="library://ns.adobe.com/flex/mx">

    <fx:Script>
        <![CDATA[
            
            // Override the setter to initialize the NumericStepper control
            // with the cell data.
            override public function set value(newValue:Object):void {
                ns.value = newValue as Number;
            }

            // Override the getter to return the current value of 
            // the NumericStepper control.
            // The save() method updates the data provider element for the
            // row of the grid with this value. 
            override public function get value():Object {
                return ns.value;
            }
            
            // Override setFocus() to shift focus to the NumericStepper.
            override public function setFocus():void {
                ns.setFocus();
            }
        ]]>
    </fx:Script>

    <s:NumericStepper id="ns" width="100%"
        fontWeight="bold"/>
</s:GridItemEditor>
flex 4.5 부터는 set value 와 get value로 자동 commit이 되네...
:
Posted by 알 수 없는 사용자
2011. 10. 11. 11:49

[Flex] spark DropDownList MultiSelect 공부/flex2011. 10. 11. 11:49





Application.mxml
<?xml version="1.0" encoding="utf-8"?>
<s:Application xmlns:fx="http://ns.adobe.com/mxml/2009"
      xmlns:s="library://ns.adobe.com/flex/spark"
      xmlns:mx="library://ns.adobe.com/flex/mx" xmlns:component="component.*"
     >
 <fx:Script>
  <![CDATA[
   import mx.collections.ArrayCollection;
   [Bindable]
   public var acList:ArrayCollection = new ArrayCollection([
    {label:"JAVA",selected:false},
    {label:".NET",selected:false},
    {label:"C++",selected:false},
    {label:"FLEX",selected:false}]);
   public function getSelectionLabel():void{
      lbSelections.text = "";
      ddlMultiSelection.labelDisplay.text = "MultiSelected";
      for (var i:int = 0; i < acList.length; i++)
     {
         if(acList[i].selected){
            lbSelections.text += " " + acList[i].label;
          }
      }
   }
  ]]>
 </fx:Script>
 <s:HGroup width="100%" height="100" left="20" top="20" verticalAlign="middle">
      <s:DropDownList id="ddlMultiSelection"
              itemRenderer="renderers.MultiSelectItemRenderer"
              dataProvider="{acList}" close="getSelectionLabel()" />
       <s:Label id="lbSelections" text="Selected Items...."/>
 </s:HGroup>
</s:Application>



MutiSelectItemRenderer.mxml
<?xml version="1.0" encoding="utf-8"?>
<s:ItemRenderer xmlns:fx="http://ns.adobe.com/mxml/2009"
    xmlns:s="library://ns.adobe.com/flex/spark"
    xmlns:mx="library://ns.adobe.com/flex/mx"
    autoDrawBackground="true" width="100%">
 <fx:Script>
  <![CDATA[
   import mx.core.IFlexDisplayObject;
   private function evnetMouseEventControll(event:MouseEvent):void{
       event.stopImmediatePropagation();
   }
   private function eventChangeSelection():void{
       data.selected = checkbox.selected;
   }
  ]]>
 </fx:Script>
 <s:CheckBox id="checkbox"
    width="100%"
    selected="{data.selected}"
    label="{data.label}"
    mouseUp="evnetMouseEventControll(event)"
    mouseDown="evnetMouseEventControll(event)"
    change="eventChangeSelection()"/>
 
</s:ItemRenderer>



결과화면

:
Posted by 알 수 없는 사용자
2011. 10. 5. 14:49

[Flex] CursorManager && Graphic..path.. 공부/flex2011. 10. 5. 14:49


<?xml version="1.0" encoding="utf-8"?>
<s:Application xmlns:fx="http://ns.adobe.com/mxml/2009"
      xmlns:s="library://ns.adobe.com/flex/spark"
      xmlns:mx="library://ns.adobe.com/flex/mx"
      creationComplete="eventInit()">
 <fx:Script>
  <![CDATA[
   import component.CGraphicBase;
   
   import mx.managers.CursorManagerPriority;
   import mx.managers.CursorManager;

   [Bindable]
   [Embed(source="img/tag.png")]
   public var customCursor:Class;
   private function eventInit():void{
        var oItem:Object = new Object();
        oItem.name = "testGraphic";
        oItem.today = new Date();
        //make Graphic
         var oGraphic:CGraphicBase = new CGraphicBase();
        oGraphic.graphicInfo = oItem;
        oGraphic.width =200;
        oGraphic.height = 100;
        oGraphic.x = 100;
        oGraphic.y = 100;
        oGraphic.color = 0xF19232;
        oGraphic.toolTip = oItem.name + "-" + oItem.today.toString();
        oGraphic.reFreshImage();
        oGraphic.addEventListener(MouseEvent.MOUSE_OVER,eventMouseOver);
        oGraphic.addEventListener(MouseEvent.MOUSE_OUT,eventMouseOut);
        bc.addElement(oGraphic);
   }
   private function eventMouseOver(event:MouseEvent):void{
        var oTarget:CGraphicBase = event.currentTarget as CGraphicBase;
        CursorManager.setCursor(customCursor, CursorManagerPriority.HIGH, 3, 2);
   }
   private function eventMouseOut(event:MouseEvent):void{
        var oTarget:CGraphicBase = event.currentTarget as CGraphicBase;
        CursorManager.removeAllCursors();
   }
  ]]>
 </fx:Script>
 <s:BorderContainer id="bc" width="100%" height="100%">
  
 </s:BorderContainer>
</s:Application>
 





CGraphicBase

<?xml version="1.0" encoding="utf-8"?>
<s:Graphic xmlns:fx="http://ns.adobe.com/mxml/2009"
     xmlns:s="library://ns.adobe.com/flex/spark"
     xmlns:mx="library://ns.adobe.com/flex/mx"
     xmlns:common="common.*">
 <fx:Script>
  <![CDATA[
   private var oInfo:Object;
   public function set graphicInfo(value:Object):void{
    oInfo = value;
   }
   public function get graphicInfo():Object{
    return oInfo;
   }
   public function set color(value:uint):void{
    ge.color = value;
   }
   public function set fillAlpha(value:Number):void{
    ge.alpha = value;
   }
   public function get fillAlpha():Number{
    return ge.alpha;
   }
   public function reFreshImage():void{
    btnPath.data = "M 0 0 L "+this.width.toString()+" 0 L "+this.width.toString()+" "+this.height.toString()+" L 0 "+this.height.toString()+ " L 0 0 ";
   }
  ]]>
 </fx:Script>
 <s:Path id="btnPath">        
  <s:fill>
   <s:LinearGradient rotation="90">
    <s:GradientEntry id="ge" color="#F7CB3C" alpha=".6"/>
   </s:LinearGradient>
  </s:fill>       
  <s:stroke>            
   <s:SolidColorStroke id="outline" alpha="1" color="{ge.color}" weight="1" />       
  </s:stroke>    
 </s:Path>
</s:Graphic>



:
Posted by 알 수 없는 사용자
2011. 10. 5. 14:01

[Flex] Spark DataGrid Html ItemRenderer rowheight 공부/flex2011. 10. 5. 14:01



<s:DataGrid id="dg" width="100%" height="100%" dataProvider="{acDGData}" variableRowHeight="true">
     <s:columns>
          <s:ArrayList>
             <s:GridColumn headerText="no." dataField="no"/>
             <s:GridColumn headerText="社員名" dataField="name"/>
             <s:GridColumn headerText="お知らせ" dataField="news" >
                 <s:itemRenderer>
                    <fx:Component>
                        <s:GridItemRenderer>
                            <mx:Text htmlText="{data.news}" width="100%" height="100%"/>
                        </s:GridItemRenderer>
                    </fx:Component>
                </s:itemRenderer>
            </s:GridColumn>
          </s:ArrayList>
     </s:columns>         
 </s:DataGrid>




[Bindable]
public var acDGData:ArrayCollection = new ArrayCollection([{no:1,name:"管理者",news:"お知らせテスト"},{no:2,name:"管理者",news:"お知らせテスト2"}.......]);


'공부 > flex' 카테고리의 다른 글

[Flex] spark DropDownList MultiSelect  (0) 2011.10.11
[Flex] CursorManager && Graphic..path..  (0) 2011.10.05
[Flex]Spark DataGrid HeaderRenderer CheckBox  (0) 2011.10.05
[Flex] Spark DataGrid ItemRenderer  (0) 2011.10.05
[Flex] Date "YYYY/MM/DD"  (2) 2011.09.23
:
Posted by 알 수 없는 사용자
2011. 10. 5. 11:36

[Flex]Spark DataGrid HeaderRenderer CheckBox 공부/flex2011. 10. 5. 11:36

<s:DataGrid id="dg_userlist" width="100%" height="100%"
      styleName="predictBorder"
      doubleClickEnabled="false" gridDoubleClick="eventEditUser()" >
    <s:columns>
     <s:ArrayList>
      <s:GridColumn dataField="check" width="30" itemRenderer="renderers.checkBoxItemRender"
           headerRenderer="renderers.checkBoxHeaderRender" sortable="false"/>
      <s:GridColumn headerText="ユーザーID" dataField="no"/>
      <s:GridColumn headerText="ユーザー名" dataField="emp_name"/>
      <s:GridColumn headerText="職種" dataField="emp_staff"/>
      <s:GridColumn headerText="雇用タイプ" dataField="emp_type"/>
      <s:GridColumn headerText="性別" dataField="emp_sex"/>
     </s:ArrayList>
    </s:columns>
   </s:DataGrid>



<?xml version="1.0" encoding="utf-8"?>
<s:DefaultGridHeaderRenderer xmlns:fx="http://ns.adobe.com/mxml/2009"
        xmlns:s="library://ns.adobe.com/flex/spark"
        xmlns:mx="library://ns.adobe.com/flex/mx" height="30">
 <fx:Script>
  <![CDATA[
   import mx.collections.ArrayCollection;
   import mx.core.FlexGlobals;
   import spark.components.DataGrid;

   public function eventClick(value:Boolean):void{
        var obj:DataGrid = automationOwner as DataGrid;
        var arr:ArrayCollection = obj.dataProvider as ArrayCollection;
        for(var i:int=0 ;i<arr.length; i++){
           arr[i].check = value;
        }
        obj.dataProvider = null;
        obj.dataProvider = arr;
   }
   
  ]]>
 </fx:Script>
   <s:CheckBox id="cb_header" click="eventClick(cb_header.selected)" left="7" top="5"/>
</s:DefaultGridHeaderRenderer>







<?xml version="1.0" encoding="utf-8"?>
<s:GridItemRenderer xmlns:fx="http://ns.adobe.com/mxml/2009"
     xmlns:s="library://ns.adobe.com/flex/spark"
     xmlns:mx="library://ns.adobe.com/flex/mx" clipAndEnableScrolling="true">
 
 <fx:Script>
  <![CDATA[
   import mx.controls.listClasses.ListData;
   private var isChanged:Boolean = false;

 override public function prepare(hasBeenRecycled:Boolean):void {
    if(data){
     lblData.selected = data[column.dataField];
    }else{
     lblData.selected = false;
    }
   }
   public function eventClick():void{
    data[column.dataField] = lblData.selected;
   }
  ]]>
 </fx:Script>
 <s:CheckBox id="lblData" top="9" left="7" click="eventClick()" />
</s:GridItemRenderer>







:
Posted by 알 수 없는 사용자
2011. 10. 5. 11:28

[Flex] Spark DataGrid ItemRenderer 공부/flex2011. 10. 5. 11:28



<s:DataGrid id="dg" width="100%" height="100%" dataProvider="{acDGData}">
         <s:columns>
          <s:ArrayList>
           <s:GridColumn headerText="no." dataField="no"/>
           <s:GridColumn headerText="社員名" dataField="name"/>
           <s:GridColumn headerText="お知らせ" dataField="news">
            <s:itemRenderer>
             <fx:Component>
              <s:GridItemRenderer>
               <s:TextArea text="{data.news}"/>
              </s:GridItemRenderer>
             </fx:Component>
            </s:itemRenderer>
           </s:GridColumn>
          </s:ArrayList>
         </s:columns>         
        </s:DataGrid>
:
Posted by 알 수 없는 사용자
2011. 9. 23. 22:20

[Flex] Date "YYYY/MM/DD" 공부/flex2011. 9. 23. 22:20


import mx.controls.Alert;
   import mx.controls.DateField;
   public var oDay:Array = new Array("日","月","火","水","木","金","土");
   private function eventInit():void{
    var today:Date = new Date();
    Alert.show(DateField.dateToString(today, "YYYY/MM/DD") + "("+oDay[today.day]+")");
   }
* HH:NN:SS 시간 포멧 부분
결과화면

:
Posted by 알 수 없는 사용자
2011. 9. 19. 12:26

[Flex] Application에 Scroller 넣기. 공부/flex2011. 9. 19. 12:26

flex3에서는 Application에 minHeight , minWidth를 정하면 자동으로 스크롤이 생겼는데
spark component로 되면서 스크롤을 따로 넣어주어야 스크롤이 생깁니다.
물론 Application에 width=1000 height=800 이렇게 넣어주면 브라우저가 이 사이즈보다 작아졌을 경우에는 브라우저 자체 스크롤이 생깁니다. 그렇지만 브라우저가 이 사이즈보다 커지면 흰여백으로 채워지기 때문에 width=100% height=100%를 해줘야합니다.

스크롤을 어떻게 써야될까
찾아보니, Application에 SkinClass를 생성해서 body부분이 될 Group컴포넌트를 Scroller로 감싸주면 된다는 것.
<Applicaiont 부분>



<skinClass부분>


  <!--- @copy spark.components.SkinnableContainer#contentGroup -->
  <s:Scroller  width="100%" height="100%">
         <s:Group id="contentGroup" width="100%" height="100%" minWidth="1200" minHeight="824" />
  </s:Scroller>

또는 Application 내부에 Scroller를 넣어 다른 객체들을 감싸는것.


<?xml version="1.0" encoding="utf-8"?>
<s:Application xmlns:fx="http://ns.adobe.com/mxml/2009"
      xmlns:s="library://ns.adobe.com/flex/spark"
      xmlns:mx="library://ns.adobe.com/flex/mx"
     width="100%" height="100%" >
 <fx:Declarations>
  <!-- Place non-visual elements (e.g., services, value objects) here -->
 </fx:Declarations>
 <s:Scroller id="sc" width="100%" height="100%">
  <s:Group id="gr" width="100%" height="100%" >
   <s:BorderContainer id="bc" width="100%" height="100%" minWidth="1200" minHeight="824">
    <s:backgroundFill>
     <s:LinearGradient rotation="90">
      <s:GradientEntry color="0x3D7ACF" alpha=".9" />
      <s:GradientEntry color="0x3D7ACF" alpha=".6" />
      <s:GradientEntry color="0x3D7ACF" alpha=".6" />
      <s:GradientEntry color="0x3D7ACF" alpha=".6" />
      <s:GradientEntry color="0x3D7ACF" alpha=".6" />
      <s:GradientEntry color="0x3D7ACF" alpha=".9" />
     </s:LinearGradient>
    </s:backgroundFill>
    <s:Label id="lb" text="FLEX TEST" color="0xFF0000" fontSize="50"
       top="{(bc.height - lb.height)*0.5 }"
       left="{(bc.width - lb.width)*0.5}"/>
   </s:BorderContainer>
  </s:Group>
 </s:Scroller>
</s:Application>


결과화면.


주의!!
Application과 Scroller에 minHeight또는 minWidth을 지정하지 않는다.
Application과 Scroller의 width height는 100%!!
Scroller안에 Group을 넣고 Group이나 내부컨테이너에 크기지정하기!!


Scroller가 빠져서 가벼워졌을진 모르겠지만 엄청 귀찮아졌네요..-_- 곰방 익숙해지겠지만....

reference: adobe flex 4.5 help
:
Posted by 알 수 없는 사용자






[전체 흐름]

FLEX part 에서 데이터 그리드의 헤더정보와 데이터 정보 그리고 파일이름과 시트이름을 파라미터에 담아서 RemoteObject를 통해 JAVA part로 보내 준다.

JAVA part에서는 POI 프로젝트의 HSSF컴포넌트를 통해 엑셀을 생성하고 가져온 정보를 이용하여 엑셀의 셀과 로우를 생성하여 서버에 엑셀 파일을 저장한다.

다시 FLEX part로 돌아와서 서블릿 호출로 서버에 저장된 엑셀 파일을 다운로드하여 클라이언트에 저장할 수 있다.






















자카르타 POI 프로젝트
      -> POI는 Microsoft 형식 파일을 엑세스 할 수 있도록 제공. 

[컴포넌트]
  • POIFS  :  기본적으로 모든 컴포넌트들이 POIFS를 사용하여 Microsoft 형식문서를 자바로 읽고 쓴다.
  • HSSF   :  엑셀 Excel 파일을 읽고 쓸 수 있다.
  • HWPF   :  워드 Word 파일을 읽고 쓸 수 있다.
  • HPSF   :  Miscrosoft 형식 문서 속성을  사용할 수 있다.
[다운로드]
      자카르타 POI http://www.apache.org/dyn/closer.cgi/poi/release/bin/poi-bin-3.6-20091214.zip
      압축을 풀어 jar 파일을 lib폴더에 추가하여 사용하면 된다.




'공부 > flex' 카테고리의 다른 글

[Flex] Spark DataGrid ItemRenderer  (0) 2011.10.05
[Flex] Date "YYYY/MM/DD"  (2) 2011.09.23
[Flex] Application에 Scroller 넣기.  (1) 2011.09.19
TitleWindow 데이터 보내기  (0) 2010.03.26
datagrid 에서 특정 셀 클릭 제어.(ListEvent)  (0) 2010.02.23
:
Posted by 알 수 없는 사용자