이 문제로 조금 삽질 좀 했군!!

<object id='" + id + "'  ....
<embed name='" + id + "'  ...</embed>
</object> 

 IE 일경우 
document.getElementById("swf")

비 IE 일경우 
window.document["
swf"]; 

또한 Object 에는 ID값으로 Embed 에는 name 값으로 한다. 만약 Embed 에도 id 값으로 하게되면 정상적으로 obejct를 얻어오지 못한다. 

		
		/**
		 * 주민번호 유효성체크 로직
		 * @param value 주민번호
		 * @return Boolean
		 */
		public static function checkJumin(value:String) : Boolean {
			var returnValue : Boolean = false;
			var standardNum : String = "234567892345";
			
			value = value.replace(/\-/g, "");
			
			if( value.length == 13 && !isNaN( Number(value) ) ){
				var sum : Number = 0;
				for( var i:int=0; i<12; i++ ){
					sum += parseInt(value.charAt(i)) * parseInt(standardNum.charAt(i));
				}
				
				returnValue = ((11-(sum%11.0))%10.0)==parseInt(value.charAt(12))?true:false;
			}else{
				returnValue = false;
			}
			return returnValue;
		}
			/**
			 * component	표시할 컴포넌트
			 * message		툴팁 메시지
			 * position		툴팁 위치 default: right ect:top,bottom
			 * 해당 컴포넌트에 툴팁을 표시한다.
			 */
			private function showToolTip(component:UIComponent, message:String, position:String="right") : void {
				
				var toolTip : * = ToolTipManager.createToolTip("" , 0,0);
				toolTip.setStyle("fontSize", 12);
				toolTip.setStyle("styleName", "errorTip");
				toolTip.text = message;
				
				var objPoint : Point;
				if( position == "right" ){
					toolTip.setStyle("borderStyle", "errorTipRight");
					objPoint = component.localToGlobal(new Point(component.stage.x+component.width, component.stage.y));
				}else if( position == "top" ){
					toolTip.setStyle("borderStyle", "errorTipAbove");
					objPoint = component.localToGlobal(new Point(component.stage.x, component.stage.y - component.height*2));
				}else if( position == "bottom" ){
					toolTip.setStyle("borderStyle", "errorTipBelow");
					objPoint = component.localToGlobal(new Point(component.stage.x, component.stage.y + component.height));
				}

				var objTMetrix:TextLineMetrics	=component.measureText(message);
				
				toolTip.move(objPoint.x, objPoint.y);
				toolTip.setActualSize(objTMetrix.width+40, objTMetrix.height);
				toolTip.setVisible(true);
				
				component.addEventListener(Event.CHANGE, function(event:Event){
					if( toolTip ){
						ToolTipManager.destroyToolTip(toolTip);
						toolTip = null;
					}
				});
			}

Flex 오른쪽 메뉴를 손쉽게 제어 할수 있는 API가 있었다.
아주 편리하다.
	        private function iniApp() : void {
				var items : ArrayCollection = new ArrayCollection();
				items.addItem( {caption: "Flex", command: onFlexLabelClickHandler} );
				ConfigurableContextMenuBuilder.build(this, items);
	        }
	        private function onFlexLabelClickHandler(event:Event) : void {
			}

private function showProps(b:Button):void {

     var o:Object = ObjectUtil.getClassInfo(b);

     ta1.text = ObjectUtil.toString(o);

}



Excel 내용을 Flex Grid에 표현하려면 가장 일반적인 방법은 Server 에 Upload 후 POI나 JXL OpenSource를 이용하여 읽은 후 Client 로 내린 후 Flex Grid에 뿌리면 되겠다.

하지만 많이 복잡하다.

그리하여 생각한것이 IE에 한정된 방법이긴 하지만 IE제공하는 Excel.Application ActiveX를 이용하는 방법이다.

javascript 에서 Excel을 읽은 후 Flex에 내용을 던저 주는 방식을 사용했다.

우선 Flex에서 해당 파일을 선택 해야 하는데 FileReference 객체를 사용하려 하였다.
하지만 Flex 보안정책상 파일명은 리턴되지만 Client의 파일 경로는 리턴되지 않았다.

그리하여 HTML에서 지원하는 input type="file" 과 javascript 를 이용하여 파일을 선택후 경로 및 파일명을 얻는 방법을 찾았다.

소스 첨부하였다.

this.focusManager.setFocus(IFocusManagerComponent(txtInput));

[출처] http://blog.jidolstar.com/308

var childClassName:String = getQualifiedClassName(child);
var childIsButton:Boolean = childClassName == "mx.controls::Button";

// 툴팁 제거.
var nToolTipCount:Number = this.systemManager.toolTipChildren.numChildren;    
for(var i:Number=nToolTipCount;i>0;i--)
{
     this.systemManager.toolTipChildren.removeChildAt(i-1);
}

+ Recent posts