티스토리 뷰


플렉스 TextInput의 기능에 화폐단위 표시를 할 수 있게 해준다. 아래 그림 참조



소스는 해외 블로그에서 가져온걸 좀 응용 수정했다.



         import flash.events.FocusEvent;	
	import mx.controls.TextInput;
	import mx.events.FlexEvent;
	import mx.formatters.CurrencyFormatter;
	
	/**
	 * 
	 * 통화(화폐단위) 입력시 사용하는 텍스트 인풋
	 * ex) 
	 * curSymbol 지정에 따라 원하는 통화표시를 사용 가능 
	 * ex) 
	 * 아무값도 안주면 기본 ₩로 나옴
	 * ex) 
	 **/
	
	public class currencyTextInput extends TextInput
	{
		private var reg:RegExp = /[,$]/g;
		private var formatter:CurrencyFormatter = null;
		public var curSymbol:String;
		
		override public function get text():String
		{
			return super.text.replace(reg, "");
		}
		
		private function createdHandler(event:FlexEvent):void
		{
			curSymbol = this.curSymbol;
			formatter = new CurrencyFormatter();						
			if(curSymbol == null)
			{
				formatter.currencySymbol = "₩";
			}else{
				formatter.currencySymbol = curSymbol;
			}
		}
		
		private function init():void
		{
			addEventListener(FlexEvent.CREATION_COMPLETE, createdHandler);
		}
		
		
		public function currencyTextInput()
		{
			init();
			this.setStyle("textAlign","right");
		}
		
		override protected function focusOutHandler(event:FocusEvent):void
		{
			text = formatter.format(text);
			super.focusOutHandler(event);
		}
		
		override protected function focusInHandler(event:FocusEvent):void
		{
			text = text.replace(reg, "");			
			super.focusInHandler(event);
		}
	}
댓글