반응형
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 |