본문 바로가기

Frontend/Nexacro

[넥사크로] Form, Common

반응형

1. Form

1 - 1 구성요소

1) Property

all : 
components : 
objects : 

2) Method

addChild : Form 생성 후 Application에 붙이는 것
alert : Message 뿌리기
getFocus : 특정 컴포넌트로 Focus 이동
isValidObject : 컴포넌트 존재 유무 체크
setTimer : 일정 시간에 한번 씩 Event발생
killTimer : Timer 기능 멈춤
transaction : 데이터 가져오는 Method

3) Event

onactive : 화면 전환 후 돌아올 때 발생
onbeforeclose : Form이 닫히기 전에 발생
oninit : Form이 로딩될 때
onload : 모든 컴포넌트 로딩 후 발생
ontimer : Timer 연결 시 동작

1 - 2 실습코드

1) Form 정보 조회

this.btn_Exe1_1_onclick = function(obj:nexacro.Button,e:nexacro.ClickEventInfo)
{
// var arrObj = this.all; //this.components;
 
        // 전부 나오지 않고 상위 컴포넌트만 나옴
// for(var i=0; i<arrObj.length; i++)
// {
// trace(arrObj[i] + " : " + arrObj[i].name);
// }
    
this.fn_compList(this);
};
 
this.fn_compList = function(pObj)
{
var arrObj = pObj.all; // visibla + invisible
// var arrObj = pObj.components; // visible만
//      var arrObj = pObj.objects; // invisible만
 
for(var i=0; i<arrObj.length; i++)
{
trace(pObj.parent + " : " + pObj.valueOf() + " : " + arrObj[i] + " : " + arrObj[i].name);
 
var sType = arrObj[i].valueOf();
if(sType == "[object Div]"){
this.fn_compList(arrObj[i].form);
}
else if(sType == "[object Tab]"){
for(var j=0; j<arrObj[i].tabpages.length; j++){
//trace( arrObj[i].valueOf() + " : " + arrObj[i].tabpages[j].name);
this.fn_compList(arrObj[i].tabpages[j].form);
}
}
}
}

2) String을 Object로 변환

this.btn_Exe1_2_onclick = function(obj:nexacro.Button,e:nexacro.ClickEventInfo)
{
        // eval함수는 신뢰할 수 없는 코드라도 무조건 실행하기 때문에 보안의 문제로 사용 금지
        // var sGridID = this.Grid3.name;
        // sGridID = eval("this." +sGridID);
        // trace(sGridID + " : " + typeof sGridID);
 
var sGridID = this.Grid3.name;
trace(sGridID + " : " + typeof sGridID);
 
var objGrid = this.components[sGridID];
trace(objGrid + " : " + typeof objGrid);
};

3) Timer을 통한 시간 표현

this.btn_Exe2_1_onclick = function(obj:nexacro.Button,e:nexacro.ClickEventInfo)
{
// this.fn_getTime();
        // (TimerId, Interval(단위 : ms))
this.setTimer(123, 1000);
};
 
this.fn_getTime = function()
{
var objDate = new Date();
    var nH = objDate.getHours("h");
    var nM = objDate.getMinutes();
    var nS = objDate.getSeconds();
 
    var sH = (nH.toString().length < 2 ? "0" + nH.toString() : nH.toString());
    var sM = (nM.toString().length < 2 ? "0" + nM.toString() : nM.toString());
    var sS = (nS.toString().length < 2 ? "0" + nS.toString() : nS.toString());
 
this.Static2.set_text(sH + " : " + sM + " : " + sS);
}
 
this.Exe_Form_ontimer = function(obj:nexacro.Form,e:nexacro.TimerEventInfo)
{
if(e.timerid == 123){
this.fn_getTime();
}
};

4) Timer 중지

this.btn_Exe2_2_onclick = function(obj:nexacro.Button,e:nexacro.ClickEventInfo)
{
this.killTimer(123);
};

5) 모달방식 Popup, 값 전달

this.btn_Exe3_1_onclick = function(obj:nexacro.Button,e:nexacro.ClickEventInfo)
{
var objChildFrame = new ChildFrame();
objChildFrame.init("chf_popup1"
                  , 0
  , 0
  , 400
  , 300
  , null
  , null
  , "Exe::Exe_Form_Popup.xfdl");
 
objChildFrame.set_openalign("center middle");
objChildFrame.set_overlaycolor("RGBA(196,196,196,0.5)")
objChildFrame.set_dragmovetype("all");
// objChildFrame.set_resizable(false);
// objChildFrame.set_showstatusbar(false);
 
var objParam = { param1:this.Edit3_1.value
               , param2:this.Edit3_2.value
   , param3:this.Dataset3 };
   
objChildFrame.showModal( this.getOwnerFrame()
                       , objParam
   , this
   , "fn_popupCallback");
};
 
 
this.fn_popupCallback = function(strPopupID, strReturn)
{
if(strReturn == undefined){
return;
}
 
if(strPopupID == "chf_popup1"){
trace("Return Value: " + strReturn);
var arrRtn = strReturn.split(":");
this.Edit3_1.set_value(arrRtn[0]);
this.Edit3_2.set_value(arrRtn[1]);
}
};

6) 모달리스 Popup, 값 전달

