안녕하세요. 😁 😁 과거에 이미지를 글자 위에 겹쳐서 찍는 코드를 파이썬으로 구현하고 싶은데 할 줄 몰라서 질문 했던 학생입니다. 실력이 부족해서 해답을 발견하는데까지 너무 오래 걸렸네요 ㅠㅠ 거두절미하고 질문했던 사람으로서 제 질문에 답을 공유해서 누군지 모르겠지만 혹시라도 누군가에게 도움이 되길 바라는 마음으로 제가 찾은 코드를 공유하고자 합니다. 1. 원하는 기능 요약 먼저 제가 과거에 했던 질문내용을 모르시는 분들을 위하여 제가 원했던 기능을 다시 정리합니다. (이미 아시는 분들은 이번 목차 내용 전부 안 읽고 넘어가셔도 무방합니다.) 한/컴 문서에 이미지를 추가한다. 이미지의 속성 중 '글자처럼 취급' 속성을 해제한다. 추가한 이미지를 글자와 겹치도록 위치시킨다. 이미지가 글자와 겹쳐서 위치 될 때 이미지가 문자 위에 존재하도록 설정한다. 2. 코드 내용 import os import win32com.client as win32 hwp = win32.gencache.EnsureDispatch("hwpframe.hwpobject") hwp.XHwpWindows.Item(0).Visible = True hwp.RegisterModule("FilePathCheckDLL", "FilePathCheckerModule") file_path = os.path.join(os.getcwd(), "문서양식/테스트문서.hwp") hwp.Open(file_path) img_path = r"추가하길원하는이미지경로.png" hwp.InsertPicture(img_path, Embedded=True) hwp.FindCtrl() # 이미지 선택 (커서에서 인접한 개체 선택) hwp.HAction.GetDefault("ShapeObjDialog", hwp.HParameterSet.HShapeObject.HSet) # 액션 초기화 hwp.HParameterSet.HShapeObject.TextWrap = hwp.TextWrapType("InFrontOfText") # 글 위로 배치 # 혹시라도 글 뒤로 배치를 원하시는 분들은 "BehindText" 으로 변경해서 사용하셔요. ^^ hwp.HParameterSet.HShapeObject.TreatAsChar = 0 # 글자처럼 취급 해제 hwp.HAction.Execute("ShapeObjDialog", hwp.HParameterSet.HShapeObject.HSet) # 실행 위 코드 테스트를 원하시는 분들은 'file_path' 변수의 파일 경로와 'img_path' 의 이미지 파일 경로만 자신의 상황에 맞게 지정하여 테스팅 해보시면 됩니다. file_path 는 hwp 문서파일의 경로를 지정하세요. img_path 는 hwp 문서에 추가하시길 원하시는 이미지 파일의 경로를 지정하시면 됩니다. 나머지는 전부 다 이미 잘 알고 계시리라 생각합니다. 3. 끝으로.. 음... 사실 혼자 알아내는게 너무 힘들었습니다. 물론 어려워서가 아니라. 제 개인의 실력부족 때문에요 ㅎㅎ 그래도 결국 포기하지 않아서 알아내니까 기분은 좋네요. 아무튼 위 코드와 관련하여 추가적인 궁금점이 있으신 분들은 댓글 남겨주시면 제가 능력범위 내에서 도움드릴 수 있는 내용은 도움을 드리고 싶습니다. 물론 능력이 아주 많이 부족하니 도와드리지 못하는 것들이 많을 수 있습니다. ㅠㅠ 미리 사과드립니다. 모쪼록 저와 같은 고민을 하셨던 분들에게 작은 도움이 되었길 바랍니다. 그리고 제가 원하는 기능을 구현하도록 도와주기 위해 여러 차례 답변을 답해주신 신명진 강사님께도 정말로 진심으로 감사하단 말씀 드립니다.
src에서 정적 에셋을 관리할 경우 src 안의 파일은 삭제하거나 오타를 내면 빌드 실패로 알 수 있으나, public 폴더는 그게 불가능해서 위험함 public 이미지는 캐시되어서 변경되었을 경우 바뀌지 않을 수 있음 javascript에서 모듈 형식으로 import 가능 라는 장단점을 찾았는데, public에서 관리할 경우의 장점은 무엇이 있을까요? 그리고 public에서 관리되는 에셋은 왜 Javascript 코드 내에서 사용하지 말아야 할까요? Vite 공식 문서에도 사용하지 말라는 설명은 있는데, 이유가 궁금합니다. 우선 src 안의 파일은 삭제하거나 오타를 내면 빌드 실패로 알 수 있으나, public 폴더는 그게 불가능해서 위험함 이게 이유 같긴 한데요. 더 있을까요?
[리뉴얼] 처음하는 MongoDB(몽고DB) 와 NoSQL(빅데이터) 데이터베이스 부트캠프 [입문부터 활용까지] (업데이트)
다음 강의 듣다가 끄고 다시 켜 보니까 funcoding 데이터베이스가 보이질 않습니다. admin, config, local 3개만 보여요. refresh 해도 안보여서 새 데이터베이스를 만들고 refresh하니까 그 데이터베이스도 보이질 않네요. 뭐가 다른지 이 강의부터 되짚어보고 있는데, 저는 Connection folder이 <root level>로 잡히지 않고, Local resources로 잡힙니다. 혹시 이게 문제일까요?
!pip install matplotlib !pip install konlpy !pip install wordcloud import matplotlib.pyplot as plt %matplotlib inline from wordcloud import WordCloud from konlpy.corpus import kolaw from konlpy.tag import Okt t = Okt() ko_con_text = kolaw. open ( 'constitution.txt' ).read() tokens_ko = t.nouns(ko_con_text) tokens_ko = [ko for ko in tokens_ko if len (ko) >= 2 ] stop_words = [ '경우' , '거나' ] tokens_ko = [ko for ko in tokens_ko if ko not in stop_words] import nltk ko = nltk.Text(tokens_ko, name= "대한민국 헌법" ) import matplotlib.font_manager as fm ! apt-get -qq install fonts-nanum fe = fm.FontEntry( fname = '/usr/share/fonts/truetype/nanum/NanumGothic.ttf' , name = 'NanumGothic' # 폰트를 원하는 이름으로 설정 ) fm.fontManager.ttflist.insert( 0 ,fe) # Matplotlib에 폰트 추가 plt.rcParams.update({ 'font.size' : 9 , ' font.family ' : 'NanumGothic' }) # 폰트 설정 plt.figure(figsize=( 8 , 4 )) # figsize(가로,세로) ko.plot( 50 ) # 가로축 항목의 개수 plt.show () 위 코드를 했을 때, 그래프가 정상적으로 잘 출력이 되었었습니다. 그런데 갑자기 어느 순간 최하단에서 2번째 줄 ko.plot(50)에 에러가 발생하면서 아래의 문제가 생겼는데 무엇이 문제일까요,,? 구글링을 해도 해결방안을 찾을 수가 없네요,,,
섹션 2 "변수" 수업 자료중 프로그램은 한 줄씩 순서대로 실행된다. 어떻게 실행된 것인지 자세히 확인해보자. ```java a = 10; //변수 초기화: a(10) //1. 변수 a에 10을 저장한다. System.out.println(a); //2. 변수 a의 값을 읽는다. a에는 10이 들어있다. 10을 출력한다. a = 50; //변수 값 변경: //3. 변수 a의 값을 50으로 변경한다. a(10 -> 50) System.out.println(a); //4. 변수 a의 값을 읽는다. a에는 50이 들어있다. 50을 출력한다. ``` 참고로 변수의 값을 변경하면 변수에 들어있던 기존 값은 값은 삭제된다. "값은" 이 중복 되어 있어 올립니다..!
안녕하세요. VR콘텐츠 제작 중에 궁금한 부분이 생겨 질문 드립니다! 스켈레탈 메쉬를 cloth paint를 이용하여 이불을 만들었습니다. VR환경에서 그랩 컴포넌트로 사용하고 싶어서 캐릭터 블루프린트에 그랩컴포넌트를 넣고 만들었는데 이불을 잡자마자 크래쉬 리포터가 뜨면서 언리얼이 꺼집니다. 오류가 나는 이유가 정말 궁금합니다...! - 블렌더에서 컷을 한뒤 FBX로 뽑아 언리얼에서 cloth paint로 작업하였습니다. - 캐릭터 블루프린트에 그랩 컴포넌트를 추가하였습니다. - 시뮬레이션으로 이동하거나 VR프리뷰로 이동하면 이렇게 크래쉬 리포터가 뜹니다. 감사합니다.
질문 답변을 제공하지만, 강의 비용에는 Q&A는 포함되어 있지 않습니다. 다만 실습이 안되거나, 잘못된 내용의 경우는 알려주시면 가능한 빠르게 조치하겠습니다! [질문 전 답변] 1. 강의에서 다룬 내용과 관련된 질문인가요? [예 | 아니요] 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? [예 | 아니요] 3. 질문 잘하기 법을 읽어보셨나요? [예 | 아니요] ( https://www.inflearn.com/blogs/1719 ) 4. 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. 5. vagrant up 에서 발생하는 문제는 주로 호스트 시스템(Windows, MacOS)과 연관된 다양한 조건에 의해 발생합니다. 따라서 이를 모두 제가 파악할 수 없어서 해결이 어렵습니다. vagrant up 으로 진행이 어렵다면 제공해 드리는 가상 머신(VM) 이미지를 import해서 진행하시기 바랍니다. ( https://www.inflearn.com/questions/992407/comment/281901 ) 6. ARM 계열의 m1 , m2 계열은 VirtualBox를 통한 구성이 원할하지 않고, 실습 환경의 다변화는 추후 대처하기 어려워서 현재 과정에서는 지원하지 않습니다. ( https://www.inflearn.com/questions/915529 ) [질문 하기] 안녕하세요 강사님. 강의 잘 듣고있습니다. :) 4.2. 쿠버네티스 워커 노드의 구성 요소에 문제가 생겼다면 강의 실습 질문입니다. kubelet 중단실습 중 w1의 kubelet을 중단하고 마스터노드 m에서 deploy pod를 배포했을때, 강의에서는 "w1에도 pod가 배포되지만 pendding 상태로, w1 kubelet을 다시 start 시킨 후 running 시킬 수 있다." 라고 하였습니다. 강의를 따라가며 실습을 했지만 저의 경우, 아래 사진과 같이 w1을 제외한 w2와 w3의 워커노드에만 pod가 생성되었습니다. deploy로 배포할 경우 자동으로 노드를 가능한 곳에 배포하게 되어 그런것인지 아니면 다른 문제가 있는지 궁금합니다. 감사합니다~!
// 어뎁터를 생성한다. (접혀져 있을 때의 모양을 설정) ArrayAdapter<String> adapter1 = new ArrayAdapter<String>(this, andriod.R.layout.simple_spinner_item, data1); andriod.R.layout 인식이 안됍니다.
설계독학맛비's 실전 FPGA를 이용한 HW 가속기 설계 (LED 제어부터 Fully Connected Layer 가속기 설계까지)
bram 실습강의에서 설계가 잘못되면 mismatch가 일어난다고 하셨는데 정확히 mismatch가 일어나는 이유가 궁금합니다. ================= 현업자인지라 업무때문에 답변이 늦을 수 있습니다. (길어도 만 3일 안에는 꼭 답변드리려고 노력중입니다 ㅠㅠ) 강의에서 다룬 내용들의 질문들을 부탁드립니다!! (설치과정, 강의내용을 듣고 이해가 안되었던 부분들, 강의의 오류 등등) 이런 질문은 부담스러워요.. (답변거부해도 양해 부탁드려요) 개인 과제, 강의에서 다루지 않은 내용들의 궁금증 해소, 영상과 다른 접근방법 후 디버깅 요청, 고민 상담 등.. 글쓰기 에티튜드를 지켜주세요 (저 포함, 다른 수강생 분들이 함께보는 공간입니다.) 서로 예의를 지키며 존중하는 문화를 만들어가요. 질문글을 보고 내용을 이해할 수 있도록 남겨주시면 답변에 큰 도움이 될 것 같아요. (상세히 작성하면 더 좋아요! ) 먼저 유사한 질문이 있었는지 검색해보세요. 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. ==================
안녕하세요! 강의 수강 중인 학생입니다:) 자바 메모리 구조와 static 강의에서 static은 메서드 영역에 저장된다고 배우며, static 관련하여 찾아보던 중 자바 8버전 이후부터는 힙 영역에서 관리된다는 글을 확인하게 되었습니다. 이후, static이 메서드 영역에 저장되는 것인지 힙 영역에 저장되는 것인지 명확하게 파악할 수 없어 질문 남기게 되었습니다ㅜㅜ 어떤 부분에서 관리되는 것일까요?
안녕하세요. 우선 연이어 질문 드려서 정말 죄송합니다. 어제 문의드렸던 내용 안내해주신대로 수정 팝업에 대한 함수 만들어서 구현해보았는데 여전히 수정 후, 게시판 메인화면에 조회버튼을 재클릭해야 수정사항이 반영되고 있습니다. 해결책이 마땅치 않아 재차 관련 내용 문의드리며, OB_001.xfdl l코드 블록 참조하여 문의 드립니다. 아직 응용하기에 벅찬 부분이 있어 주문 수정과 함께 주문 등록도 같이 안내해주시면 정말 감사하겠습니다. 재차 문의드려 번거롭게 해드려 죄송합니다. 이왕 시작한 것 꼭 구현해보고자 해서 문의드립니다. 답변 주시면 정말 감사하겠습니다. 감사합니다. (혹시 몰라 OB_001_01.xfdl과 OB_001_02.xfdl 코드블록도 참조드리겠습니다. 글자 수 제한 때매 다음 게시글에 첨부드리니 참조 해주시면 감사하겠습니다.) this.OB_001_onload = function(obj:nexacro.Form,e:nexacro.LoadEventInfo) { //alert("onload 함수 실행"); //OB_001.xfml 화면이 로드될 때, 검색 조건의 주문상태 콤보박스를 초기화 시킨다. //서버에 요청을 하기전에 서버에 전달해줘야할 인자값은 뭐가 있을지 생각해봐야 한다. //주문상태값만을 불러오기 위해선 TB_CD_MST 테이블의 WHERE절에 CD_VAL = '001'이라는 조건을 걸어줘야 한다. //따라서 DATASET에 001이라는 값을 넣어 서버로 전달 //ds_searchCombo 데이터셋을 생성하고 서버로 전달할 인자값 추가. this.ds_searchCombo.clearData();//데이터셋을 초기화 this.ds_searchCombo.addRow();//초기화한 데이터셋에 값을 세팅하기 위해 한줄을 추가 this.ds_searchCombo.setColumn(0,"CD_VAL","001");//추가된 0번째 ROW의 CD_VAL 컬럼에 001이라는 값을 추가 //서버로 데이터 전송 //서버로 데이터를 전송하기 전 필요한 값 세팅 var strSvcId = "selectCommonCode"; //넥사크로에서 트랜잭션을 구분하기 위한 id값, 이 id값은 차후 fncallback함수에 쓰인다. var strSvcUrl = "selectCommonCode.do"; //java Controller에서 요청을 처리 var inData = "ds_search=ds_searchCombo"; //서버로 전송할 데이터셋을 세팅 = 문자 기준으로 왼쪽이 서버, 오른쪽이 프론트 데이터셋 //서버측(.java)에도 = 기준 왼쪽 데이터셋명(ds_search)과 반드시 동일하게 명명해야한다. var outData = "ds_ordStatCombo=ds_commonCode"; //서버로부터 값을 전달받을 데이터셋을 세팅, inData와는 반대로 = 문자 기준으로 왼쪽이 프론트, 오른쪽이 서버 데이터셋 //서버측(.java)에서도 = 기준 오른쪽 데이터셋명(ds_commonCode)와 동일한 이름 사용해야함. var strAvg = ""; //데이터셋이 아닌 값을 보낼 때 쓰는 필드지만 데이터셋을 쓰는 것으로 통일 var callBackFnc = "fnCallback"; //서버로부터 값을 받은 이후 프론트에서 이행해야할 작업 코드를 fnCallback 함수에서 작성 this.gfnTransaction(strSvcId ,strSvcUrl ,inData ,outData ,strAvg ,callBackFnc); }; this.fn_search = function(nPageNo) { //alert("주문리스트 조회"); //1. 조회 버튼을 클릭했을 때, 우리는 db에서 데이터를 조회하여 값을 그리드에 뿌려줘야 한다. //프론트에서 값들을 데이터셋에 생성해서 서버로 보내줘야 한다. //검색조건에 있는 5개 조회 요건들의 맞게 값들을 담아서 서버로 보내줘야 한다. //값들을 주문 리스트 조회 시 where절에 넣어줘야 조건에 알맞은 데이터를 가져올 수 있다. //1. 따라서, 검색 조건들을 ds_searchList라는 데이터셋을 만들어서 값을 세팅하는 작업을 수행해야 한다. //2. 서버에서 가져온 주문리스트를 화면단에 그리드에 보여줘야 한다. // 만들어놓은 그리드 뼈대에 서버에서 보내준 결과인 ds_list 데이터셋을 만들어 바인딩한다. // 바인딩함으로써 그리드가 서버로부터 가져오는 ds_list값을 보여주도록 만든다. //3. this.gfnTransaction 함수를 통해 서버로 데이터를 전송하고 받는 작업 수행 this.ds_searchList.clearData();//ds_searchList 데이터셋 초기화 this.ds_searchList.addRow();//초기화한 데이터셋에 데이터 세팅할 ROW추가 // column별 데이터 추가 // 데이터를 추가하기 위해서 set으로 세팅한다. this.ds_searchList.setColumn(0,"ORD_NO",this.edt_ordNo.value); this.ds_searchList.setColumn(0,"CUST_NM",this.edt_custNm.value); this.ds_searchList.setColumn(0,"COMP_YN",this.chk_cmpYn.value); this.ds_searchList.setColumn(0,"ORD_STAT_CD",this.cbo_ordStat.value); this.ds_searchList.setColumn(0,"CUST_GBCD",this.rdo_custGb.value); trace("ds_searchList::::::: 조회 버튼 클릭시 로그 확인 :::::::::::::::::::::::::"); trace("ORD_NO :" + this.ds_searchList.getColumn(0,"ORD_NO")); trace("CUST_NM :" + this.ds_searchList.getColumn(0,"CUST_NM")); trace("COMP_YN :" + this.ds_searchList.getColumn(0,"COMP_YN")); trace("ORD_STAT_CD :" + this.ds_searchList.getColumn(0,"ORD_STAT_CD")); trace("CUST_GBCD :" + this.ds_searchList.getColumn(0,"CUST_GBCD")); var strSvcId = "selectOrdList"; //넥사크로에서 트랜잭션을 구분하기 위한 id값, 이 id값은 차후 fncallback함수에 쓰인다. var strSvcUrl = "selectOrdList.do"; //java Controller에서 요청을 처리 var inData = "ds_searchList=ds_searchList"; //서버로 전송할 데이터셋을 세팅 = 문자 기준으로 왼쪽이 서버, 오른쪽이 프론트 데이터셋 //서버측(.java)에도 = 기준 왼쪽 데이터셋명(ds_search)과 반드시 동일하게 명명해야한다. var outData = "ds_list=ds_list"; //서버로부터 값을 전달받을 데이터셋을 세팅, inData와는 반대로 = 문자 기준으로 왼쪽이 프론트, 오른쪽이 서버 데이터셋 //서버측(.java)에서도 = 기준 오른쪽 데이터셋명(ds_commonCode)와 동일한 이름 사용해야함. var strAvg = ""; //데이터셋이 아닌 값을 보낼 때 쓰는 필드지만 데이터셋을 쓰는 것으로 통일 var callBackFnc = "fnCallback"; //서버로부터 값을 받은 이후 프론트에서 이행해야할 작업 코드를 fnCallback 함수에서 작성 this.gfnTransaction(strSvcId ,strSvcUrl ,inData ,outData ,strAvg ,callBackFnc); } this.btn_selectOrd_onclick = function(obj:nexacro.Button,e:nexacro.ClickEventInfo) { this.fn_search(); }; this.btn_regOrd_onclick = function(obj:nexacro.Button,e:nexacro.ClickEventInfo) { //alert("주문 등록 팝업 오픈"); var oArg = {}; var oOption = {}; var sPopupCallBack = "fnPopupCallback"; this.gfnOpenPopup("popup","Board::OB_001_01.xfdl",oArg,sPopupCallBack,oOption); }; this.btn_updOrd_onclick = function(obj:nexacro.Button,e:nexacro.ClickEventInfo) { //alert("주문 수정 팝업 오픈"); var ordNo = this.ds_list.getColumn(this.ds_list.rowposition,"ORD_NO"); var oArg = {ordNo:ordNo}; var oOption = {}; var sPopupCallBack = "fnPopupCallback"; this.gfnOpenPopup("popup","Board::OB_001_02.xfdl",oArg,sPopupCallBack,oOption); }; this.btn_delOrd_onclick = function(obj:nexacro.Button,e:nexacro.ClickEventInfo) { //alert("주문 삭제 진행"); var ordNo = this.ds_list.getColumn(this.ds_list.rowposition,"ORD_NO"); //확인창 띄우기 var confirmResult = this.confirm("주문을 삭제하시겠습니까?"); if (confirmResult){ this.ds_delList.clearData(); this.ds_delList.addRow(); this.ds_delList.setColumn(0,"ORD_NO",ordNo); //서버로 deleteOrdList.do 라는 URL 요청에 ds_delList값을 담아 전송 var strSvcId = "deleteOrdList"; //넥사크로에서 트랜잭션을 구분하기 위한 id값, 이 id값은 차후 fncallback함수에 쓰인다. var strSvcUrl = "deleteOrdList.do"; //java Controller에서 요청을 처리 var inData = "ds_delList=ds_delList"; //서버로 전송할 데이터셋을 세팅 = 문자 기준으로 왼쪽이 서버, 오른쪽이 프론트 데이터셋 //서버측(.java)에도 = 기준 왼쪽 데이터셋명(ds_search)과 반드시 동일하게 명명해야한다. var outData = ""; //서버로부터 값을 전달받을 데이터셋을 세팅, inData와는 반대로 = 문자 기준으로 왼쪽이 프론트, 오른쪽이 서버 데이터셋 //서버측(.java)에서도 = 기준 오른쪽 데이터셋명(ds_commonCode)와 동일한 이름 사용해야함. var strAvg = ""; //데이터셋이 아닌 값을 보낼 때 쓰는 필드지만 데이터셋을 쓰는 것으로 통일 var callBackFnc = "fnCallback"; //서버로부터 값을 받은 이후 프론트에서 이행해야할 작업 코드를 fnCallback 함수에서 작성 this.gfnTransaction(strSvcId ,strSvcUrl ,inData ,outData ,strAvg ,callBackFnc); } }; this.grd_ordList_oncelldblclick = function(obj:nexacro.Grid,e:nexacro.GridClickEventInfo) { //그리드 셀 더블 클릭시 실행 }; this.chk_cnpYn_onchanged = function(obj:nexacro.CheckBox,e:nexacro.CheckBoxChangedEventInfo) { //alert("onchanged 함수 실행"); }; this.grd_ordList_onheadclick = function(obj:nexacro.Grid,e:nexacro.GridClickEventInfo) { //아래 속성에서 0은 그리드에서 0번째 column을 의미하며, text값을 가져오라는 의미 var chkVal = obj.getCellProperty("head", 0, "text"); // 0이면 체크 안된 상태이고 1이면 체크된 상태 if(chkVal == "1"){ // 이미 체크된 상태라면 체크 해지로 변환 chkVal = "0"; obj.setCellProperty("head", 0, "text", chkVal); // 프론트에 적용(HEAD 부분) for (var i=0; i<this.ds_list.rowcount; i++) { // 프론트에 적용(ROW 부분) this.ds_list.setColumn(i,"CHK","0"); } }else{ chkVal = "1"; // 체크 안 된 상태라면 체크 표시 obj.setCellProperty("head", 0, "text", chkVal); // 프론트에 적용(HEAD 부분) for(var i=0; i<this.ds_list.rowcount; i++){ // 프론트에 적용(ROW 부분) this.ds_list.setColumn(i,"CHK","1"); } } }; /******************************************************************************************* * CallbackFunction (서버수신 후 후처리 영역) ********************************************************************************************/ this.fnCallback = function(svcID, errorCode, errorMsg) { if(errorCode < 0){ alert("작업 실패 코드: " + errorCode + "\n" + errorMsg) return 0; } switch(svcID) { case "selectCommonCode" : this.ds_ordStatCombo.insertRow(0);//0번째 ROW에 라인 삽입 this.ds_ordStatCombo.setColumn(0,"CD_VAL1",""); this.ds_ordStatCombo.setColumn(0,"CD_NM1","전체"); break; case "deleteOrdList" : alert("주문 삭제 완료 되었습니다."); //조회버튼을 누르는 동작 this.fn_search(); break; } }; this.fnPopupCallback = function (strId, strVal) { trace("strId :" + strId + "strVal :" + strVal); switch(strId) { case "updatePopup" : this.fn_search(); break; } };