본문 바로가기
문과생애긔개발자_공부/기타

넥사크로14 왕기초

by animeel 2022. 8. 26.

넥사크로 왕기초에 대해 끄적여보겠습니다. (저번에 넥사언급했던 글의 후속을 하나 써야될 것 같은 압박)

하지만 언제나처럼 왕기초니까 각오해라

 

화면구성

넥사크로 스튜디오는 다음과 같이 구성돼있습니다. (재탕)

1. Project Explorer

2. Properties

3. Output

이 세개의 화면 창은 마우스로 당겨서 비율이나 위치를 조정할 수 있습니다. 

핀으로 가렸다가 썼다가 할 수도 있고요.

만약에 세개의 화면을 잘못해서 꺼졌다? 마우스 우클릭하면 다시 열 수 있습니다.

 

Dataset이란

넥사크로에서 중요개념은 dataset인데 데이터를 담아두는 object입니다.

상단에 여러가지 컴포넌트들을 사용하기 위한 bar가 있는데 거기서 데이타셋을 끌어다가 화면에 넣어보면

그리드나 콤보박스 등 다른 것과는 달리 아무 일도 일어나지 않는다는 것을 알 수 있습니다.

위에 언급한 컴포넌트들은 바로 화면에 나타나죠.

 

Dataset 생성

퀵바에서 dataset을 클릭하고 화면 클릭하면 invisible object에 Dataset00과 같이 생성됩니다.

위에 말한대로 당연히 화면에는 안보입니다. 인비저블~~

db자료 없이도 Dataset Contents Editor 화면에서 data를 생성해 row값 넣고 실습해볼 수 있습니다.

 

DataBinding

또 넥사크로 주요개념 중 하나인 데이터바인딩을 보면

이러한 데이터셋과 컴포넌트들을 get, set 없이 연결해준다는 것입니다.

만약에 코드로 표현한다면 script에서 getColumn, setColumn 등 해줘야 할게 있겠죠.

그런 것을 화면상에서 조절할 수 있는 기능이라고 보시면 됩니다.

 

Project 구성

프로젝트를 만들면 service와 form이 만들어지는데 이 form은 xfdl이라고 보시면 되고 service는 경로와 유사개념이라고 보시면 됩니다.

form으로 하나의 화면을 만들면 무조건 하나의 service가 존재해야되고 그 service 안에 form이 들어가있는 것이죵

그리하여 넥사크로 파일의 경우 아래와 같이 적게 됩니다.

Work::Hello.xfdl

Work라는 Service 명 밑에 Hello.xfdl이라는 화면이 있다는 경로를 표시해주는 것입니다.

서비스명은 대소문자를 구분하기 때문에 유의 하세요~

왼쪽 Project에서 Type Definition을 더블클릭하면 상단 컬럼중 Service가 있습니다.

 

Scope란?

범위 개념으로 이 화면, 이 파일, 이 폼을 말한다고 생각하면 됩니다.

아래 예시를 보면 this.으로 뒤에 올 함수 안에 접근 하는 것입니다.

 

Script 규칙

alert();를 사용한다고 예를 들어보죠.

넥사크로에서는 scope가 붙어야 동작합니다.

this. 아마 많이 사용하시게 될 건데요 this.까지 치시거나 ctrl +spacebar 누르시면 완성창이 나와서 대충 들어갈 만한 메소드나 속성 등을 넣을 수 있습니다.

색은 3가지로

-> 메소드, 함수

-> properties 속성

-> 컴포넌트 id

 

Alert vs Trace

개발시 확인할 때 alert과 trace를 많이 사용하는데요 위의 scirpt 규칙에 맞게 써보면 alert창은 아래와 같이 쓸수 있겠죵

this.alert("Hello"); 

하지만 alert은 일일이 클릭해서 꺼줘야하기 때문에 매우 귀찮습니다^^... 그래서 보통 trace를 많이 사용합니다.

F1에서 trace를 검색해보면 application으로 scope를 준다고 나와있습니다. 

application.trace("Hello");

하지만 trace는 application을 생략하고

trace("Hello");로 써줘도 동작합니다~ 뀰팁

trace는 output창에 추적 log를 남기는 메소드이기 때문에 alert처럼 매번 꺼줄 필요가 없습니다.

 

속성값 변경, 가져오기

script에서 값 변경을 하려면 set_을 붙여줘야합니다. 언더바 중요!

this.button00.set_text("btn_Hello");

button00의 텍스트값을 btn_Hello로 바꿔준다는 뜻입니다.

차암 쉽죠? ^^

하지만 속성값을 가져올 때는 get_을 쓰지 않습니다. 

this.button00.text

 

function구성

이벤트를 넣기 위해서 번개표시를 눌러서 원하는 셀에 더블클릭하면 아래와 같은 event가 생성됩니다.

this.gfn_grid_onheadclick = function(obj:Grid, e:nexacro.GridClickEventInfo)
{
	
}

obj는 event로 호출한 component 자신을 의미합니다. e는 클릭이벤트 인포를 뜻합니다.

obj를 쓸 수 있는 곳에는 obj를 써주는게 좋습니다.

this.button00에서 버튼명을 바꾸게 되면 나중에 id값이 다르기때문에 이벤트가 발생 안하게 되는 문제점이 생기는데

처음부터 obj로 써주면 이벤트가 문제 없이 돌아가게 되는것이죵

1. this.button00.set_text("얼씨구");

2. obj.set_text("얼씨구");

button01로 id변경시 2번만 이벤트가 발생합니다~

 

일반 Bind와 Inner의 차이점

bind는 값을 매칭해주는 것이고 inner는 아이템이나 리스트를 구축할때 사용한다고 생각하시면 됩니다.

 

 

 

오늘은 이쯤만 하겠읍니다..^^