cp_checkboxList.xfdl 20 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715
  1. <?xml version="1.0" encoding="utf-8"?>
  2. <FDL version="1.5">
  3. <TypeDefinition url="..\default_typedef.xml"/>
  4. <Form id="cp_checkboxList" classname="cp_periodCal" inheritanceid="" position="absolute 0 0 100 20" titletext="CheckBox List" scrollbars="none" onload="cp_checkboxList_onload" col="1" row="1" style="background:transparent;" cellspacing="2" vcellspacing="0" itemWidth="100" itemHeight="20" overflow="visible">
  5. <Layouts>
  6. <Layout>
  7. <CheckBox id="chk_Tmp" taborder="0" text="CheckboxList" position="absolute 0 0 100 20"/>
  8. </Layout>
  9. </Layouts>
  10. <Objects>
  11. <Dataset id="ds_checkList" firefirstcount="0" firenextcount="0" useclientlayout="false" updatecontrol="true" enableevent="true" loadkeymode="keep" loadfiltermode="keep" reversesubsum="false">
  12. <ColumnInfo>
  13. <Column id="val" type="STRING" size="256"/>
  14. <Column id="txt" type="STRING" size="256"/>
  15. </ColumnInfo>
  16. </Dataset>
  17. </Objects>
  18. <Script type="xscript4.0"><![CDATA[/***************************************************************************************
  19. * System Name : himed2
  20. * Job Name : Composite
  21. * File Name : cp_checkboxList.xfdl
  22. * Creator : TOBESOFT
  23. * Make Date : 2014.03.24
  24. *
  25. * Description : multi checkbox
  26. *---------------------------------------------------------------------------------------
  27. * Modify Date Modifier Modify Description
  28. *---------------------------------------------------------------------------------------
  29. * 2013.01.18 TOBESOFT Initial Make Program
  30. *
  31. *---------------------------------------------------------------------------------------
  32. ****************************************************************************************/
  33. /* 참고사항
  34. * User Properties
  35. col : 아이템 열의 개수
  36. row : 아이템 행의 개수
  37. cellspacing : 아이템 간의 열 간격
  38. vcellspacing : 아이템간 행 간격
  39. itemWidth : 아이템 넓이
  40. itemHeight : 아이템 높이
  41. overflow: form의 형태를 설정한다.
  42. ("visible" : checkbox의 크기만큼 늘여준다.
  43. "hidden" : form의 크기를 늘이지 않고 그대로 둔다.
  44. "scroll" : 크기를 그대로 두고 scroll을 생성한다.)
  45. */
  46. //=======================================================================================
  47. // Common Lib Include
  48. //---------------------------------------------------------------------------------------
  49. include "com_commonxp::comm_ds.xjs";
  50. //=======================================================================================
  51. // Global Form Variable
  52. //---------------------------------------------------------------------------------------
  53. var iv_event; //event
  54. var objForm; //form Object
  55. /****************************************************************************************
  56. * Description : Form Initialization
  57. * Argument : obj : Object Event has occurred
  58. * : e : Event Object
  59. * return :
  60. ****************************************************************************************/
  61. function cp_checkboxList_onload(obj:Form, e:LoadEventInfo)
  62. {
  63. objForm = obj;
  64. }
  65. //=======================================================================================
  66. // Event
  67. //---------------------------------------------------------------------------------------
  68. function ufn_event_onchanged(obj:CheckBox, e:CheckBoxChangeEventInfo)
  69. {
  70. if(!ufn_isNull(iv_event)) ufn_compositeEvent(iv_event,obj.name);
  71. }
  72. //=======================================================================================
  73. // User Function
  74. //---------------------------------------------------------------------------------------
  75. /****************************************************************************************
  76. * Description : form init setting
  77. * Argument : String sProp - uset properties
  78. * Object objDs - dataset object
  79. * String sColVal - value column
  80. * String sColTxt - text column
  81. * String sEvent - event function
  82. * @return N / A
  83. * ex)setInitProperty("col=2,row=1")
  84. ****************************************************************************************/
  85. function setInitComp(sProp, objDs, sColVal, sColTxt, sEvent)
  86. {
  87. //InitProperty
  88. if(!ufn_isNull(sProp))
  89. {
  90. setInitProperty(sProp);
  91. }
  92. //BindDataset
  93. if(!(ufn_isNull(objDs) || ufn_isNull(sColVal) || ufn_isNull(sColTxt)))
  94. {
  95. setBindDataset(objDs, sColVal, sColTxt);
  96. }
  97. //setCallEvent
  98. if(!ufn_isNull(sEvent))
  99. {
  100. setCallEvent(sEvent);
  101. }
  102. }
  103. /****************************************************************************************
  104. * Description : user property setting
  105. * Argument : String sVal
  106. * @return N / A
  107. * ex)setInitProperty("col=2,row=1,cellspacing=4,vcellspacing=0,itemWidth=100,itemHeight=20")
  108. ****************************************************************************************/
  109. function setInitProperty(sVal)
  110. {
  111. if(ufn_isNull(sVal))
  112. {
  113. return;
  114. }
  115. var arrVal= sVal.split(",");
  116. var arrProp;
  117. for(var i=0; i < arrVal.length; i++)
  118. {
  119. arrProp = arrVal[i].split("=");
  120. eval("objForm."+arrProp[0]+"="+arrProp[1]);
  121. }
  122. }
  123. /****************************************************************************************
  124. * Description : dstaset binding
  125. * Argument : object objDs - dataset Object
  126. :
  127. * @return N / A
  128. ****************************************************************************************/
  129. function setBindDataset(objDs, sColVal, sColTxt)
  130. {
  131. ufn_removeCheckbox();
  132. ds_checkList.clearData();
  133. var nRow;
  134. for(var i =0; i < objDs.getRowCount() ; i++)
  135. {
  136. nRow = ds_checkList.addRow();
  137. ds_checkList.setColumn(nRow, "val", ufn_trim(objDs.getColumn(i, sColVal)));
  138. ds_checkList.setColumn(nRow, "txt", ufn_trim(objDs.getColumn(i, sColTxt)));
  139. }
  140. utlf_makeCheckBox();
  141. chk_Tmp.visible = false;
  142. }
  143. /****************************************************************************************
  144. * Description : User Composite Set Data Method
  145. * Argument : Array aData - true data
  146. Array aFalseData - false data
  147. Boolean 이벤트 실행여부 default:true
  148. * return : none
  149. ****************************************************************************************/
  150. function setData(aData ,aFalseData, bFlag)
  151. {
  152. //checked data
  153. var nRow;
  154. var objChk;
  155. if(utlf_isNull(bFlag)){
  156. bFlag = true;
  157. }
  158. if(!ufn_isNull(aData))
  159. {
  160. for(var i =0; i < aData.length; i++)
  161. {
  162. nRow = ds_checkList.findRow("val",aData[i]);
  163. if(nRow > -1)
  164. {
  165. objChk = eval("chk_"+nRow);
  166. //eval("chk_"+nRow+".value="+aData[i]);
  167. if (!bFlag){
  168. objChk.enableevent =false;
  169. objChk.value = aData[i];
  170. objChk.enableevent =true;
  171. }else{
  172. objChk.value = aData[i];
  173. }
  174. }
  175. }
  176. }
  177. // unchecked data
  178. if(!ufn_isNull(aFalseData))
  179. {
  180. var nFRow;
  181. var objChkFalse;
  182. for(var i =0; i < aFalseData.length; i++)
  183. {
  184. nFRow = ds_checkList.findRow("val",aFalseData[i]);
  185. if(nFRow > -1)
  186. {
  187. objChkFalse = eval("chk_"+nFRow);
  188. if (!bFlag){
  189. objChkFalse.enableevent =false;
  190. objChkFalse.value = "";
  191. objChkFalse.enableevent =true;
  192. }else{
  193. objChkFalse.value = "";
  194. }
  195. }
  196. }
  197. }
  198. if (!bFlag) return;
  199. if(!ufn_isNull(iv_event)) ufn_compositeEvent(iv_event,aData);
  200. }
  201. /****************************************************************************************
  202. * Description : User Composite check All/Clear All Data Method
  203. * Argument : Boolean bCheck - 전체체크 default:true
  204. Boolean bFlag 이벤트 실행여부 default:false
  205. String sCode - 전체 체크 code값 deault:1번째 행에있는값
  206. * return : none
  207. ****************************************************************************************/
  208. function setCheckAll(bCheck, bFlag)
  209. {
  210. //checked data
  211. var nRow;
  212. var objChk;
  213. if(utlf_isNull(bFlag)){
  214. bFlag = false;
  215. }
  216. if(utlf_isNull(bCheck)){
  217. bCheck = true;
  218. }
  219. for(var i =0; i < ds_checkList.rowcount; i++){
  220. objChk = eval("chk_"+i);
  221. val = ds_checkList.getColumn(i,"val");
  222. if(!bCheck){
  223. if (!bFlag){
  224. objChk.enableevent =false;
  225. objChk.value = "";
  226. objChk.enableevent =true;
  227. }else{
  228. objChk.value = "";
  229. }
  230. }else{
  231. if (!bFlag){
  232. objChk.enableevent =false;
  233. objChk.value = val;
  234. objChk.enableevent =true;
  235. }else{
  236. objChk.value = val;
  237. }
  238. }
  239. }
  240. }
  241. /****************************************************************************************
  242. * Description : User Composite Get Data Method
  243. * Argument : none
  244. * return : none
  245. ****************************************************************************************/
  246. function getData()
  247. {
  248. var iv_aRtn = new Array();
  249. var objChk;
  250. for(var i=0; i < ds_checkList.getRowCount(); i++)
  251. {
  252. objChk = eval("chk_"+i);
  253. if(objChk.isChecked())
  254. {
  255. iv_aRtn.push(objChk.value);
  256. }
  257. }
  258. return iv_aRtn;
  259. }
  260. /****************************************************************************************
  261. * Description : User Composite Get Data Method
  262. * Argument : none
  263. * return : none
  264. ****************************************************************************************/
  265. function getLableData()
  266. {
  267. var iv_aRtn = new Array();
  268. var objChk;
  269. for(var i=0; i < ds_checkList.getRowCount(); i++)
  270. {
  271. objChk = eval("chk_"+i);
  272. if(objChk.isChecked())
  273. {
  274. iv_aRtn.push(objChk.text);
  275. }
  276. }
  277. return iv_aRtn;
  278. }
  279. /****************************************************************************************
  280. * Description : User Composite set setEnbale
  281. * Argument : none
  282. * return : none
  283. ****************************************************************************************/
  284. function setEnbale(bReq)
  285. {
  286. //trace(ds_checkList.saveXML());
  287. for(var i=0; i < ds_checkList.getRowCount(); i++)
  288. {
  289. objChk = eval("chk_"+i);
  290. objChk.enable = bReq;
  291. }
  292. }
  293. /****************************************************************************************
  294. * Description : User Composite Set Event Method
  295. * Argument : none
  296. * return : none
  297. ****************************************************************************************/
  298. function setCallEvent(sEvent)
  299. {
  300. iv_event = sEvent;
  301. }
  302. /****************************************************************************************
  303. * Description : dstaset binding
  304. * Argument : object objDs - dataset Object
  305. :
  306. * @return N / A
  307. ****************************************************************************************/
  308. function utlf_makeCheckBox()
  309. {
  310. var nWidth = 0; // checkbox의 width
  311. var nItemWidth = toNumber(objForm.itemWidth,0);
  312. var nItemHeight = toNumber(objForm.itemHeight,0);
  313. var objFont = utlf_getObjFont(9, "Dotum"); //font object
  314. var nCircleSize = 20; //체크박스 이미지 사이즈
  315. var resizingWidthGap = toNumber(objForm.textspacing, 3) - 3;
  316. var textpaddingleft = toNumber(objForm.textspacing, 3);
  317. var objArray1 = new Array();
  318. //글씨 크기가 가장큰것 기준
  319. objArray1[0] = new Array();
  320. if(toNumber(objForm.col,0) > 0){
  321. var colIdx=0;
  322. var cnt=0;
  323. var crt =0;
  324. for(i=0; i<ds_checkList.getRowCount(); i++){
  325. var sTxt = ds_checkList.getColumn(i, "txt");
  326. var objTextSize = utlf_getTextSize(sTxt, objFont); //폰트사이즈
  327. var nRight = nCircleSize + objTextSize.cx;
  328. if( colIdx< toNumber(objForm.col,0)){
  329. if(crt == 0){
  330. objArray1[colIdx] = new Array();
  331. }
  332. if(objArray1[colIdx][0] < nRight || objArray1[colIdx].length == 0){
  333. objArray1[colIdx][0] = nRight;
  334. }
  335. }else{
  336. colIdx=0;
  337. cnt = 0;
  338. crt = 1;
  339. if(objArray1[colIdx][0] < nRight || objArray1[colIdx].length == 0){
  340. objArray1[colIdx][0] = nRight;
  341. }
  342. }
  343. colIdx++;
  344. cnt++;
  345. }
  346. }
  347. if(nItemWidth < 1 || ufn_isNull(nItemWidth))
  348. {
  349. nWidth = 100;
  350. }
  351. else
  352. {
  353. nWidth = nItemWidth;
  354. }
  355. var nHeight = 0; //checkbox의 height
  356. if(nItemHeight< 1 || ufn_isNull(nItemHeight))
  357. {
  358. nHeight = 20;
  359. }
  360. else
  361. {
  362. nHeight = nItemHeight;
  363. }
  364. var j = 1; //col 갯수
  365. var nTop = 0;
  366. var nLeft = 0;
  367. var nTop =0;
  368. var nRight =0;
  369. var nBottom =0;
  370. var nMaxWidth = 0; //가장 큰 넓이값-폼의 크기를 설정하기 위한 값
  371. var nMaxHeight = 0; //가장 큰 높이값-폼의 크기를 설정하기 위한 값
  372. for(var i=0; i < ds_checkList.getRowCount(); i++)
  373. {
  374. //if(j == 1)
  375. if(i == 0)
  376. {
  377. nLeft = 0;
  378. }
  379. else
  380. {
  381. nLeft = nLeft + nWidth+ toNumber(objForm.cellspacing,0) + resizingWidthGap;
  382. }
  383. if(toNumber(objForm.row,0) == 1 || toNumber(objForm.col,0) >= j) //한 row의 컬럼 갯수 보다 크면 다음 row로 이동
  384. {
  385. if(nItemWidth == -1) nWidth = objArray1[j-1][0];
  386. utlf_createCheckBox("chk_"+i, nLeft, nTop, nLeft + nWidth + resizingWidthGap, nTop + nHeight, ds_checkList.getColumn(i, "val"), ds_checkList.getColumn(i, "txt"), textpaddingleft);
  387. }
  388. else
  389. {
  390. nLeft = 0;
  391. nTop = nTop + nHeight;
  392. if(nItemWidth == -1) nWidth = objArray1[0][0];
  393. utlf_createCheckBox("chk_"+i, nLeft, nTop, nLeft + nWidth + resizingWidthGap, nTop + nHeight, ds_checkList.getColumn(i, "val"), ds_checkList.getColumn(i, "txt"), textpaddingleft);
  394. j = 1;
  395. }
  396. if(nMaxWidth < (nLeft + nWidth))
  397. {
  398. nMaxWidth = nLeft + nWidth;
  399. }
  400. if(nMaxHeight < nTop + nHeight)
  401. {
  402. nMaxHeight = nTop + nHeight;
  403. }
  404. j++;
  405. }
  406. //overflow 가 visible이면 checkbox 크기에 맞게 form을 늘여준다.
  407. if(objForm.overflow == "visible")
  408. {
  409. //form 사이즈를 조절한다.
  410. objForm.position.width = nMaxWidth;
  411. objForm.position.height = nMaxHeight;
  412. }
  413. else if(objForm.overflow == "hidden") //form의 사이즈를 변경하지 않는다.
  414. {
  415. }
  416. else if(objForm.overflow == "scroll") //폼에 스크롤을 생성한다.
  417. {
  418. objForm.scrollbars = "autoboth";
  419. }
  420. else
  421. {
  422. //form 사이즈를 조절한다.
  423. objForm.position.width = nMaxWidth;
  424. objForm.position.height = nMaxHeight;
  425. }
  426. }
  427. //체크박스 생성
  428. /****************************************************************************************
  429. * Description : create checkbox object
  430. * Argument : string chkName - checkbox id
  431. number nL - left postion
  432. number nT - top postion
  433. number nR - right postion
  434. number nB - bottom postion
  435. string sVal - true value
  436. string sTxt - text value
  437. * @return N / A
  438. ****************************************************************************************/
  439. function utlf_createCheckBox(chkName, nL, nT, nR, nB, sVal, sTxt, textpaddingleft)
  440. {
  441. var objCheckBox = new CheckBox();
  442. objCheckBox.init(chkName, nL, nT, nR, nB);
  443. objCheckBox.style.textpadding.left = textpaddingleft;
  444. objForm.addChild(chkName, objCheckBox);
  445. objCheckBox.onchanged.addHandler(ufn_event_onchanged);
  446. objCheckBox.show();
  447. objCheckBox.truevalue = String(sVal);
  448. objCheckBox.falsevalue = "";
  449. objCheckBox.value = ""
  450. objCheckBox.text = sTxt;
  451. //trace(String(sVal)+"::"+sTxt);
  452. }
  453. /**********************************************************************************
  454. * 함수명 : ufn_trim
  455. * 설 명 : 입력받은 문자열의 공백을 제거한다.
  456. * argument : sValue 문자열 값
  457. * return Type : return 문자열
  458. * 작성자 : tobesoft
  459. **********************************************************************************/
  460. function ufn_trim(sValue)
  461. {
  462. if (sValue == null) return "";
  463. if (new String(sValue).valueOf() == "undefined") return "";
  464. if (new String(sValue) == null) return "";
  465. var retVal = (new String(sValue)).replace(/^\s+|\s+$/g, '');
  466. return retVal;
  467. }
  468. ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
  469. /****************************************************************************************
  470. * Description : 컴포지트 이벤트 호출 함수
  471. * Argument : sEventId - 호출할 이벤트 ID
  472. * sCompNm - 컴포지트명
  473. * @return N / A
  474. ****************************************************************************************/
  475. function ufn_compositeEvent(sEventId,sCompNm)
  476. {
  477. var lv_oFrame = this.getOwnerFrame();
  478. var lv_bInhForm = ufn_isNull(lv_oFrame.bInhForm) ? false : lv_oFrame.bInhForm;
  479. var lv_bMdiForm = ufn_isNull(lv_oFrame.bMdiForm) ? false : lv_oFrame.bMdiForm;
  480. var lv_bMdiPopForm = ufn_isNull(lv_oFrame.bMdiPopForm) ? false : lv_oFrame.bMdiPopForm;
  481. try{
  482. if(lv_bInhForm)
  483. {
  484. if(lv_bMdiForm == true || lv_bMdiPopForm == true)
  485. {
  486. if(ufn_isNull(sCompNm))
  487. {
  488. eval("this.getOwnerFrame().form.div_Layout.div_Work."+sEventId+"()");
  489. }
  490. else
  491. {
  492. eval("this.getOwnerFrame().form.div_Layout.div_Work."+sEventId+"('"+sCompNm+"')");
  493. }
  494. }
  495. else
  496. {
  497. if(ufn_isNull(sCompNm))
  498. {
  499. eval("this.getOwnerFrame().form."+sEventId+"()");
  500. }
  501. else
  502. { ;
  503. eval("this.getOwnerFrame().form."+sEventId+"('"+sCompNm+"')");
  504. }
  505. }
  506. }
  507. else
  508. {
  509. if(ufn_isNull(sCompNm))
  510. {
  511. eval(sEventId+"()");
  512. }
  513. else
  514. {
  515. eval(sEventId+"('"+sCompNm+"')");
  516. }
  517. }
  518. }catch(err){}
  519. }
  520. /****************************************************************************************
  521. * Description : 입력값이 null 또는 wihte space로만 이루어져 있으면 빈문자를 리턴하는 함수
  522. * Argument : sValue String
  523. * return : String
  524. ****************************************************************************************/
  525. function ufn_isEmpty(sValue)
  526. {
  527. if (new String(sValue).valueOf() == "undefined") return "";
  528. if (sValue == null) return "";
  529. var lv_sChkStr = new String(sValue);
  530. if (lv_sChkStr == null) return "";
  531. if (lv_sChkStr.toString().length == 0 ) return "";
  532. return sValue;
  533. }
  534. /****************************************************************************************
  535. * Description : 입력값이 null 또는 wihte space로만 이루어져 있는지 확인 하는 함수
  536. * Argument : value 입력값
  537. * return : boolean. null(혹은 white space) 여부
  538. ****************************************************************************************/
  539. function ufn_isNull(sValue)
  540. {
  541. if (new String(sValue).valueOf() == "undefined") return true;
  542. if (sValue == null) return true;
  543. var lv_sChkStr = new String(sValue);
  544. if (lv_sChkStr == null) return true;
  545. if (lv_sChkStr.toString().length == 0 ) return true;
  546. return false;
  547. }
  548. /****************************************************************************************
  549. * Description : Check the validity date.
  550. * Argument : sDate yyyyMM or yyyyMMdd, ex) "201205" or "20120506"
  551. * return : boolean
  552. ****************************************************************************************/
  553. function ufn_isDate(sDate)
  554. {
  555. var retVal;
  556. switch(sDate.length)
  557. {
  558. case 6://yyyyMM
  559. retVal = ufn_isYM(sDate);
  560. break;
  561. case 8://yyyyMMdd
  562. retVal = ufn_isYMD(sDate);
  563. break;
  564. default:
  565. retVal = false;
  566. break;
  567. }
  568. return retVal;
  569. }
  570. function setEmpty()
  571. {
  572. cal_from.value = "";
  573. cal_to.value = "";
  574. }
  575. function setIsNull()
  576. {
  577. iv_bNotNull = false;
  578. }
  579. /****************************************************************************************
  580. * Description : User Composite Set Blank Method
  581. * Argument : none
  582. * return : none
  583. ****************************************************************************************/
  584. function setBlank()
  585. {
  586. cal_from.value = "";
  587. cal_to.value = "";
  588. }
  589. /****************************************************************************************
  590. * Description : When the user select a date set limits
  591. * Argument : 1. sTitle : Title
  592. * : 2. nLimit : number
  593. * : 3. sFlag :
  594. * return : none
  595. ****************************************************************************************/
  596. function setLimit(sTitle, nLimit, sFlag)
  597. {
  598. iv_sTitle = sTitle
  599. iv_nLimit = nLimit;
  600. if(ufn_isEmpty(sFlag)){
  601. iv_Curr = sFlag;
  602. }
  603. }
  604. /****************************************************************************************
  605. * Description : remove checkbox
  606. * Argument : none
  607. * return : none
  608. ****************************************************************************************/
  609. function ufn_removeCheckbox()
  610. {
  611. for(var i =0 ; i < ds_checkList.getRowCount(); i++)
  612. {
  613. if(isValidObject("chk_"+i))
  614. {
  615. var objCh = eval("chk_"+i);
  616. objForm.removeChild("chk_"+i);
  617. var suss = objCh.destroy();
  618. objCh= null;
  619. }
  620. }
  621. }
  622. function setEnable(enable) {
  623. try {
  624. for(var i = 0; i < this.components.length; i++) {
  625. this.components[i].enable = enable;
  626. }
  627. } catch(e) {}
  628. }]]></Script>
  629. </Form>
  630. </FDL>