XPLATFORM 101

- Div/PopupDiv > PopupDiv


먼저 설명을 보도록 하겠습니다.

PopupDiv는 하나의 화면에 여러개의 부분화면을 구성할 때 사용하는 컴포넌트입니다.

Division과 비슷한 개념이지만 PopupDiv는 포커스가 있는 경우에만 보여집니다.

즉 일시적으로 사용하는 경우에 유용하게 사용됩니다.


엑스플랫폼에서는 디자인 작업의 편의를 위해서인지

PopupDiv 영역을 화면 내에서 같이 디자인을 하더군요.

visible 속성을 지정할 수 있지만

실제 동작할때에는 팝업 상태에는 true가 되고 그렇지 않은 경우에는 false 가 되기 때문에

isPopup과 같은 메소드로 확인하는 것을 권장하고 있습니다.

그래서 디자인시에 따로 visible 속성을 false 로 처리할 필요는 없습니다.


일반적으로 팝업은 해당 이벤트가 발생하는 위치를 기준으로 새로운 창을 생성합니다.

그래서 이벤트가 발생한 오브젝트를 기준으로 좌표값을 설정합니다.


예제를 다시 보죠.

function Button00_onclick(obj:Button,  e:ClickEventInfo)

{

var ret;

var nX = system.clientToScreenX(obj,0);

var nY = system.clientToScreenY(obj,obj.position.height);

ret = PopupDiv00.trackPopup(nX+10,nY+10);

}

버튼 클릭 이벤트를 받아서 팝업을 생성하는데 해당 좌표값을 이벤트를 발생시킨 버튼을 기준으로 합니다.

system.clientToScreenX 는 원하는 컴포넌트 기준의 좌표값을 스크린 기준의 좌표값으로 바꾸는 API 입니다.

여기서 스크린 기준이라는 것은 사용자가 보는 스크린을 이야기합니다.

듀얼 모니터인 경우에는 2개의 모니터 해상도를 합친 크기가 됩니다.

그렇게 할 필요가 뭐가 있지 싶은데...엑스플랫폼에서 팝업은 메인프레임의 범위를 벗어날 수 있기 때문입니다.



이런 경우에는 프레임 기준으로 좌표값을 잡기 애매하기 때문에 그런듯 합니다.


trackPopup 메소드가 실행되면 자동으로 PopupDiv의 visible 속성은 true 가 됩니다.

그리고 혹 모니터 영역을 벗어나는 경우에는 자동으로 재배치가 된다고 합니다.

* 듀얼 모니터의 경우에는 PopupDiv 의 좌측상단을 기준으로 재배치가 됩니다.

화면 중간에 걸치게 할 수가 없죠.


PopupMenu는 메뉴 컴포넌트의 서브메뉴를 구성하는 컴포넌트라고 합니다.

트리와 비슷하다고 이해하면 될 것 같습니다.

하여튼 이 녀석도 동일하게 trackPopup 메소드를 가지고 있습니다.


trackPopup 메소드는 리턴값을 가지고 있는데

팝업된 객체가 닫히면서 리턴이 됩니다.


예제에 보이는 메뉴스러운 PopupDiv는 별도의 폼으로 구성되어 있는데

다음과 같이 이벤트가 정의되어 있습니다.

function Button00_onclick(obj:Button,  e:ClickEventInfo)

{

this.parent.PopupDiv00.closePopup(obj.text);

}


...


ret = PopupDiv00.trackPopup(nX+10,nY+10);

alert(ret);

this 라는 것은 해당 PopupDiv 를 의미하고 parent 는 form 을 이야기합니다.

* 이 예제에서는 this.closePopup 메소드를 바로 호출해도 무리가 없어 보이는데

저렇게 처리를 했네요. ~~


하여간 창이 닫히면서 텍스트를 넘겨주고 해당 텍스트를 받아서 처리를 합니다.

http://cafe.naver.com/xplatform101/227