반응형
![](https://blog.kakaocdn.net/dn/xCHvX/btqELxxEsql/MRu5y9qe4HtXUv5zaKvXz1/img.png)
?<?xml version="1.0" encoding="utf-8"?> <FDL version="1.5"> <TypeDefinition url="..\..\default_typedef.xml"/> <Form id="COLOR_P" classname="MST_P001" inheritanceid="" position="absolute 0 0 330 350" titletext="색상표" onload="form_onload" onkeydown="BYPLNT_P_onkeydown"> <Layouts> <Layout> <Div id="div_color" taborder="0" text="Div00" position="absolute 45 41 285 241" style="background:transparent;"> <Layouts> <Layout> <Static id="stRedYellow" position="absolute 0 0 40 200" style="background:@gradation;gradation:linear 0,0 #ff0000ff 100,0 #ffff00ff;" text=""/> <Static id="stYellowGreen" position="absolute 40 0 80 200" style="background:@gradation;gradation:linear 0,0 #ffff00ff 100,0 #00ff00ff;" text=""/> <Static id="stGreenSkyblue" position="absolute 80 0 120 200" style="background:@gradation;gradation:linear 0,0 #00ff00ff 100,0 #00ffffff;" text=""/> <Static id="stSkyblueBlue" position="absolute 120 0 160 200" style="background:@gradation;gradation:linear 0,0 #00ffffff 100,0 #0000ffff;" text=""/> <Static id="stBlueViolet" position="absolute 160 0 200 200" style="background:@gradation;gradation:linear 0,0 #0000ffff 100,0 #ff00ffff;" text=""/> <Static id="stVioletRed" position="absolute 200 0 240 200" style="background:@gradation;gradation:linear 0,0 #ff00ffff 100,0 #ff0000ff;" text=""/> </Layout> </Layouts> </Div> <Div id="div_position" taborder="2" position="absolute 45 41 285 241" style="background:@gradation;gradation:linear 0,0 #7f7f7f00 0,100 #7f7f7fff;" onclick="div_position_onclick" ondragmove="div_position_ondragmove" ondrag="div_position_ondrag"> <Layouts> <Layout> <ImageViewer id="imgSelect" taborder="0" position="absolute -11 -11 11 11" ondrag="div_position_imgSelect_ondrag" style="background:transparent;border:2 solid white transparent;"/> </Layout> </Layouts> </Div> <Div id="divBright" taborder="3" position="absolute 287 36 327 246" ondragmove="divBright_ondragmove"> <Layouts> <Layout> <Static id="stBright" position="absolute 8 5 21 205" style="background:@gradation;gradation:linear 0,0 #ffffffff 0,100 #000000ff [50% #ff0000ff];" text="" onclick="divBright_stBright_onclick"/> <Button id="btnSelect" taborder="1" text="▶ ◀" position="absolute -2 100 33 110" style="background:transparent;color:black;font:Dotum,9, antialias;" ondrag="btnSelect_ondrag"/> </Layout> </Layouts> </Div> <Static id="stColorValue" position="absolute 115 274 229 294" style="border:1 solid #c8d0d7ff,1 solid #e3e7eaff,1 solid #e3e7eaff,1 solid #c8d0d7ff;padding:0 0 0 7;bordertype:round 3 3 ;" text=""/> <Static id="stColorView" position="absolute 237 254 252 272" style="background:transparent; border:1 solid #c8d0d7ff,1 solid #e3e7eaff,1 solid #e3e7eaff,1 solid #c8d0d7ff; padding:0 0 0 7; bordertype:round 3 3 ; " text="" visible="false"/> <Static id="stView" position="absolute 45 249 109 294" style="background:transparent;border:1 solid #c8d0d7ff,1 solid #e3e7eaff,1 solid #e3e7eaff,1 solid #c8d0d7ff;padding:0 0 0 7;bordertype:round 3 3 ;" text=""/> <Static id="stText" position="absolute 112 255 226 275" style="padding:0 0 0 7;" text="선택 색상 값"/> <Static id="stRed" position="absolute 10 40 40 60" style="background:#ff0000ff;border:1 solid #c8d0d7ff,1 solid #e3e7eaff,1 solid #e3e7eaff,1 solid #c8d0d7ff;padding:0 0 0 7;bordertype:round 3 3 ;" onclick="fixColor_onclick" userPosition="0" userGubn="0"/> <Static id="stYellow" position="absolute 10 65 40 85" style="background:#ffff00ff;border:1 solid #c8d0d7ff,1 solid #e3e7eaff,1 solid #e3e7eaff,1 solid #c8d0d7ff;padding:0 0 0 7;bordertype:round 3 3 ;" onclick="fixColor_onclick" userPosition="40" userGubn="0"/> <Static id="stGreen" position="absolute 10 90 40 110" style="background:#00ff00ff;border:1 solid #c8d0d7ff,1 solid #e3e7eaff,1 solid #e3e7eaff,1 solid #c8d0d7ff;padding:0 0 0 7;bordertype:round 3 3 ;" onclick="fixColor_onclick" userPosition="80" userGubn="0"/> <Static id="stSkyBlue" position="absolute 10 115 40 135" style="background:#00ffffff;border:1 solid #c8d0d7ff,1 solid #e3e7eaff,1 solid #e3e7eaff,1 solid #c8d0d7ff;padding:0 0 0 7;bordertype:round 3 3 ;" onclick="fixColor_onclick" userPosition="120" userGubn="0"/> <Static id="stBlue" position="absolute 10 140 40 160" style="background:#0000ffff;border:1 solid #c8d0d7ff,1 solid #e3e7eaff,1 solid #e3e7eaff,1 solid #c8d0d7ff;padding:0 0 0 7;bordertype:round 3 3 ;" onclick="fixColor_onclick" userPosition="160" userGubn="0"/> <Static id="stViolet" position="absolute 10 165 40 185" style="background:#ff00ffff;border:1 solid #c8d0d7ff,1 solid #e3e7eaff,1 solid #e3e7eaff,1 solid #c8d0d7ff;padding:0 0 0 7;bordertype:round 3 3 ;" onclick="fixColor_onclick" userPosition="200" userGubn="0"/> <Static id="stWhite" position="absolute 10 190 40 210" style="background:#ffffffff;border:1 solid #c8d0d7ff,1 solid #e3e7eaff,1 solid #e3e7eaff,1 solid #c8d0d7ff;padding:0 0 0 7;bordertype:round 3 3 ;" onclick="fixColor_onclick" userPosition="0" userGubn="1"/> <Static id="stBlack" position="absolute 10 215 40 235" style="background:#000000ff;border:1 solid #c8d0d7ff,1 solid #e3e7eaff,1 solid #e3e7eaff,1 solid #c8d0d7ff;padding:0 0 0 7;bordertype:round 3 3 ;" onclick="fixColor_onclick" userPosition="200" userGubn="1"/> <Static id="Static00" class="sta_POP_ButtonArea" position2="absolute l:0 r:0 b:0 h:35" positiontype="position2"/> <Button id="btn_confirm" taborder="4" text="확인" onclick="btn_confirm_onclick" class="btn_WF_Confirm" visible="true" position2="absolute r:80 w:69 b:0 h:25" positiontype="position2"/> <Button id="btn_close" taborder="5" text="닫기" onclick="btn_close_onclick" class="btn_WF_Confirm" position2="absolute r:8 w:69 b:0 h:25" positiontype="position2"/> </Layout> </Layouts> <Objects/> <Bind/> <Script type="xscript4.0"><![CDATA[/*============================= Program description ================================* * Form ID : _COM_PRD_COLOR_P.xadl * Form Desc. : * Author : * Create Date : 2020.04.17 * Change History *======================================================================================* * 수정일 / 이름 / 사유 *======================================================================================* *======================================================================================* /*======================================================================================* * 1. include *======================================================================================*/ include "biz.library::bizInclude.xjs"; /*======================================================================================* * 2. Form 변수 *======================================================================================*/ var divColorWidth = 40; var divColorHeight =200; var strReturn =""; var BasicColor="#ffff00ff"; /*======================================================================================* * 3. Form Load *======================================================================================*/ function form_onload(obj:Form, e:LoadEventInfo) { //if(!UtilMisc.isEmpty(pColorCd)) stColorValue.text = pColorCd; fn_formInit(obj, e); } function fn_formInit(obj:Form, e:LoadEventInfo) { } /*========================================================* * 4. Transaction *========================================================*/ /*========================================================* * 5. Transaction CallBack * ========================================================*/ /*========================================================* * 6. 사용자정의 함수 *========================================================*/ //색상 function lfn_color(startColor,endColor,percentage) { var sColor = new Array(); var eColor = new Array(); var vColor = new Array(); sColor[0] = startColor.substr(1,2); sColor[1] = startColor.substr(3,2); sColor[2] = startColor.substr(5,2); eColor[0] = endColor.substr(1,2); eColor[1] = endColor.substr(3,2); eColor[2] = endColor.substr(5,2); var strS=0, strE=0, strV=0; var strReturn = ""; for (var i = 0 ; i < 3 ; i++) { strS = lfn_convert10(sColor[i]); //16진수->10진수 strE = lfn_convert10(eColor[i]); //16진수->10진수 strH = Math.round(((parseInt(strE) - parseInt(strS))*percentage)+parseInt(strS)); //색상 계산 공식 vColor[i] =lfn_convert16(strH); //10진수->16진수 } strReturn = "#"+vColor[0]+vColor[1]+vColor[2]; return strReturn; } //색상 Div 선택시 값 설정 //========================================================= //e.canvasX // - 0 ~ 80 -> Red(#ff0000ff) ~Yellow(#ffff00ff) // - 81 ~ 160 -> Yellow(#ffff00ff) ~Green(#00ff00ff) // - 160 ~ 240 -> Green(#00ff00ff) ~Skyblue(#00ffffff) // - 240 ~ 320 -> Skyblue(#00ffffff) ~blue(#0000ffff) // - 320 ~ 400 -> blue(#0000ffff) ~Violet(#ff00ffff) // - 400 ~ 480 -> Violet(#ff00ffff) ~Red(#ff0000ff) //========================================================= function fn_SelectColor(obj,strCanvasX,strCanvasY) { var selectColorX=""; var selectColorY=""; var strpercentage =""; var startColor=""; var endColor=""; if((strCanvasX > -1) && (strCanvasX < (divColorWidth+1))) { strpercentage = strCanvasX/divColorWidth; startColor ="#ff0000ff"; endColor ="#ffff00ff"; } else if((strCanvasX > divColorWidth) && (strCanvasX < (divColorWidth*2+1))) { strpercentage = (strCanvasX-divColorWidth)/divColorWidth; startColor ="#ffff00ff"; endColor ="#00ff00ff"; } else if((strCanvasX > (divColorWidth*2)) && (strCanvasX < (divColorWidth*3+1))) { strpercentage = (strCanvasX-(divColorWidth*2))/divColorWidth; startColor ="#00ff00ff"; endColor ="#00ffffff"; } else if((strCanvasX > (divColorWidth*3)) && (strCanvasX < (divColorWidth*4+1))) { strpercentage = (strCanvasX-(divColorWidth*3))/divColorWidth; startColor ="#00ffffff"; endColor ="#0000ffff"; } else if((strCanvasX > (divColorWidth*4)) && (strCanvasX < (divColorWidth*5+1))) { strpercentage = (strCanvasX-(divColorWidth*4))/divColorWidth; startColor ="#0000ffff"; endColor ="#ff00ffff"; } else { strpercentage = (strCanvasX-(divColorWidth*5))/divColorWidth; startColor ="#ff00ffff"; endColor ="#ff0000ff"; } selectColorX = lfn_color(startColor,endColor, strpercentage)+"ff"; selectColorY = lfn_color(selectColorX,"#7f7f7fff",strCanvasY/divColorHeight) + "ff"; stColorValue.text = selectColorY; stColorView.style.background.color = selectColorY; stView.style.background.color = selectColorY; divBright.stBright.style.gradation = "linear 0,0 #ffffffff 0,100 #000000ff [50% "+selectColorY+"]"; divBright.btnSelect.position.y= 100; //커서 위치 div_position.imgSelect.position.x = strCanvasX - 11; div_position.imgSelect.position.y = strCanvasY - 11; } //명도 색상값 선택 함수 function fn_brightSelect(obj,strClientY) { var startColor; //gradation 시작 색상값 var endColor; //gradation 종료 색상값 var strPecent; //gradation 위치 퍼센트 var okColor; //최종 색 선택값 // var strObj = e.sourceobject.name; //버튼명 //버튼 위치 조정 if(strClientY < 0) { obj.position.y = 0; } else if(strClientY > 200) { obj.position.y = 200; } else { obj.position.y = strClientY; } //버튼 위치에 따른 색상값 if(strClientY < 0) { strPecent = 1; startColor = stColorView.style.background.color; endColor = "#ffffffff"; } else if((strClientY > -1) && (strClientY < 100)) { strPecent = (100-strClientY)/100; startColor = stColorView.style.background.color; endColor = "#ffffffff"; } else if(strClientY == 100) { okColor = stColorView.style.background.color; } else if((strClientY > 100) && (strClientY < 201)) { strPecent = (200-strClientY)/100; startColor = "#000000ff"; endColor = stColorView.style.background.color; } else { strPecent = 0; startColor = "#000000ff"; endColor = stColorView.style.background.color; } // 초기값 transparent 으로 나오는부분 수정 if(startColor == "transparent"){ startColor = "#ffffff"; } if(endColor == "transparent"){ endColor = "#000000"; } okColor = lfn_color(String(startColor),String(endColor), strPecent)+"ff"; // 최종 색상 값 stColorValue.text = okColor; //최종 색상 값 TEXT 표시 stView.style.background.color = okColor; //최종 색상 값 Image 표시 } //10진수 변환 함수 function lfn_convert10(strC) { var nDec = 0; var abc; for(var i = 0; i < strC.length ; i++) { abc = strC.substr(i,1); var nTemp = 0; switch (abc) { case "a": nTemp = 10; break; case "b": nTemp = 11; break; case "c": nTemp = 12; break; case "d": nTemp = 13; break; case "e": nTemp = 14; break; case "f": nTemp = 15; break; default: nTemp = abc; break; } nDec = nDec * 16 + parseInt(nTemp); } return nDec; } //16진수 변함 함수 function lfn_convert16(strC) { var abc = new Array(); var nTemp = 0; var nDec=""; abc[0] = strC%16; abc[1] = Math.floor(strC/16); for(var i = 1 ; i > -1 ; i--) { switch (abc[i]) { case 10: nTemp = "a"; break; case 11: nTemp = "b"; break; case 12: nTemp = "c"; break; case 13: nTemp = "d"; break; case 14: nTemp = "e"; break; case 15: nTemp = "f"; break; default: nTemp = abc[i]; break; } nDec = nDec + String(nTemp); } return nDec; } function fixColor_onclick(obj:Static, e:ClickEventInfo) { if(obj.userGubn ==0) { fn_SelectColor(div_position,obj.userPosition,0); }else{ divBright.btnSelect.position.y = obj.userPosition; fn_brightSelect(divBright.btnSelect,divBright.btnSelect.position.y); } } /* * 팝업 Close */ function fn_returnData() { var aResult = []; aResult["RESULT"] = true; aResult["DISPLAY_COLOR"] = stColorValue.text; fn_close(aResult); } /* * Close 버튼 */ function btn_close_onclick(obj:Button, e:ClickEventInfo) { fn_close(); } // 제품정보 목록을 더블클릭 할 때. function grd_result_oncelldblclick(obj:Grid, e:GridClickEventInfo) { fn_returnData(); } // 제품정보 목록을 선택후 확인 버튼을 클릭 할 때. function btn_confirm_onclick(obj:Button, e:ClickEventInfo) { fn_returnData(); } /* < Validation >============================================================================= */ /*========================================================* * 7. 이벤트 함수 *========================================================*/ // 폼키다운 function BYPLNT_P_onkeydown(obj:Form, e:KeyEventInfo) { if (e.keycode == 13){ Div00.btn_search.setFocus(); fn_search(); } } //================================================== // 이벤트 함수 //================================================== //div_position 색상 선택 이벤트 function div_position_onclick(obj:Div, e:ClickEventInfo) { fn_SelectColor(obj,e.canvasX,e.canvasY); } //div_positon 선택 이미지 ondrag 이벤트 function div_position_imgSelect_ondrag(obj:ImageViewer, e:DragEventInfo) { return true; } //div_ondrag 이벤트 function div_position_ondrag(obj:Div, e:DragEventInfo) { return true; } //색상 ondragMove 이벤트 function div_position_ondragmove(obj:Div, e:DragEventInfo) { fn_SelectColor(obj,e.canvasX,e.canvasY); } //명도 값 변경 버튼 ondrag 이벤트 function btnSelect_ondrag(obj:Button, e:DragEventInfo) { return true; } //명도 값 gradation onClick 이벤트 function divBright_stBright_onclick(obj:Static, e:ClickEventInfo) { divBright.btnSelect.position.y = e.canvasY; fn_brightSelect(divBright.btnSelect,divBright.btnSelect.position.y) ; // btnSelect_ondrag(obj,) } //명도 값 변경 division ondragmove 이벤트 function divBright_ondragmove(obj:Div, e:DragEventInfo) { if(e.sourceobject.name == "btnSelect") { fn_brightSelect(e.sourceobject,e.clientY) } } //색상 선택 버튼 function btnOk_onclick(obj:Button, e:ClickEventInfo) { strReturn = stColorValue.text; btnClose_onclick(); } //색상 선택 취소 버튼 function btnCancle_onclick(obj:Button, e:ClickEventInfo) { strReturn = ""; btnClose_onclick(); } //창 닫기 버튼 function btnClose_onclick(obj:Button, e:ClickEventInfo) { close(strReturn); } ]]></Script> </Form> </FDL>
반응형
'IT > xPlatform' 카테고리의 다른 글
xPlatform Static에서 개행하기 (0) | 2022.07.20 |
---|---|
xPlatform 데이터셋 updatecontrol setRowType 주의 사항 (0) | 2022.07.20 |
xPlatform ShowCase (0) | 2020.06.10 |
xPlatfomr 계산 값이 잘못 됐거나, 컴퓨터 마다 계산식이 다를 때 (0) | 2020.06.10 |
xPlatform 그리드 Line 동적으로 그리기 (0) | 2020.06.05 |
댓글