HOME   로그인   회원가입
    
회원가입
비밀번호 찾기 자동로긴
이전게시판
   free_board
   건강게시판
   오라클DB
   Linux
   HTML/javascript
   질문과 답
호서기
   이미지게시판  
   건강게시판  
   음악자료  
   성준이 게시판  
  2009-03-27 07:06:212754 
dhtml edit control 분석 - 내 홈페이지에 wysisyg에디터를 달아보자.
호석
전엔 게시판등에 html태그를 직접 코딩을 하는 식으로 게시물을 올렸지만 요새는 위지윅에딧 방식의 에디터를 달아 놓은 경우가 많습니다.

보통의 웹사이트에서는 익스 플로러 5.0이상에 내장되어 있는 dhtml edit 컨트롤이라는것을 사용하여 만들어놓은 경우가 종종 있습니다.

(오픈 소스의경우 거의 대부분이 이 컨트롤을 세세하게 자바스크립트를 이용하여 컨트롤하는 형식으로 만들어 둔것이 많습니다.)

제가 예전에 한국 과학 기술 평가원의 저작툴을 만들때 이 컨트롤을 이용하여 만들었었는데 분석하면서 자체 세미나 하면서 만들어 두었던 자료 입니다.

---------------------------------

<!--
[Use The DHtmlED control EX.]
[AT Seminar 2003.02.22]

작성자 : 정문수
작성일 : 2003.02.21
-->
<!--


본 소스는 익스 플로러에 내장 되어 있는 dhtmled 컨트롤을 javascript-x 로 핸들링을 하는 예제 소스 입니다.
현재 wysiwyg 방식으로 웹 문서를 작성하는 여러 툴들이 개발되어 있고 - 나모웹에디터, 프론트 페이지, 인터디브, 드림위버 등등-
그 툴들은 어떤 방식으로 만들어 지는가에 대해 대략적인 감을 잡을수 있으리라 생각됩니다.
각 제품마다의 dhtmled 컨트롤은 각 회사들이 개발한것들이기에 다소 차이가 있을수 있으나 기본은 같다라는것만 인지하시면 됩니다.

-->



<!--
[Use The DHtmlED control EX.]
[AT Seminar 2003.02.22]

작성자 : 정문수
작성일 : 2003.02.21
-->
<!--


본 소스는 익스 플로러에 내장 되어 있는 dhtmled 컨트롤을 javascript-x 로 핸들링을 하는 예제 소스 입니다.
현재 wysiwyg 방식으로 웹 문서를 작성하는 여러 툴들이 개발되어 있고 - 나모웹에디터, 프론트 페이지, 인터디브, 드림위버 등등-
그 툴들은 어떤 방식으로 만들어 지는가에 대해 대략적인 감을 잡을수 있으리라 생각됩니다.
각 제품마다의 dhtmled 컨트롤은 각 회사들이 개발한것들이기에 다소 차이가 있을수 있으나 기본은 같다라는것만 인지하시면 됩니다.

<OBJECT classid=clsid:2D360201-FFF5-11D1-8D03-00A0C959BC0A height=405 id=tbCE width=700 VIEWASTEXT><PARAM NAME="Scrollbars" VALUE="true"></OBJECT>

라는 코드가 익스 내장 dhmled 컨트롤을 불러 오는것인데 이 컨트롤의 모양은 나모 웹에디터의 편집창을 생각하시면 됩니다.
하얀 바탕에 글자도 써지고 글자를 선택하여 굵게도 하고 그런 일들을 하는 편집창(dhtmled) 을 불러 쓰겠다는 것입니다. (액티브액스 컨트롤 쓰기 태그)
dhtmled 컨트롤의 아이디를 tbCE 라 하고 tbCE의 여러 메소드등을 이용하여 간단하게 html 문서에서 웹문서를 작성하는것을 보여드리겠습니다.

