cp_selCombo.xfdl 13 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388
  1. <?xml version="1.0" encoding="utf-8"?>
  2. <FDL version="1.4">
  3. <TypeDefinition url="..\default_typedef.xml"/>
  4. <Form id="cp_selCombo" classname="Uobj_selCombo" inheritanceid="" position="absolute 0 0 178 22" titletext="두줄가능 콤보" scrollbars="none" onload="cp_selCombo_onload" onkeyup="cp_selCombo_onkeyup" style="background:transparent;font:Dotum,9;">
  5. <Layouts>
  6. <Layout>
  7. <Combo id="cbo_userMulti" position="absolute 1 1 177 21" ondropdown="cbo_user_ondropdown" onkillfocus="cbo_user_onkillfocus" taborder="0" oncloseup="cbo_user_oncloseup" autoskip="true" autoselect="true" index="-1" value="null" onkeyup="cbo_userMulti_onkeyup" onchar="cbo_userMulti_onchar" ontextchanged="cbo_userMulti_ontextchanged" onkeydown="cbo_userMulti_onkeydown" style="itemborder:0 none #808080ff ;background:URL('theme://images/bg_edit_N.png') stretch 5,5;font:Dotum,9;"/>
  8. </Layout>
  9. </Layouts>
  10. <Objects>
  11. <Dataset id="ds_gridMulti" firefirstcount="0" firenextcount="0" useclientlayout="false" updatecontrol="true" enableevent="true" loadkeymode="keep" loadfiltermode="keep" reversesubsum="false">
  12. <ColumnInfo>
  13. <Column id="GROUP_CD" type="STRING" size="20"/>
  14. <Column id="DETAIL_CODE" type="STRING" size="20"/>
  15. <Column id="DETAIL_NAME" type="STRING" size="50"/>
  16. <Column id="DETAIL_CODE_NAME" type="STRING" size="73"/>
  17. <Column id="DETAIL_ETC1" type="STRING" size="50"/>
  18. <Column id="DETAIL_ETC2" type="STRING" size="50"/>
  19. <Column id="DETAIL_ETC3" type="STRING" size="50"/>
  20. <Column id="DETAIL_ETC4" type="STRING" size="50"/>
  21. <Column id="DETAIL_ETC5" type="STRING" size="50"/>
  22. <Column id="DETAIL_ETC6" type="STRING" size="50"/>
  23. <Column id="DETAIL_ETC7" type="STRING" size="50"/>
  24. <Column id="DETAIL_ETC8" type="STRING" size="50"/>
  25. <Column id="DETAIL_ETC9" type="STRING" size="50"/>
  26. <Column id="DETAIL_ETC10" type="STRING" size="50"/>
  27. <Column id="_chk" type="INT" size="10"/>
  28. <Column id="xRowStatusType" type="STRING" size="1"/>
  29. </ColumnInfo>
  30. </Dataset>
  31. <Dataset id="ds_combo" firefirstcount="0" firenextcount="0" useclientlayout="false" updatecontrol="true" enableevent="true" loadkeymode="keep" loadfiltermode="keep" reversesubsum="false" cancolumnchange="ds_combo_cancolumnchange">
  32. <ColumnInfo>
  33. <Column id="Text" type="STRING" size="256"/>
  34. </ColumnInfo>
  35. <Rows>
  36. <Row/>
  37. </Rows>
  38. </Dataset>
  39. </Objects>
  40. <Bind/>
  41. <Script type="xscript4.0"><![CDATA[var lv_sCode = ""; // 선택한 코드
  42. var lv_sName = ""; // 선택한 이름
  43. var lv_preData = "";
  44. var lv_sCodeCol = "";
  45. var lv_sNameCol = "";
  46. var iv_event;
  47. var lv_search = false;
  48. var lv_text = "";
  49. /****************************************************************************************
  50. * Description : User Composite onload event
  51. ****************************************************************************************/
  52. function cp_selCombo_onload(obj:Form, e:LoadEventInfo)
  53. {
  54. ds_combo.reset();
  55. }
  56. /****************************************************************************************
  57. * Description : Combo drop down event
  58. ****************************************************************************************/
  59. function cbo_user_ondropdown(obj:Combo, e:EventInfo)
  60. {
  61. lv_preData = getData();
  62. // 팝디비전을 펼친다.
  63. lf_selCombo(this,obj,ds_gridMulti,lv_sCodeCol,lv_sNameCol,lv_sCode,lv_sCode,lv_text);
  64. //lf_findValue();
  65. }
  66. /****************************************************************************************
  67. * Description : Combo killfocus event
  68. ****************************************************************************************/
  69. function cbo_user_onkillfocus(obj:Combo, e:KillFocusEventInfo)
  70. {
  71. // 콤보에 값을 셋팅.
  72. obj.value = "";
  73. //obj.text = "";
  74. obj.value = lv_sCode;
  75. //obj.text = lv_sName;
  76. //lf_findValue();
  77. }
  78. /****************************************************************************************
  79. * Description : User Composite init value
  80. * Argument : objDs - combo inner dataset
  81. sCode - codecolumn
  82. sData - datacolumn
  83. * return : Array - Data(code value, data value);
  84. ****************************************************************************************/
  85. function setDataSet(objDs,sCode,sData)
  86. {
  87. ds_gridMulti.assign(objDs);
  88. lv_sCodeCol = sCode;
  89. lv_sNameCol = sData;
  90. }
  91. /****************************************************************************************
  92. * Description : User Composite select value return
  93. * Argument : none
  94. * return : Array - Data(code value, data value);
  95. ****************************************************************************************/
  96. function getData()
  97. {
  98. var array = new Array();
  99. array[0] = lv_sCode;
  100. array[1] = lv_sName;
  101. return array;
  102. }
  103. /****************************************************************************************
  104. * Description : User Composite defalul값 설정
  105. * Argument : string - code value
  106. * return : none
  107. ****************************************************************************************/
  108. function setData(slv_sCode)
  109. {
  110. lv_sCode = slv_sCode;
  111. var name = ds_gridMulti.lookup(lv_sCodeCol,lv_sCode,lv_sNameCol);
  112. if (utlf_isNull(name)){
  113. lv_sCode = "";
  114. return;
  115. }
  116. lv_sName = name;
  117. if(lv_search){
  118. lv_text = lv_sName;
  119. }
  120. lf_findValue();
  121. }
  122. function lf_findValue(){
  123. cbo_userMulti.value = lv_sCode;
  124. cbo_userMulti.text = lv_sName;
  125. if(lv_search){
  126. lv_text = lv_sName;
  127. }
  128. }
  129. function cbo_user_oncloseup(obj:Combo, e:ComboCloseUpEventInfo)
  130. {
  131. parent.setFocus();
  132. }
  133. /****************************************************************************************
  134. * Description : User Composite 변경전 data
  135. * Argument : none
  136. * return : array - pre data
  137. ****************************************************************************************/
  138. function lf_preGetValue()
  139. {
  140. return lv_preData;
  141. }
  142. /****************************************************************************************
  143. * Description : User Composite enable setting
  144. * Argument : bFlag true/false
  145. * return : none
  146. ****************************************************************************************/
  147. function setEnable(bFlag){
  148. cbo_userMulti.enable = bFlag;
  149. }
  150. /****************************************************************************************
  151. * Description : User Composite 컴포지트 필수 표시 함수 입력값은 : true / false
  152. * Argument : bFlag true/false
  153. * return : none
  154. ****************************************************************************************/
  155. function setRequestment(bFlag){
  156. if(bFlag){
  157. cbo_userMulti.class = "input_essential";
  158. }else{
  159. cbo_userMulti.class = "";
  160. }
  161. }
  162. /****************************************************************************************
  163. * Description : 입력값이 null 또는 wihte space로만 이루어져 있는지 확인 하는 함수
  164. * Argument : value 입력값
  165. * return : boolean. null(혹은 white space) 여부
  166. ****************************************************************************************/
  167. function ufn_isNull(sValue)
  168. {
  169. if (new String(sValue).valueOf() == "undefined") return true;
  170. if (sValue == null) return true;
  171. var lv_sChkStr = new String(sValue);
  172. if (lv_sChkStr == null) return true;
  173. if (lv_sChkStr.toString().length == 0 ) return true;
  174. return false;
  175. }
  176. /****************************************************************************************
  177. * Description : 컴포지트 이벤트 호출 함수
  178. * Argument : sEventId - 호출할 이벤트 ID
  179. * sCompNm - 컴포지트명
  180. * @return N / A
  181. ****************************************************************************************/
  182. function ufn_compositeEvent(sEventId)
  183. {
  184. var e = new Object();
  185. e.prevalue = lv_preData[0];
  186. e.pretext = lv_preData[1];
  187. e.postvalue = lv_sCode;
  188. e.posttext = lv_sName;
  189. var lv_oFrame = this.getOwnerFrame();
  190. var lv_bInhForm = ufn_isNull(lv_oFrame.bInhForm) ? false : lv_oFrame.bInhForm;
  191. var lv_bMdiForm = ufn_isNull(lv_oFrame.bMdiForm) ? false : lv_oFrame.bMdiForm;
  192. var lv_bMdiPopForm = ufn_isNull(lv_oFrame.bMdiPopForm) ? false : lv_oFrame.bMdiPopForm;
  193. try{
  194. if(lv_bInhForm)
  195. {
  196. if(lv_bMdiForm == true || lv_bMdiPopForm == true)
  197. {
  198. var s_fn = "this.getOwnerFrame().form.div_Layout.div_Work."+sEventId+"(e)";
  199. eval(s_fn);
  200. }
  201. else
  202. {
  203. var s_fn = "this.getOwnerFrame().form."+sEventId+"(e)";
  204. eval(s_fn);
  205. }
  206. }
  207. else
  208. {
  209. var s_fn = sEventId+"(e)";
  210. eval(s_fn);
  211. }
  212. }catch(err){}
  213. }
  214. /****************************************************************************************
  215. * Description : User Composite Set Call event
  216. * Argument : sEvent string
  217. * return : none
  218. ****************************************************************************************/
  219. function setCallEvent(sEvent)
  220. {
  221. iv_event = sEvent;
  222. }
  223. function lf_callEvent(){
  224. if(!utlf_isNull(iv_event)) ufn_compositeEvent(iv_event);
  225. }
  226. /******************************************************************************
  227. * Function : appf_selCombo
  228. * Description : 두줄표현 콤보 trackPop호출
  229. * Argument : obj (콤보)
  230. * ds_input (처리할 dataset)
  231. sCodeCol - codecolumn
  232. sDataCol - datacolumn
  233. sCode - codevalue
  234. sData - datavalue
  235. * Return : Array - (값,text)
  236. *******************************************************************************/
  237. function lf_selCombo(parObj, obj , ds_input, sCodeCol, sDataCol, sCode, sData, sFilter)
  238. {
  239. var sDataSetXml = ds_input.saveXML();
  240. var objPopupDiv;
  241. var sPopupDivNm = "_pdv_trackSelect"+obj.name;
  242. var bRet = isValidObject(sPopupDivNm);
  243. if(!bRet) {
  244. objPopupDiv = new PopupDiv;
  245. objPopupDiv.init(sPopupDivNm, 0, 0, 354, 163);
  246. this.addChild(sPopupDivNm, objPopupDiv);
  247. objPopupDiv.style = "background:transparent;border:0 none #808080ff;";
  248. objPopupDiv.scrollbars = "none";
  249. objPopupDiv.asyncmode = false;
  250. objPopupDiv.show();
  251. objPopupDiv.url = "COMPOSITE::cp_selComboPop.xfdl";
  252. } else {
  253. objPopupDiv = eval(sPopupDivNm);
  254. }
  255. objPopupDiv.lf_setDataSet(sDataSetXml,sCodeCol,sDataCol,sCode,sData,lv_search,sFilter);
  256. var rtn = objPopupDiv.trackPopupByComponent(obj, 0, obj.position.height+1);
  257. if(!utlf_isNull(rtn)){
  258. var array = rtn.split("^");
  259. lv_sCode = array[0];
  260. lv_sName = array[1];
  261. if(lv_search){
  262. lv_text = array[1];
  263. }
  264. lf_findValue();
  265. lf_callEvent();
  266. }
  267. }
  268. /****************************************************************************************
  269. * Description : User Composite Combo Item Add
  270. * Argument : sCode - String codedata
  271. sData - String name data
  272. sOpt - String insert or append ("top" : insertRow, addRow())
  273. bAllChk - All Check true/false
  274. * return : none
  275. ****************************************************************************************/
  276. function setAddItem(sCode, sData, sOpt, bAllChk)
  277. {
  278. if(bAllChk == "Y" || sOpt == "top")
  279. {
  280. ds_gridMulti.insertRow(0);
  281. ds_gridMulti.setColumn(0, lv_sCodeCol , sCode);
  282. ds_gridMulti.setColumn(0, lv_sNameCol , sData);
  283. }
  284. else
  285. {
  286. var nRow = ds_comCode.addRow();
  287. ds_gridMulti.setColumn(nRow, lv_sCodeCol , sCode);
  288. ds_gridMulti.setColumn(nRow, lv_sNameCol , sData);
  289. }
  290. //전체 체크여부
  291. if(bAllChk == true || bAllChk == false)
  292. {
  293. lv_AllChk = bAllChk;
  294. }
  295. }
  296. /****************************************************************************************
  297. * Description : User Composite Combo use Searching
  298. * Argument : bBool - Boolean true/false defalul:false
  299. * return : none
  300. ****************************************************************************************/
  301. function setSearch(bBool){
  302. if(utlf_isNull(bBool)) bBool = false;
  303. lv_search = bBool;
  304. if(lv_search){
  305. cbo_userMulti.type = "search";
  306. lv_text = lv_sName;
  307. }else{
  308. cbo_userMulti.type = "dropdown";
  309. }
  310. }
  311. var dup = 0;
  312. /****************************************************************************************
  313. * Description : Combo KeyUp event
  314. ****************************************************************************************/
  315. function cbo_userMulti_onkeyup(obj:Combo, e:KeyEventInfo)
  316. {
  317. if(lv_search && e.keycode == 13 ){
  318. // 팝디비전을 펼친다.
  319. lf_selCombo(this,obj,ds_gridMulti,lv_sCodeCol,lv_sNameCol,lv_sCode,lv_sCode, lv_text);
  320. lf_findValue();
  321. }
  322. }
  323. /****************************************************************************************
  324. * Description : Combo Text Changed event
  325. ****************************************************************************************/
  326. function cbo_userMulti_ontextchanged(obj:Combo, e:TextChangedEventInfo)
  327. {
  328. lv_text = e.posttext;
  329. }
  330. function cbo_userMulti_onkeydown(obj:Combo, e:KeyEventInfo)
  331. {
  332. }
  333. /****************************************************************************************
  334. * Description : 콤보박스의 사이즈 조절
  335. * Argument : vWidth : 가로길이
  336. : vHeight : 세로길이
  337. * return : none
  338. ****************************************************************************************/
  339. function setComboSize(vWidth,vHeight){
  340. cbo_userMulti.position.width = vWidth;
  341. cbo_userMulti.position.height = vHeight;
  342. this.position.width = vWidth+2;
  343. this.position.height = vHeight+2;
  344. }
  345. ]]></Script>
  346. </Form>
  347. </FDL>