[ Nexacro.Form -  POP_UP창 ]

 


/*******************************************************************************
 ★ 설명
     Modal Dialog실행 함수
 ★ parameter
    _NewChildFrame()참조
 ★ return
    - 성공 = variant ( Dialog창에서 close()에 의해 Return된 값 )
    - 실패 = ""
 ******************************************************************************/

function Dialog(sID, sURL, sArg, nLeft, nTop, nWidth, nHeight, sStyle, sProp)

{

 var rtn=null;

 var newChild;

 var MyFrame = this.getOwnerFrame();

 

 newChild = _NewChildFrame(sID, sURL, sArg, nLeft, nTop, nWidth, nHeight, sStyle, sProp);

 rtn = newChild.showModal(sID, MyFrame, sArg);

 this.removeChild(newChild.name);

 newChild.destroy();

 newChild = null;

 

 if( fn_IsNull(rtn) ) rtn = "";

 

 return rtn;

}

 

/*******************************************************************************
 ★ 설명
     Modaless Dialog실행 함수
 ★ parameter
    _NewChildFrame()참조
 ★ return
    - 성공 = true ( 정상작동여부 )
    - 실패 = false
 ******************************************************************************/

function Open(sID, sURL, sArg, nLeft, nTop, nWidth, nHeight, sStyle, sProp)

{

 var rtn;

 var newChild;

 var MyFrame = this.getOwnerFrame();

 

 newChild = _NewChildFrame(sID, sURL, sArg, nLeft, nTop, nWidth, nHeight, sStyle, sProp);

 

 return newChild.showModeless(sID, MyFrame, sArg);

}

 

/*******************************************************************************
 ★ 설명
     sObjName이 Popup창(showModaless()에 의해 뜬창)인지 확인한다.
     단, showModal()에 의해 뜬 창은 해당되지 않는다.
 ★ parameter
    1. sObjName : Popup창 여부를 확인할 Object Name
 ★ return
    - sObjName이 Popup창인 경우 = true
    - sObjName이 Popup창이 아닌 경우 = false
 ★ 주의사항
    단, showModal()에 의해 뜬 창은 해당되지 않는다.
 ******************************************************************************/

function IsObjPopup(sPopupName)

{

 if( fn_IsNull(sPopupName) ) return false;

 

 if( fn_IsNull(application.popupframes(sPopupName)) )

  return false;

 else

  return true;

}

 


/*******************************************************************************
 ★ 설명
    Dialog(), Open()실행용 공통함수.
    ※ 단, 내부에서 사용하는 함수임     
 ★ parameter
    1. sID     : Dialog ID ( 예 : "id1" )         
    2. sURL    : Form URL ( 예 : "Base::a.xfdl" )
    3. Arg    : Dialog 로 전달될 Argument  
                 ( 예1 : {a:'b',c:'d'}  ==> 꼭, {}로 싸야 되고 위의 예 처럼 해야 된다. )
                 ( 예2 : var arr = new Array();
      arr["a"] = "b";
      arr["c"] = "d";  ==> 이래 한 후에 arr넘김 )
 
    4. nLeft   : Dialog창의 Left Position ( 옵션 : Default = 현재화면 중앙 ) ( 예 : -1 또는 100 )
                 (단, 음수또는 null이면 현재화면 중앙에 위치)
    5. nTop    : Dialog창의 Top Position ( 옵션 : Default = 현재화면 중앙 ) ( 예 : -1 또는 100 )
                 (단, 음수또는 null이면 현재화면 중앙에 위치)
    6. nWidth  : Dialog창의 Width ( 옵션 : Default = Popup화면의 width ) ( 예 : -1 또는 100 )
                 (단, 음수또는 null이면 Popup화면의 width)
    7. nHeight : Dialog창의 Height ( 옵션 : Default = Popup화면의 height ) ( 예 : -1 또는 100 )
    (단, 음수또는 null이면 Popup화면의 width)
    8. sStyle  : Dialog Open 기본 유형 (옵션 : Default = "" ) ( 예 : "title=true,status=true" )
                 (단, 간단히 지정하도록 처리했으므로 ChildFrame의 Property명과 동일하지는 않다.)
        - title  : Title Bar표시여부 ( Default = true ) ( true = Title Bar 표시 )
        - status : Status Bar표시여부 ( Default = true ) ( true = Status Bar 표시 )
        - close  : Close Button활성화 여부 ( Default = true ) ( true = Close Button활성화 )
        - min    : min Button활성화 여부 ( Default = true )  ( true = Min Button 활성화 )
        - max    : min Button활성화 여부 ( Default = true )  ( true = Max Button 활성화 )
    9. sProp   : Child Frame의 모든 Property를 Property명=Property값, Property명=Property값,... 형태로 설정한다.
                 (옵션 : Default = "") ( 예 : "titletext='a', style.border='1 solid blue', ... )
                 ( 단, sStyle에 동일한 처리가 있으면 sProp가 적용된다.
                   즉, sStyle="title=true", sProp="showtitlebar=false"라면 Title Bar는 표시되지 않는다.
 ★ return
    - 성공 = Child Frame Object
    - 실패 = null
 ★ 주의사항
    1. nLeft, nTop이 null이거나 음수이면 현재화면의 중앙에 위치함
    2. nWidth, nHeight이 하나라도 null이거나 음수이면 Popup화면의 width, height가 설정됨
       따라서, nWidth, nHeight를 설정하고 싶으면 두 값 모두 양수값을 확실히 설정해야 한다.
    3. 조금더, 자세하게 Popup화면을 제어하고 싶으면 ( 예를 들어, scrollbar, border등 )
       sProp에 지정하거나 Dialog창의 Frame을 얻어 직접제어할 것
    4. nLeft, nTop, nWidth, nHeight의 좌표계는 screen기준 좌표계임에 주의할것       
 ★ Bug
    1. sStyle에서 2009.12.10일 현재 min, max, status 잘안됨(???(모름 - Theme때문인가?))
    2. bAutoSize = true인 경우 Popup창의 position을 체크하면 값이 잘 안나옴(???(모름))
    3. ChildFrame.init()에서 좌표처리에 BUG있음(???(모름))
    4. ChildFrame.resizable=true 안먹네(???(모름))
 ******************************************************************************/