모든 상세한 설명은 온라인 msdn에 나와있다는것을 말씀드리겠습니다.
(위치 : 문수컴퓨터\F\Study\_Projects\DHTMLed\Docs\SDK_Help.chm 파일이 설명서 파일입니다.)
-->
<html>
<SCRIPT-x language="javascript-x">
// 이곳은 dhtmled 컨트롤을 핸드링 하려는 상수들입니다.
// 이 상수들은 dhtmled  컨트롤에 대한 online-msdn 에 나와있는 내용입니다.
// 미리 말씀드리자면 dhtmled 컨트롤은 dhtmled 컨트롤의 ExecCommand(명령상수, 옵션상수, 옵셔널이름) 메소드 하나만으로도 충분히 핸들링이 가능합니다.
// 상수들의 이름을 보시면 대충 뭐하는 상수겠구나 이해가 갈것입니다.
// Command IDs
//
 DECMD_BOLD =                      5000
 DECMD_COPY =                      5002
 DECMD_CUT =                       5003
 DECMD_DELETE =                    5004
 DECMD_DELETECELLS =               5005
 DECMD_DELETECOLS =                5006
 DECMD_DELETEROWS =                5007
 DECMD_FINDTEXT =                  5008
 DECMD_FONT =                      5009
 DECMD_GETBACKCOLOR =              5010
 DECMD_GETBLOCKFMT =               5011
 DECMD_GETBLOCKFMTNAMES =          5012
 DECMD_GETFONTNAME =               5013
 DECMD_GETFONTSIZE =               5014
 DECMD_GETFORECOLOR =              5015
 DECMD_HYPERLINK =                 5016
 DECMD_IMAGE =                     5017
 DECMD_INDENT =                    5018
 DECMD_INSERTCELL =                5019
 DECMD_INSERTCOL =                 5020
 DECMD_INSERTROW =                 5021
 DECMD_INSERTTABLE =               5022
 DECMD_ITALIC =                    5023
 DECMD_JUSTIFYCENTER =             5024
 DECMD_JUSTIFYLEFT =               5025
 DECMD_JUSTIFYRIGHT =              5026
 DECMD_LOCK_ELEMENT =              5027
 DECMD_MAKE_ABSOLUTE =             5028
 DECMD_MERGECELLS =                5029
 DECMD_ORDERLIST =                 5030
 DECMD_OUTDENT =                   5031
 DECMD_PASTE =                     5032
 DECMD_REDO =                      5033
 DECMD_REMOVEFORMAT =              5034
 DECMD_SELECTALL =                 5035
 DECMD_SEND_BACKWARD =             5036
 DECMD_BRING_FORWARD =             5037
 DECMD_SEND_BELOW_TEXT =           5038
 DECMD_BRING_ABOVE_TEXT =          5039
 DECMD_SEND_TO_BACK =              5040
 DECMD_BRING_TO_FRONT =            5041
 DECMD_SETBACKCOLOR =              5042
 DECMD_SETBLOCKFMT =               5043
 DECMD_SETFONTNAME =               5044
 DECMD_SETFONTSIZE =               5045
 DECMD_SETFORECOLOR =              5046
 DECMD_SPLITCELL =                 5047
 DECMD_UNDERLINE =                 5048
 DECMD_UNDO =                      5049
 DECMD_UNLINK =                    5050
 DECMD_UNORDERLIST =               5051
 DECMD_PROPERTIES =                5052
 
 //
 // Enums
 //
 
 // OLECMDEXECOPT  
 OLECMDEXECOPT_DODEFAULT =         0 
 OLECMDEXECOPT_PROMPTUSER =        1
 OLECMDEXECOPT_DONTPROMPTUSER =    2
 
 // DHTMLEDITCMDF
 DECMDF_NOTSUPPORTED =             0 
 DECMDF_DISABLED =                 1 
 DECMDF_ENABLED =                  3
 DECMDF_LATCHED =                  7
 DECMDF_NINCHED =                  11
 
 // DHTMLEDITAPPEARANCE
 DEAPPEARANCE_FLAT =               0
 DEAPPEARANCE_3D =                 1 
 
 // OLE_TRISTATE
 OLE_TRISTATE_UNCHECKED =          0
 OLE_TRISTATE_CHECKED =            1
 OLE_TRISTATE_GRAY =               2

// 이하 부터 사용자 정의 자바스크립트 펑션들입니다.

//◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆//
//----------------------------------------------------------------------------------------------------------//
// 폰트를 바꾸는 펑션입니다. (마우스로 선택한 영역의문자들을 선택한 폰트로 바꿉니다.)
//----------------------------------------------------------------------------------------------------------//
function FontName_onchange(sel_obj) {
 var ty = sel_obj.options[sel_obj.selectedIndex].value;
 var n = sel_obj.selectedIndex;
 if( ty != 0 ){
 
  obj_editor.ExecCommand(DECMD_SETFONTNAME, OLECMDEXECOPT_DODEFAULT, ty);
  //obj_editor.SetFocus();
  sel_obj.options[n].selected = true;
 }
 
 //sel_obj.options[0].selected = true
}

 

//◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆//
//----------------------------------------------------------------------------------------------------------//
// 폰트의 사이즈를 바꿉니다.
//----------------------------------------------------------------------------------------------------------//
function FontSize_onchange(sel_obj) {
 var sz = sel_obj.options[sel_obj.selectedIndex].value;
 var n = sel_obj.selectedIndex;
 if( sz != 0 ){
  obj_editor.ExecCommand(DECMD_SETFONTSIZE, OLECMDEXECOPT_DODEFAULT, sz);
  sel_obj.options[n].selected = true
 //obj_editor.focus();
 }
 
} 


//◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆//
//----------------------------------------------------------------------------------------------------------//
// 굵게
//----------------------------------------------------------------------------------------------------------//
function Bold(){
 obj_editor.ExecCommand(DECMD_BOLD,OLECMDEXECOPT_DODEFAULT);
 //obj_editor.focus();
return false;
}

//◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆//
//----------------------------------------------------------------------------------------------------------//
// 이탤릭체
//----------------------------------------------------------------------------------------------------------//

function Italic() {
 obj_editor.ExecCommand(DECMD_ITALIC,OLECMDEXECOPT_DODEFAULT);
 //obj_editor.SetFocus();
}

 

//◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆//
//----------------------------------------------------------------------------------------------------------//
// 밑줄
//----------------------------------------------------------------------------------------------------------//
function Underline() {
 obj_editor.ExecCommand(DECMD_UNDERLINE,OLECMDEXECOPT_DODEFAULT);
 //obj_editor.focus();
}


//◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆//
//----------------------------------------------------------------------------------------------------------//
// 오른쪽정렬
//----------------------------------------------------------------------------------------------------------//
function AlignToRight() {
 obj_editor.ExecCommand(DECMD_JUSTIFYRIGHT,OLECMDEXECOPT_DODEFAULT);
 //obj_editor.focus();
}


//◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆//
//----------------------------------------------------------------------------------------------------------//
// 가운데 정렬
//----------------------------------------------------------------------------------------------------------//

function AlignToCenter() {
 obj_editor.ExecCommand(DECMD_JUSTIFYCENTER,OLECMDEXECOPT_DODEFAULT);
 //obj_editor.focus();
}

//◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆//
//----------------------------------------------------------------------------------------------------------//
// 왼쪽정렬
//----------------------------------------------------------------------------------------------------------//
function AlignToLeft() {
 obj_editor.ExecCommand(DECMD_JUSTIFYLEFT,OLECMDEXECOPT_DODEFAULT);
 //obj_editor.focus();
}

//이하부터는 표 만들기 관련 펑션들입니다.
// 표 만들기는 표만들기를위한 컨트롤을 다시 가져와서 써야 합니다. 표만들기를위한 컨트롤이란 dhmled 컨트롤에 표의 속성들을 지정해서 표를 삽입 시키는 역할을 합니다.

//◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆//
//----------------------------------------------------------------------------------------------------------//
// dhtmled 컨트롤에 표를 인서트합니다.(속성들을 지정해서)
//----------------------------------------------------------------------------------------------------------//
function InsertTable(nf,nc,at,ac,tit) {
 var pVar = document.ObjTableInfo;
 pVar.Caption = tit;
 pVar.NumRows = nf;
 pVar.NumCols = nc;
 pVar.TableAttrs = at;
 pVar.CellAttrs = ac;
 obj_editor.ExecCommand(DECMD_INSERTTABLE,OLECMDEXECOPT_DODEFAULT, pVar);
 return true;
}

