2012-10-23 2 views
4

어떻게 HTML 파일을 만들기 위해 WYSIWYG 인터페이스를 '쉽게'사용할 수 있습니까? I.E. HTML 편집기. 이미지, 하이퍼 링크, 글 머리 기호, 글 머리 기호, 들여 쓰기 등과 같은 형식화 된 전자 메일 메시지를 작성하는 것이 좋습니다.Delphi - Delphi를 사용하여 WYSIWYG HTML 편집기를 만들려면 어떻게해야합니까?

참고 :이 메시지는 다른 사용자를위한 포인터가되기위한 자체 응답 질문입니다.

+0

대답에 언급 된 구성 요소를 새 주소로 이동되었습니다 - 그것을 발견하고 답을 업데이트 한 ... – HeartWare

+0

엠 바카 데로는 TWebBrowser에 따라 자신의 웹 편집기가 있습니다. 하지만 문제가 있습니다 : http://stackoverflow.com/questions/39594393/twebbrowser-crashes-with-most-html-files – Ampere

+0

이것은 유효한 질문입니다 (틀린 이유로 닫았습니다) 매우 유용한 답변입니다. 재개를위한 투표. – Ampere

답변

7

EmbeddedWB 웹 브라우저 bsalsa.com의 구성 요소는이를 수행 할 수있는 도구만을 제공합니다.

편집 : bsalsa.com이 (가) 더 이상 존재하지 않습니다. 새 위치 :

웹 사이트에서와 같이 HTML을 표시하는 EmbeddedWB (웹 브라우저) 컨트롤 (창)을 배치합니다. 그런 다음 EditDesigner 구성 요소를 폼에 배치하고 Object Inspector - Properties의 EmbeddedWB 컨트롤에 연결합니다.

EditDesigner를 사용하면 웹 브라우저를 편집 모드로 설정하고 텍스트 삽입 또는 제거 또는 일부 글꼴 속성 설정과 같은 기본 편집 기능을 사용할 수 있습니다. 하지만 전체 편집자는 아닙니다.

절대로,이 패키지는 MSHTML 편집기에 대한 완전한 래퍼입니다. EditDesigner 유닛에 약간 추가하면 MSHTML execCommand 인터페이스에 대한 전체 액세스가 가능합니다.

원본 코드 :

procedure ExecCommand(Command: Widestring; ShowUI: Boolean; Value: Integer); 
     begin 
     if Assigned(FEmbeddedWB) then 
      GetHTMLDoc2FromWB.execCommand(Command, showUI, Value); 
     end; 

당신은 EditDesigner.pas이 절차는 허용하고 HTMLDoc.execCommand에 정수 값을 구문 분석하는 것을 볼 수 있습니다. 몇 가지 명령에 필요한 것은 모두 다. 대개 값이 0 일 때만 필요합니다. 그러나 많은 명령은 Fontname을 변경하는 것과 같이 Value에 대한 String 정보를 필요로합니다. HTMLDoc.execCommand는 Variant를 Value로 받아 들일 것이므로 EditDesigner.pas에 다른 프로 시저를 추가하면 다음과 같이 보낼 명령을 알면 MSHTML 편집기에 거의 모든 권한을 부여 할 수 있습니다.

procedure TEditDesigner.ExecCommandEx(Command: Widestring; ShowUI: Boolean; Value: OleVariant); 
    begin 
     if Assigned(FEmbeddedWB) then 
      GetHTMLDoc2FromWB.execCommand(Command, showUI, Value); 
    end; 

고급 명령을 편집기로 보내야 할 때이 절차에 액세스하십시오. 글꼴 색이 변경됩니다.

procedure TfrmComposer.actFontColourExecute(Sender: TObject); 
    begin 
    if dlgColorDialog.Execute then 
     begin 
      EditDesigner1.ExecCommandEx('foreColor',False,dlgColorDialog.Color); 
     end; 
    EditDesigner1.EmbeddedWB.SetFocus; 
end; 

이 글꼴을 변경합니다 ... 당신은 당신이 원하는대로 삽입 할 수 것 EditDesigner1.InsertHTML 절차도 있습니다

procedure TfrmComposer.JvFontComboBoxChange(Sender: TObject); 
begin 
    EDewbMessageBody.ExecCommandEx('fontname',False,JvFontComboBox.FontName); 
    EDewbMessageBody.EmbeddedWB.SetFocus; 
end; 

.

해피 Delphiin ')

+0

bitbucket.org에서 사용할 수있는 버전이 더 새로운 것 같지만 https://sourceforge.net/projects/embeddedwb/에서도 사용할 수 있습니다. – Ampere

+0

참고 : TWebBrowser : (WebBrowser.Document as IHTMLDocument2) .execCommand ('ForeColor', true, clred)와 동일하게 수행 할 수 있습니다. – Ampere

관련 문제