function _NewChildFrame( sID, sURL, Arg, nLeft, nTop, nWidth, nHeight, sStyle, sProp)

{

 var newChild = null;

 var MyFrame = this.getOwnerFrame();

 

 var bTitle = true;

 var bStatus = true;

 var bClose = true;

 var bMin = true;

 var bMax = true;

 var bAutoSize = true;

 var flag;

 var aProp = new Array();

 

 if( fn_IsNull(sID) || fn_IsNull(sURL) ) return null;

 

 newChild = new ChildFrame;

 

 if( fn_IsNull(nLeft) || nLeft < 0 )

  newChild.openalign.halign = "center";

 if( fn_IsNull(nTop) || nTop < 0 )

  newChild.openalign.valign = "center";

 if( fn_IsNull(nWidth) || nWidth < 0 ||

    fn_IsNull(nHeight) || nHeight < 0 )

 {

  nWidth = 0;

  nHeight = 0;

  bAutoSize = true;

 }

 else

  bAutoSize = false;

  

 if( fn_IsNull(sStyle) == false )

 {

  var i, arr, arr1;

  arr = sStyle.split(",");

  for( i = 0 ; i < arr.length ; i++ )

  {

   arr1 = arr[i].split("=");

   arr1[0] = RTrim(LTrim(arr1[0]));

   arr1[1] = RTrim(LTrim(arr1[1]));  

   if( arr1[1].toLowerCase() == "true" )  flag = true;

   else          flag = false;

   

   if( arr1[0].toLowerCase() == "title" )   bTitle = flag;

   if( arr1[0].toLowerCase() == "status" )  bStatus = flag;

   if( arr1[0].toLowerCase() == "close" )   bClose = flag;   

   if( arr1[0].toLowerCase() == "min" )   bMin = flag;   

   if( arr1[0].toLowerCase() == "max" )   bMax = flag;      

  }

 }

 

 if( fn_IsNull(sProp) == false )

 {

  var i;

  aProp = sProp.split(",");

  for( i = 0 ; i < aProp.length ; i++ )

  {

   aProp[i] = aProp[i].split("=");

   aProp[i][0] = RTrim(LTrim(aProp[i][0]));

   aProp[i][1] = RTrim(LTrim(aProp[i][1]));

  }

 }

 

 newChild.formurl = sURL;

 

 ////// sStyle내용 적용( 이부분은 init()호출전에 사용해야 함 )

 newChild.showtitlebar = bTitle;

 newChild.showstatusbar = bStatus;   

 newChild.autosize = bAutoSize;

 

 newChild.init(sID, nLeft, nTop, nLeft + nWidth, nTop + nHeight);

 

 ////// sStyle내용 적용( 이부분은 init()호출후에 사용해야 함 )

 newChild.titlebar.minbutton.enable = bMin;  

 newChild.titlebar.maxbutton.enable = bMax;  

 newChild.titlebar.closebutton.enable = bClose;

 

 MyFrame.addChild(sID, newChild); // 이거 꼭 해야 함

 ////// sProp내용 적용

 for( i = 0 ; i < aProp.length ; i++ )

 {

  SetProp( "this.getOwnerFrame()."+sID, aProp[i][0], aProp[i][1] );

 }

 MyFrame.removeChild(sID);   // 이거 꼭 해야 함

 

 return newChild;

}

☞  

 

☞  

 
 
 
 

  

'Nexacro-Function > Form.PouUp' 카테고리의 다른 글

Nexacro.Form - showModeless  (0) 2017.01.28
Posted by 농부지기
,