//이하의 함수들에서는 QueryStatus 메소드를 썼는데 이 메소드는 해당 작업을 하기전에 즉 명령을 날리기 전에 명령을 받을수 있는가를 미리 체크해 주는 메소드 입니다.
// 리턴값이 3이어야지 내리려는 명령이 타당하다는 것입니다.
//  TriEdit SDK Document(msdn)에 상세히 나와있습니다.
//◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆//
//----------------------------------------------------------------------------------------------------------//
// 열추가
//----------------------------------------------------------------------------------------------------------//
function InsertRow() {
 var result_ = obj_editor.QueryStatus(DECMD_INSERTROW); // 현재 인서트 로우 메소드를 수행할수 있는가?
 if(result_ == 3){// 가능하다
  obj_editor.ExecCommand(DECMD_INSERTROW,OLECMDEXECOPT_DODEFAULT);
 }
 else return false;
}

//◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆//
//----------------------------------------------------------------------------------------------------------//
// 열 삭제
//----------------------------------------------------------------------------------------------------------//
function DeleteRow() {
 var result_ = obj_editor.QueryStatus(DECMD_DELETEROWS); // 체크
 if(result_ == 3){
  obj_editor.ExecCommand(DECMD_DELETEROWS,OLECMDEXECOPT_DODEFAULT);
 }
 else return false;

//obj_editor.focus();
}

//◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆//
//----------------------------------------------------------------------------------------------------------//
// 행추가
//----------------------------------------------------------------------------------------------------------//
function InsertColumn() {
 var result_ = obj_editor.QueryStatus(DECMD_INSERTCOL); // 체크
 if(result_ == 3){
  obj_editor.ExecCommand(DECMD_INSERTCOL,OLECMDEXECOPT_DODEFAULT);
 }
 else return false;

//obj_editor.focus();
}

//◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆//
//----------------------------------------------------------------------------------------------------------//
// 행 삭제
//----------------------------------------------------------------------------------------------------------//
function DeleteColumn() {
 var result_ = obj_editor.QueryStatus(DECMD_DELETECOLS); // 체크
 if(result_ == 3){
  obj_editor.ExecCommand(DECMD_DELETECOLS,OLECMDEXECOPT_DODEFAULT);
 }
 else return false;

//obj_editor.focus();
}

//◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆//
//----------------------------------------------------------------------------------------------------------//
// 셀 삽입
//----------------------------------------------------------------------------------------------------------//
function InsertCell() {
 var result_ = obj_editor.QueryStatus(DECMD_INSERTCELL); // 체크
 if(result_ == 3){
  obj_editor.ExecCommand(DECMD_INSERTCELL,OLECMDEXECOPT_DODEFAULT);
 }
 else return false;
//obj_editor.focus();
}

//◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆//
//----------------------------------------------------------------------------------------------------------//
// 셀 삭제
//----------------------------------------------------------------------------------------------------------//
function DeleteCell() {
 var result_ = obj_editor.QueryStatus(DECMD_DELETECELLS); // 체크
 if(result_ == 3){
  obj_editor.ExecCommand(DECMD_DELETECELLS,OLECMDEXECOPT_DODEFAULT);
 }
 else return false;

//obj_editor.focus();
}

//◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆//
//----------------------------------------------------------------------------------------------------------//
// 셀합치기
//----------------------------------------------------------------------------------------------------------//
function MergeCells() {
 var result_ = obj_editor.QueryStatus(DECMD_MERGECELLS); // 체크
 
 if(result_ == 3){
  obj_editor.ExecCommand(DECMD_MERGECELLS,OLECMDEXECOPT_DODEFAULT);
 }
 else return false;

//obj_editor.focus();
}

//◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆//
//----------------------------------------------------------------------------------------------------------//
// 셀 나누기
//----------------------------------------------------------------------------------------------------------//
function SplitCell() {
 var result_ = obj_editor.QueryStatus(DECMD_SPLITCELL); // 체크
 if(result_ == 3){
  obj_editor.ExecCommand(DECMD_SPLITCELL,OLECMDEXECOPT_DODEFAULT);
 }
 else return false;
//obj_editor.focus();
}

//◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆//
//----------------------------------------------------------------------------------------------------------//
// 이 평션은 작은 셀 속성을 위한 창을 띄워서 표컨트롤에 사용자가 삽입하려는 속성을 정의하도록 해주는 펑션 입니다.
//----------------------------------------------------------------------------------------------------------//
function TableWizard() {
 var pVar = document.ObjTableInfo;
 var NR = pVar.NumRows;
 var NC = pVar.NumCols;
 var TA = pVar.TableAttrs;
 var CA = pVar.CellAttrs;
 var funct = 'opener.InsertTable'
 var par_tab, k, tc
 par_tab=window.open("","param_tables","screenX=80,screenY=80,width=400,height=215")
 par_tab.document.open()
 k=par_tab.document
 k.writeln('<HTML><HEAD><TITLE>표 정의</TITLE>')
 k.writeln('<STYLE TYPE="text/css">') 
 k.writeln(" td,body { font-family:Arial; font-size:9pt; font-weight:bold; } ")
 k.writeln('</STYLE>')
 k.writeln("<script-x> function comprova_valors() { ")
 k.writeln("           var nf, nc, at, ac, tit, nerr=0 , avis")
 k.writeln("           avis = '\\nTable can큧 be created due to:' ")
 k.writeln("           nf = document.info_table.NumRows.value")
 k.writeln("           nc = document.info_table.NumCols.value")
 k.writeln("           at = document.info_table.TableAttrs.value")
 k.writeln("           ac = document.info_table.CellAttrs.value")
 k.writeln("           tit = document.info_table.Caption.value")
 k.writeln("           if( nf != parseInt(nf) || nf < 0 ){ ")
 k.writeln("               nerr++")
 k.writeln("               avis += '\\n\\n-행의 수는 0보다 커야 합니다.'")
 k.writeln("           }")
 k.writeln("           if( nc != parseInt(nc) || nc < 0 ){ ")
 k.writeln("               nerr++")
 k.writeln("               avis += '\\n\\n-열의 수는 0보다 커야 합니다.'")
 k.writeln("           }")
 k.writeln("           if( nerr == 0){ ")
 k.writeln("               "+funct+"(nf,nc,at,ac,tit) ")
 k.writeln("               window.close(); ")
 k.writeln("           }")
 k.writeln("           else")
 k.writeln("           {")
 k.writeln("             alert(avis)")
 k.writeln("           }")
 k.writeln("           return true ")
 k.writeln("         }</"+"script-x>")
 k.writeln('</HEAD><BODY bgcolor=white ><center>')
 k.writeln('<form name=info_table onsubmit="comprova_valors();" >');
 k.writeln("<font color=black face=arial size=-1 ><b> 행, 열의 수를 정하고 입력버튼을 누르세요.</b></font>")
 k.writeln('<TABLE CELLSPACING=10><TR><TD valign=absmiddle >Rows :    <INPUT TYPE=TEXT SIZE=3  maxlength=2 NAME=NumRows value='+NR+' ></TD>')
 k.writeln('<TD valign=absmiddle >Columns :    <INPUT TYPE=TEXT SIZE=3 maxlength=2 NAME=NumCols value='+NC+'></TD></TR>')
 k.writeln('<TR><TD>테이블속성 : </TD><TD valign=absmiddle ><INPUT TYPE=TEXT SIZE=20 NAME=TableAttrs maxlength=120 value='+TA+'></TD></TR>')
 k.writeln('<TR><TD>셀 속성 :</TD><TD><INPUT TYPE=TEXT SIZE=20 NAME=CellAttrs value='+CA+'></TD></TR>')
 k.writeln('<TR><TD>캡션 : </TD><TD><INPUT TYPE=TEXT SIZE=20 NAME=Caption ></TD></TR></TABLE>')
 k.writeln('<TR><TD valign=absmiddle colspan=2 align=center ><INPUT TYPE=BUTTON NAME=OK VALUE=입력 onclick="comprova_valors()" ></TD></TR></TABLE></form>')
 k.writeln('</center></BODY></HTML>')
 k.close()
 par_tab.focus()
 return true
}


//이미지삽입을 위한 펑션입니다.

//◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆//
//----------------------------------------------------------------------------------------------------------//
// 사용자가 이미지를 지정해서 바로 삽입하는 펑션입니다.
//----------------------------------------------------------------------------------------------------------//
function InsertImageUserDefined() {
 /*
 OLECMDEXECOPT_DONTPROMPTUSER   Specifies that no dialog box should be displayed. The name of the image file should be passed in the url parameter. If no url parameter is passed, the SRC attribute is omitted when the <IMG> tag is inserted into the document.
 중간 파라미터 옵션에 따라 두가지 모드를 쓸수 있다.
 promptuser 옵션은 다이얼로그 박스를 띄워서(컨트롤 내장) 사용자가 넣을수있도록 한다.
 이것은 로컬 파일로 지정하므로 외부에서는 이미지를 볼수없다.

 dontpromtpuser 옵션은 컨트롤 내장 다이얼로그 박스를 띄우는게 아니고 맨 뒤의 파라미터를 추가 해야한다. (이미지 url)
 파일 업로드 창을 띄우고 이미지를 업로드 한 다음에 dontpromtpuser 옵션을 써서 execcommand를 호출한다.
 */
 //var lecture_id="{lecture_id}";
 //window.open("./UploadFile.php?kind=image&lecture_id=" + lecture_id,'ImageUpload','width=300,height=100,no');
 var imgsrc = "D:\\Study\\won1.jpg";
 obj_editor.ExecCommand(DECMD_IMAGE,OLECMDEXECOPT_DONTPROMPTUSER,imgsrc);
}

//◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆//
//----------------------------------------------------------------------------------------------------------//
// 이미지 다이얼로그박스를 띄워서 선택한 이미지를 넣을수 있도록 하는것입니다.
//----------------------------------------------------------------------------------------------------------//
function InsertImage(){
 obj_editor.ExecCommand(DECMD_IMAGE,OLECMDEXECOPT_PROMPTUSER);
}

 

// 이 펑션은 소스를 볼수 있도록하는것입니다.
function ViewSource(){
 var cont ;
 cont = obj_editor.DocumentHTML;
 alert(cont);
}

//컨트롤의 이름을 재정의
obj_editor = document.tbCE;

</script-x>
<table>
 <tr>
  <td align=center>
   <font size=5><b>Use The DHtmlED control EX.</font></b>
  </td>
 </tr>
 <tr>
  <td>
   <!-- 이부분에는 dhtmled 컨트롤을 작동시키는 단추를 넣겠습니다. -->
   <!-- 폰트 셀렉트 박스 -->
   <SELECT language=javascript-x name=tbCE_FontName  onchange="obj_editor=tbCE; return FontName_onchange(this)"  style="WIDTH: 120px" title="Font Name">
    <OPTION selected value=0>글자체</option>
    <OPTION value="굴림">굴림</OPTION>
    <OPTION value="궁서">궁서</OPTION>
    <OPTION value="돋움">돋움</OPTION>         
    <OPTION value=Verdana>Verdana</option>
    <OPTION value=Arial>Arial</option>
    <OPTION value=Tahoma>Tahoma</option>
    <OPTION value="Courier New">Courier New</option>
    <OPTION value="Times New Roman">Times New Roman</option>
    <OPTION value="Wingdings">Wingdings</OPTION>
   </SELECT>
   <!-- 글자크기 셀렉트박스 -->
   <SELECT language=javascript-x name=tbCE_FontSize  onchange="obj_editor = tbCE; return FontSize_onchange(this)" style="WIDTH: 120px" title="Font Size">
    <OPTION selected value=0>글자크기</option>
    <OPTION value=1>1</option>
    <OPTION value=2>2</option>
    <OPTION value=3>3</option>
    <OPTION value=4>4</option>
    <OPTION value=5>5</option>
    <OPTION value=6>6</option>
    <OPTION value=7>7</OPTION>
   </SELECT>
  
   <input type=button value="굵게" onclick="obj_editor=tbCE; Bold(); return false;" >
   <input type=button value="이탤릭" onclick="obj_editor=tbCE; Italic(); return false;" >
   <input type=button value="밑줄" onclick="obj_editor=tbCE; Underline(); return false;" >
   <br>
   <input type=button value="왼쪽정렬" onclick="obj_editor=tbCE; AlignToLeft(); return false;" >
   <input type=button value="가운데정렬" onclick="obj_editor=tbCE; AlignToCenter(); return false;" >
   <input type=button value="오른쪽정렬" onclick="obj_editor=tbCE; AlignToRight(); return false;" >
   <br>
   <input type=button value="표만들기" onclick="obj_editor=tbCE; TableWizard(); return false;" >
   <input type=button value="열추가" onclick="obj_editor=tbCE; InsertRow(); return false;" >
   <input type=button value="열삭제" onclick="obj_editor=tbCE; DeleteRow(); return false;" >
   <input type=button value="행추가" onclick="obj_editor=tbCE; InsertColumn; return false;" >
   <input type=button value="행삭제" onclick="obj_editor=tbCE; DeleteColumn(); return false;" >
   <input type=button value="셀삽입" onclick="obj_editor=tbCE; InsertCell(); return false;" >
   <input type=button value="셀삭제" onclick="obj_editor=tbCE; DeleteCell(); return false;" >
   <input type=button value="셀합치기" onclick="obj_editor=tbCE; MergeCells(); return false;" >
   <input type=button value="셀나누기" onclick="obj_editor=tbCE; SplitCell(); return false;" >
   <br>
   <input type=button value="이미지" onclick="obj_editor=tbCE; InsertImage(); return false;" >
   <input type=button value="소스보기" onclick="obj_editor=tbCE; ViewSource(); return false;" >

  </td>
 </tr>
 <tr>
  <td>
   <!-- 이곳이 dhtmled 컨트롤을 불러 오는 코드 입니다. -->
   <OBJECT classid=clsid:2D360201-FFF5-11D1-8D03-00A0C959BC0A height=405 id=tbCE width=700 VIEWASTEXT><PARAM NAME="Scrollbars" VALUE="true"></OBJECT>
   <!-- 이코드는 테이블정보를 담고있는 컨트롤 -->
   <OBJECT classid=clsid:47B0DFC7-B7A3-11D1-ADC5-006008A5848C height=2 id=ObjTableInfo width=2 VIEWASTEXT></OBJECT>
  </td>
 </tr>
 <tr>
  <td align=right>
   <font size=2><b>All Rights Reserved by AT 2003</font></b>
  </td>
 </tr>
