/******************************************************************************* ★ 설명 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;
} |