본문 바로가기
프로그래밍/Nexacro 17

2022년 2월 16일 - Form에 생성되어 있는 컴포넌트 정보 구하기, String 값을 Object로 만들기

by 철제백조 2022. 2. 16.

http://demo.nexacro.com/EduPlay/_web_/index.html?version= 

 

http://demo.nexacro.com/EduPlay/_web_/index.html?version=

 

demo.nexacro.com

 

 

 

//폼에 생성되어 있는 오브젝트/컴포넌트 정보를 구하기
this.Button00_onclick = function(obj:nexacro.Button,e:nexacro.ClickEventInfo)
{
	//all : 컴포넌트 목록, invisible, Object, Bind 정보까지 가지고 있는 속성
	var arrObj = this.all;
	
	//컴포넌트의 목록만 가지고 있는 속성
	//this.component
	
	var sText = "";
	
	for(var i=0; i<arrObj.length; i++){
		
		//Object와 id값 구하기
		sText += arrObj[i] + " : " + arrObj[i].id + "\n";
	}
	
	
	//컨테이너 컴포넌트(Div)에 그려놨던 버튼이나 그리드 등은 형제 취급되기에 찍히지 않는다.
	//컴포넌트 밖에 있으면 이름만 부르면 되지만, 컨테이너 컴포넌트 안에 있으면 항상 컨테이너 컴포넌트를 지나쳐야 한다.
	this.txt_result.set_value(sText);
};


//컨테이너 컴포넌트의 오브젝트/컴포넌트도 포함해서 정보 구하기
this.Button01_onclick = function(obj:nexacro.Button,e:nexacro.ClickEventInfo)
{
	//함수를 생성하고 오브젝트를 함수로 받음
	this.fn_compList(this);
};


var sText ="";

//다른 컴포넌트를 포함하고 있는 Div나 tab 같은 경우, 안쪽에 컴포넌트가 있는지 확인하고 조건에 따라 다시함수 호출 - 재귀함수
this.fn_compList = function(pObj){

	//폼이 아닌 파라미터로 받은 Object를 Form으로 함수를 호출하여 그 안의 컴포넌트 목록 정보를 구한다.
	var arrObj = pObj.all;
	
	for(var i=0; i<arrObj.length; i++){
		
		//Object와 id 구하기
		sText += pObj.parent + " : " + arrObj[i] + " : " + arrObj[i].id + "\n";
		
		//오브젝트의 원시값
		var sType = arrObj[i].valueOf();
		
		//원시값이 Div일 경우 - !!!여기서 분리작업!!!
		if(sType == "[object Div]"){
		
			//div를 폼으로 재귀함수 호출
			//하위로 담아서
			this.fn_compList(arrObj[i].form);
		}
		
		
		//Tab은 없지만 만들어두기
		else if(sType == "[object Tab]"){
			for(var j=0; j<arrObj[i].tabpages.length; j++){
				this.fn_compList(arrObj[i].tabpages[j].form);
			}
		}
	}
	
	
	this.txt_result.set_value(sText);
}


//문자열을 입력받아 그 문자열을 Object로 처리한 후, 결과를 반환하는 eval 함수가 존재
//하지만 eval 함수는 어떤 코드라도 무조건 실행하기에 보안 문제 발생
//그렇기에 권장하지 않음

//그렇기에 String으로 받은 ObjectID를 eval이 아닌 다른 방법으로 Object 처리하는 방법 구현
this.Button02_onclick = function(obj:nexacro.Button,e:nexacro.ClickEventInfo)
{
	//Button의 name 구하기
	var sID = this.Button02.name;
	
	//!!!구해온 sID를 this.component로 Object화 하기!!!
	var objID = this.components[sID];
	
	var sText = sID + " : " + typeof sID + "\n";
		sText += objID + " : " + typeof objID;
	
	
	//String이었던 name이 버튼 obj로 변경된 것 확인
	this.txt_result.set_value(sText);
};

 

 

댓글