cp_selComboPop.xfdl 14 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400
  1. <?xml version="1.0" encoding="utf-8"?>
  2. <FDL version="1.5">
  3. <TypeDefinition url="..\default_typedef.xml"/>
  4. <Form id="cp_selComboPop" classname="Uobj_selCombo_Popup" inheritanceid="" position="absolute 0 0 354 163" titletext="콤보 팝업(UserObject_Pop)" onload="cp_selComboPop_onload" style="background:#dcdcdcff;" onkillfocus="cp_selComboPop_onkillfocus" scrollbars="none">
  5. <Layouts>
  6. <Layout>
  7. <Grid id="Grid00" taborder="1" binddataset="ds_combo" scrollbars="autohorz" useinputpanel="false" oncellclick="Grid00_oncellclick" position="absolute 0 0 178 163" onmouseenter="Grid00_onmouseenter" onmousemove="Grid_onmousemove" autosizebandtype="allband" onkeydown="Grid_onkeydown" onkeyup="Grid_onkeyup" style="border:1 solid #808080ff,1 solid #d6d6d6ff,1 solid #d6d6d6ff,1 solid #d6d6d6ff;" onvscroll="Grid00_onvscroll" onlbuttondown="Grid_onlbuttondown">
  8. <Formats>
  9. <Format id="default">
  10. <Columns>
  11. <Column size="175"/>
  12. </Columns>
  13. <Rows>
  14. <Row size="24"/>
  15. </Rows>
  16. <Band id="body">
  17. <Cell style="align:left;line:0 none #808080ff ;background:white;background2:white;selectbackground:#bbe0f9ff;"/>
  18. </Band>
  19. </Format>
  20. </Formats>
  21. </Grid>
  22. <Grid id="Grid01" taborder="2" binddataset="ds_combo2" scrollbars="autohorz" useinputpanel="false" oncellclick="Grid00_oncellclick" position="absolute 176 0 354 163" onmouseenter="Grid01_onmouseenter" onmousemove="Grid_onmousemove" autosizebandtype="allband" onkeydown="Grid_onkeydown" onkeyup="Grid_onkeyup" style="border:1 solid #808080ff,1 solid #d6d6d6ff,1 solid #d6d6d6ff,1 solid #d6d6d6ff;" onvscroll="Grid01_onvscroll" onlbuttondown="Grid_onlbuttondown">
  23. <Formats>
  24. <Format id="default">
  25. <Columns>
  26. <Column size="175"/>
  27. </Columns>
  28. <Rows>
  29. <Row size="24"/>
  30. </Rows>
  31. <Band id="body">
  32. <Cell style="align:left;line:0 none #808080ff ;background:white;background2:white;selectbackground:#bbe0f9ff;"/>
  33. </Band>
  34. </Format>
  35. </Formats>
  36. </Grid>
  37. </Layout>
  38. </Layouts>
  39. <Objects>
  40. <Dataset id="ds_gridMulti" firefirstcount="0" firenextcount="0" useclientlayout="false" updatecontrol="true" enableevent="true" loadkeymode="keep" loadfiltermode="keep" reversesubsum="false" cancolumnchange="ds_gridMulti_cancolumnchange">
  41. <ColumnInfo>
  42. <Column id="GROUP_CD" type="STRING" size="20"/>
  43. <Column id="DETAIL_CODE" type="STRING" size="20"/>
  44. <Column id="DETAIL_NAME" type="STRING" size="50"/>
  45. <Column id="DETAIL_CODE_NAME" type="STRING" size="73"/>
  46. <Column id="DETAIL_ETC1" type="STRING" size="50"/>
  47. <Column id="DETAIL_ETC2" type="STRING" size="50"/>
  48. <Column id="DETAIL_ETC3" type="STRING" size="50"/>
  49. <Column id="DETAIL_ETC4" type="STRING" size="50"/>
  50. <Column id="DETAIL_ETC5" type="STRING" size="50"/>
  51. <Column id="DETAIL_ETC6" type="STRING" size="50"/>
  52. <Column id="DETAIL_ETC7" type="STRING" size="50"/>
  53. <Column id="DETAIL_ETC8" type="STRING" size="50"/>
  54. <Column id="DETAIL_ETC9" type="STRING" size="50"/>
  55. <Column id="DETAIL_ETC10" type="STRING" size="50"/>
  56. <Column id="_chk" type="INT" size="10"/>
  57. <Column id="xRowStatusType" type="STRING" size="1"/>
  58. </ColumnInfo>
  59. </Dataset>
  60. <Dataset id="ds_combo" firefirstcount="0" firenextcount="0" useclientlayout="false" updatecontrol="true" enableevent="true" loadkeymode="keep" loadfiltermode="keep" reversesubsum="false" canrowposchange="ds_combo_canrowposchange"/>
  61. <Dataset id="ds_combo2" firefirstcount="0" firenextcount="0" useclientlayout="false" updatecontrol="true" enableevent="true" loadkeymode="keep" loadfiltermode="keep" reversesubsum="false" canrowposchange="ds_combo_canrowposchange"/>
  62. </Objects>
  63. <Bind/>
  64. <Script type="xscript4.0"><![CDATA[var lv_codeCol;
  65. var lv_dataCol;
  66. /****************************************************************************************
  67. * Description : 팝업에서 init 값 설정
  68. * Argument : sDataSetXml - String combo inner dataset
  69. sCodeCol - codecolumn
  70. sDataCol - datacolumn
  71. sCode - codevalue
  72. sData - datavalue
  73. * return : none
  74. ****************************************************************************************/
  75. function lf_setDataSet(sDataSetXml, sCodeCol, sDataCol, sCode, sData, bSearch, sFilter, sDirection)
  76. {
  77. grid1_leftright = 0;
  78. grid2_leftright = 0;
  79. Grid00.useselcolor = false;
  80. Grid01.useselcolor = false;
  81. ds_gridMulti.loadXML(sDataSetXml);
  82. Grid00.setCellProperty("body",0,"text","bind:"+sDataCol);
  83. Grid01.setCellProperty("body",0,"text","bind:"+sDataCol);
  84. ds_gridMulti.filter("");
  85. //trace("bSearch::"+bSearch + "::" +sFilter);
  86. if(bSearch){
  87. //trace("String("+sDataCol+").substr(0,String("+sFilter+").length).indexOf("+sFilter+")>=0");
  88. //if(!utlf_isNull(sFilter)) ds_gridMulti.filter("String("+sDataCol+").indexOf('"+sFilter+"')>=0");
  89. if(!utlf_isNull(sFilter)) ds_gridMulti.filter("String("+sDataCol+").substr(0,String('"+sFilter+"').length).indexOf('"+sFilter+"')>=0");
  90. }
  91. var nFrow = -1;
  92. if(!utlf_isNull(sCode) && !utlf_isNull(sData)){
  93. nFrow = ds_gridMulti.findRow(sCodeCol,sCode);
  94. }
  95. lv_codeCol = sCodeCol;
  96. lv_dataCol = sDataCol;
  97. var cnt = ds_gridMulti.rowcount;
  98. var mod = cnt%2;
  99. var cal = Math.floor(cnt/2);
  100. if(cnt <=2) {
  101. var nHeight = 24;
  102. }else{
  103. var nHeight = 24*(cal+mod);
  104. }
  105. ds_combo.copyData(ds_gridMulti);
  106. ds_combo.clearData();
  107. ds_combo2.copyData(ds_combo);
  108. // 가로/세로 구분 추가
  109. if(sDirection == "A") {
  110. for(var i=0; i < ds_gridMulti.rowcount; i++){
  111. if(i % 2 == 0){
  112. var nAddRow = ds_combo.addRow();
  113. ds_combo.copyRow(nAddRow,ds_gridMulti,i);
  114. }else{
  115. var nAddRow2 = ds_combo2.addRow();
  116. ds_combo2.copyRow(nAddRow2,ds_gridMulti,i);
  117. }
  118. }
  119. } else {
  120. var splitNo = Math.ceil(ds_gridMulti.rowcount / 2);
  121. for(var i=0; i < splitNo; i++){
  122. var nAddRow = ds_combo.addRow();
  123. ds_combo.copyRow(nAddRow,ds_gridMulti,i);
  124. }
  125. for(var i=splitNo; i < ds_gridMulti.rowcount; i++){
  126. var nAddRow2 = ds_combo2.addRow();
  127. ds_combo2.copyRow(nAddRow2,ds_gridMulti,i);
  128. }
  129. }
  130. // 아이템 총 갯수가 홀수개라면 오른쪽 그리드에 맨아래 빈칸 한줄 삽입
  131. if(ds_gridMulti.rowcount % 2 == 1) {
  132. ds_combo2.addRow();
  133. }
  134. // 콤보의 세로 크기는 콤보로 부터 현재 창의 작업표시줄 위쪽까지만 차도록 제한을 둠
  135. var nMoniterIndex = system.getMonitorIndex(system.cursorx, system.cursory); //모니터번호
  136. var objScreenSize = system.getScreenRect(nMoniterIndex);
  137. var nScreenBottom = objScreenSize.bottom - 60; // 하단 여백은 60정도로 잡음
  138. var ypos = system.clientToScreenY(this.parent, this.parent.position.height);
  139. if(ypos + nHeight > nScreenBottom) {
  140. nHeight = nScreenBottom - ypos;
  141. Grid00.position.right += Grid00.vscrollbar.position.width;
  142. if(Grid00.hscrollbar.visible)
  143. Grid00.scrollbars = "fixedboth";
  144. else
  145. Grid00.scrollbars = "fixedvert";
  146. if(Grid01.hscrollbar.visible)
  147. Grid01.scrollbars = "fixedboth";
  148. else
  149. Grid01.scrollbars = "fixedvert";
  150. }
  151. nHeight = nHeight - (nHeight % 24) + 2;
  152. this.position.height = nHeight;
  153. Grid00.position.height = nHeight;
  154. Grid01.position.height = nHeight;
  155. var addHeight = 0;
  156. Grid00.autosizingtype = "col";
  157. Grid01.autosizingtype = "col";
  158. if(Grid00.hscrollbar.visible) addHeight = 16;
  159. if(Grid01.hscrollbar.visible) addHeight = 16;
  160. Grid00.position.height = Grid00.position.height + addHeight;
  161. Grid01.position.height = Grid01.position.height + addHeight;
  162. var Grid0Size = Grid00.getRealColFullSize("body");
  163. var Grid1Size = Grid01.getRealColFullSize("body");
  164. //기본크기보다 작거나 같으면 크기 고정
  165. if(Grid0Size>173)
  166. Grid00.autosizingtype = "col";
  167. else
  168. Grid00.autosizingtype = "none";
  169. if(Grid1Size>173)
  170. Grid01.autosizingtype = "col";
  171. else
  172. Grid01.autosizingtype = "none";
  173. if(nFrow == -1){
  174. Grid00.useselcolor = true;
  175. Grid00.setFocus();
  176. return;
  177. }
  178. if( nFrow % 2 == 0){
  179. Grid00.useselcolor = true;
  180. if(nFrow == -1)
  181. ds_combo.rowposition = -1;
  182. else
  183. ds_combo.rowposition = nFrow / 2;
  184. ds_combo2.rowposition = ds_combo.rowposition;
  185. Grid00.setFocus();
  186. }else{
  187. Grid01.useselcolor = true;
  188. ds_combo2.rowposition = nFrow / 2;
  189. ds_combo.rowposition = ds_combo2.rowposition;
  190. Grid01.setFocus();
  191. }
  192. }
  193. /****************************************************************************************
  194. * Description : popup div killfocus event
  195. ****************************************************************************************/
  196. function cp_selComboPop_onkillfocus(obj:Form, e:KillFocusEventInfo)
  197. {
  198. closePopup();
  199. }
  200. /****************************************************************************************
  201. * Description : grid select click event
  202. ****************************************************************************************/
  203. function Grid00_oncellclick(obj:Grid, e:GridClickEventInfo)
  204. {
  205. var objDs = eval(obj.binddataset);
  206. var strCodeVal = objDs.getColumn(e.row,lv_codeCol);
  207. var strDataVal = objDs.getColumn(e.row,lv_dataCol);
  208. closePopup(strCodeVal+"^"+strDataVal);
  209. }
  210. /****************************************************************************************
  211. * Description : grid mouseenter event
  212. ****************************************************************************************/
  213. function Grid00_onmouseenter(obj:Grid, e:MouseEventInfo)
  214. {
  215. Grid00.useselcolor = true;
  216. Grid01.useselcolor = false;
  217. Grid00.setFocus();
  218. }
  219. /****************************************************************************************
  220. * Description : grid mouseenter event
  221. ****************************************************************************************/
  222. function Grid01_onmouseenter(obj:Grid, e:MouseEventInfo)
  223. {
  224. Grid00.useselcolor = false;
  225. Grid01.useselcolor = true;
  226. Grid01.setFocus();
  227. }
  228. /****************************************************************************************
  229. * Description : grid mousemove event
  230. ****************************************************************************************/
  231. function Grid_onmousemove(obj:Grid, e:GridMouseEventInfo)
  232. {
  233. grid1_leftright = 0;
  234. grid2_leftright = 0;
  235. var obj2;
  236. if(obj.name == "Grid01")
  237. obj2 = Grid00;
  238. else
  239. obj2 = Grid01;
  240. obj.useselcolor = true;
  241. obj2.useselcolor = false;
  242. var objDs = eval(obj.binddataset);
  243. if(e.row > -1) {
  244. objDs.rowposition = e.row;
  245. eval(obj2.binddataset).rowposition = e.row;
  246. }
  247. obj.setFocus();
  248. }
  249. /****************************************************************************************
  250. * Description : Grid keyDown event
  251. ****************************************************************************************/
  252. function Grid_onkeydown(obj:Grid, e:KeyEventInfo)
  253. {
  254. var objDs = eval(obj.binddataset);
  255. if(e.keycode == 39){
  256. if(obj.name == "Grid00") {
  257. var objDs2 = ds_combo2;
  258. grid1_leftright = e.keycode;
  259. objDs2.rowposition = objDs.rowposition;
  260. Grid01.useselcolor = true;
  261. Grid00.useselcolor = false;
  262. Grid01.setFocus();
  263. } else {
  264. grid2_leftright = e.keycode;
  265. }
  266. }else if(e.keycode == 37) {
  267. if(obj.name == "Grid01"){
  268. var objDs2 = ds_combo;
  269. grid2_leftright = e.keycode;
  270. objDs2.rowposition = objDs.rowposition;
  271. Grid01.useselcolor = false;
  272. Grid00.useselcolor = true;
  273. Grid00.setFocus();
  274. } else {
  275. grid1_leftright = e.keycode;
  276. }
  277. }else if(obj.name == "Grid00") {
  278. grid1_leftright = -1;
  279. grid2_leftright = -1;
  280. if(e.keycode == 38) {
  281. if(ds_combo.rowposition > 0)
  282. ds_combo2.rowposition = ds_combo.rowposition - 1;
  283. } else if(e.keycode == 40) {
  284. if(ds_combo.rowposition < ds_combo.rowcount - 1)
  285. ds_combo2.rowposition = ds_combo.rowposition + 1;
  286. }
  287. }else if(obj.name == "Grid01") {
  288. grid1_leftright = -1;
  289. grid2_leftright = -1;
  290. if(e.keycode == 38) {
  291. if(ds_combo2.rowposition > 0)
  292. ds_combo.rowposition = ds_combo2.rowposition - 1;
  293. } else if(e.keycode == 40) {
  294. if(ds_combo2.rowposition < ds_combo2.rowcount - 1)
  295. ds_combo.rowposition = ds_combo2.rowposition + 1;
  296. }
  297. }
  298. }
  299. var grid1_leftright = 0;
  300. var grid2_leftright = 0;
  301. function Grid_onlbuttondown(obj:Grid, e:GridMouseEventInfo)
  302. {
  303. if(obj.name == "Grid00")
  304. grid1_leftright = 0;
  305. else
  306. grid2_leftright = 0;
  307. }
  308. function Grid_onkeyup(obj:Grid, e:KeyEventInfo)
  309. {
  310. if(e.keycode == 13){
  311. var objDs = eval(obj.binddataset);
  312. var strCodeVal = objDs.getColumn(objDs.rowposition,lv_codeCol);
  313. var strDataVal = objDs.getColumn(objDs.rowposition,lv_dataCol);
  314. closePopup(strCodeVal+"^"+strDataVal);
  315. }
  316. }
  317. function Grid00_onvscroll(obj:Grid, e:ScrollEventInfo)
  318. {
  319. Grid01.vscrollbar.pos = e.pos;
  320. }
  321. function Grid01_onvscroll(obj:Grid, e:ScrollEventInfo)
  322. {
  323. Grid00.vscrollbar.pos = e.pos;
  324. }
  325. function ds_combo_canrowposchange(obj:Dataset, e:DSRowPosChangeEventInfo)
  326. {
  327. var grid_leftright;
  328. if(obj.name == "ds_combo")
  329. grid_leftright = grid1_leftright;
  330. else
  331. grid_leftright = grid2_leftright;
  332. if(grid_leftright == 37 || grid_leftright == 39) {
  333. return false;
  334. } else {
  335. if(obj.name == "ds_combo")
  336. grid1_leftright = 0;
  337. else
  338. grid2_leftright = 0;
  339. return true;
  340. }
  341. }]]></Script>
  342. </Form>
  343. </FDL>