cp_selCombo.xfdl 14 KB

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