this.btn_Exe3_3_onclick = function(obj:nexacro.Button,e:nexacro.ClickEventInfo)
{
var nW = 400;
var nH = 300;
 
var objApp = nexacro.getApplication();
var nLeft = (objApp.mainframe.width  / 2) - Math.round(nW / 2);
var nTop  = (objApp.mainframe.height / 2) - Math.round(nH / 2) ;
 
nLeft = system.clientToScreenX(this, nLeft);
nTop  = system.clientToScreenY(this, nTop);
 
var sOpenStyle = "showtitlebar=true showstatusbar=false "
               + "resizable=true autosize=true titletext=Modeless Popup";
 
var objParam = { param1:this.Edit3_1.value
               , param2:this.Edit3_2.value
   , param3:this.Dataset3 };
 
nexacro.open("chf_popup2"
           , "Exe::Exe_Form_Popup.xfdl"
   , this.getOwnerFrame()
   , objParam
   , sOpenStyle
   , nLeft
   , nTop
   , nW
   , nH
   , this);
 
};
 
 
this.fn_return = function(objDs)
{
    this.Dataset3.copyData(objDs);
trace(objDs.saveXML());
}

7) 부모 창에서 Pop창 오브젝트로 접근

this.btn_Exe3_5_onclick = function(obj:nexacro.Button,e:nexacro.ClickEventInfo)
{
var objPopup = nexacro.getPopupFrames();
for(var i=0; i<objPopup.length; i++)
{
var sPopup = objPopup[i].name;
trace("sPopup == " + sPopup);
}
 
var sRtn = objPopup["chf_popup2"].form.Edit3_1.value;
trace("Pupup Edit3_1 Value="+sRtn);
};
 

2. Common

1 - 1 구성요소

1) Position : 화면 위치
2) Arragement : 상대 좌표

1 - 2 실습 코드

1) 

this.btn_Exe1_2_onclick = function(obj:nexacro.Button,e:nexacro.ClickEventInfo)
{
var nW1 = obj.width;
var nW2 = obj.getOffsetWidth();
var nW3 = obj.getPixelWidth();
 
trace(nW1 + " : " + nW2 + " : " + nW3);
};

2)

this.btn_Exe1_5_onclick = function(obj:nexacro.Button,e:nexacro.ClickEventInfo)
{
var nW1 = obj.width;
var nW2 = obj.getOffsetWidth();
var nW3 = obj.getPixelWidth();
 
trace(nW1 + " : " + nW2 + " : " + nW3);
};
 
this.btn_Exe1_6_onclick = function(obj:nexacro.Button,e:nexacro.ClickEventInfo)
{
var nL1 = obj.left;
var nL2 = obj.getOffsetLeft();
var nL3 = obj.getPixelLeft();
 
trace(nL1 + " : " + nL2 + " : " + nL3);
};

3) 폼에 컴포넌트 생성

this.btn_Exe2_1_onclick = function(obj:nexacro.Button,e:nexacro.ClickEventInfo)
{
var objBtn = new Button();
objBtn.init("btn_Comp", 10, 250, 150, 50);
this.addChild("btn_Comp", objBtn);
/*objBtn.set_text("Created Button");*/
objBtn.show();
 
};

4) 폼에 컴포넌트 삭제

this.btn_Exe2_2_onclick = function(obj:nexacro.Button,e:nexacro.ClickEventInfo)
{
var objBtn = this.removeChild("btn_Comp"); 
objBtn.destroy(); 
objBtn = null;
 
};

5) Div에 컴포넌트 생성

this.btn_Exe2_3_onclick = function(obj:nexacro.Button,e:nexacro.ClickEventInfo)
{
var objDivBtn = new Button();
objDivBtn.init("btn_divComp", 10, 10, 150, 50);
this.Div2.form.addChild("btn_divComp", objDivBtn);
objDivBtn.set_text("Created Div Button");
objDivBtn.show();
};

6) Div에 컴포넌트 삭제

this.btn_Exe2_4_onclick = function(obj:nexacro.Button,e:nexacro.ClickEventInfo)
{
var objBtn = this.Div2.form.removeChild("btn_divComp"); 
objBtn.destroy(); 
objBtn = null;
 
};

7) 이벤트 핸들러 추가

this.btn_Exe2_5_onclick = function(obj:nexacro.Button,e:nexacro.ClickEventInfo)
{
if(!this.isValidObject(this.btn_Comp)){
this.btn_Exe2_1_onclick();
}
this.btn_Comp.addEventHandler("onclick", this.fn_temp, this);
 
};
 
this.fn_temp = function()
{
this.alert("Add Event Handler");
};

8) 데이터 바인딩 스크립트

this.btn_Exe2_6_onclick = function(obj:nexacro.Button,e:nexacro.ClickEventInfo)
{
var objBindItem = new BindItem();
objBindItem.init("item00", "btn_Comp", "text", "Dataset2", "COL_NAME");
this.addChild("item00", objBindItem);
objBindItem.bind();
 
objBindItem = new BindItem();
objBindItem.init("item01", "btn_Comp", "width", "Dataset2", "COL_SIZE");
this.addChild("item01", objBindItem);
objBindItem.bind();
 
objBindItem = new BindItem();
objBindItem.init("item02", "btn_Comp", "background", "Dataset2", "COL_COLOR");
this.addChild("item02", objBindItem);
objBindItem.bind();
 
};
 
반응형

'Frontend > Nexacro' 카테고리의 다른 글

[넥사크로] PopupDiv  (0) 2023.07.07
[넥사크로] Grid  (0) 2023.07.07
[넥사크로] Dataset  (0) 2023.07.07
[넥사크로] 넥사크로 플랫폼 이용 개발 시 주의사항  (0) 2023.07.07
[넥사크로] 다시 해보기  (0) 2023.07.07