</table>
</html>
호석
09-03-27 07:13 
http://justhurd.net/xedit/

xEditCtrl은 게시판과 웹메일 등에 GUI 에디팅 환경을 제공하기 위한 것으로 원래는 http://www.powerdb.net/ (database.sarang.net, aka. DSN)에서 사용하기 위한 목적으로 개발되었다. 시제품으로 나온 상용 컨트롤에 비하면 미흡하겠지만, 아무런 제약이 없는 프리웨어이다. 컨트롤 자체를 판매하는 일만 아니고, 두 가지 약속 (사실상 한 가지)만 지킨다면, 상업적인 사이트에서 사용해도 된다. 이 컨트롤을 사용할 경우 지켜할 두 가지 사항에 대해서는 문서 마지막을 참조하길 바란다.
목록
4313
번호 제목 성명 날짜 읽음
40 memcmp 함수의 비교연산예 호석 12-02-09 2013
39 c 에서 ini 읽기 함수구현 호석 10-03-17 2182
38 xml 전송용 c 소스 호석 10-03-17 2284
37 PHP에서 엑셀 파일을 업로드 해서 사용하기 소스 호석 09-10-21 2845
dhtml edit control 분석 - 내 홈페이지에 wysisyg에디터를 달아보자. (1) 호석 09-03-27 2755
35 자바 ftp class 호석 08-05-19 2602
34 [ php.ini 환경설정파일 - 신규설치시 셋팅해야할 항목 ] 호석 08-05-01 2333
33 유비아이 리포트 배포관련 ubi report 호석 08-03-20 2662
32 아파치에 톰켓연동 호석 07-12-23 4237
31 톰켓연동에 대해서 호석 07-12-23 2348
30 [c] 진수변환 프로그램 호석 07-07-14 2739
29 [php] 타 도메인간 쿠키 공유하기 호석 07-05-16 3566
28 [php]다른 서버, 다른 도메인간 세션 공유 방법 1차 개선 호석 07-05-15 2977
27 [php]쿠키값 적용 활용팀 호석 07-05-15 3192
26 php floor 함수 오류 확인필요 호석 07-03-19 3081
1 [2] [3]  다음맨끝
 
Copyright © zenos.pe.kr. All rights reserved.