2008-12-31 42 views
5

Tôi cần tìm thành phần soạn thảo HTML WYSIWYG cơ bản cho C++ Builder 5 để cho phép người dùng tạo một số văn bản đơn giản mà tôi sẽ dán vào mẫu trang HTML hiện có. Chỉ cần hỗ trợ đơn giản để tạo liên kết, thêm hình ảnh, sử dụng tiêu đề/in đậm/in nghiêng.Trình soạn thảo HTML cho CBuilder/Delphi

Trả lời

7

Bạn có thể thả một TWebBrowser trên một hình thức và cho phép designMode vào nó, như thế này:

// Delphi code.. 
(WebBrowser1.Document as IHTMLDocument2).designMode := 'on'; 

Sau khi thực hiện các dòng trên, trang đó sẽ được chỉnh sửa. Bạn có thể gõ thêm văn bản, xóa, vv Nếu bạn muốn thực hiện lựa chọn in đậm hoặc chèn hình ảnh, bạn sẽ phải thêm một số nút để chương trình đó. Điều thú vị là bạn có thể làm điều đó hoặc từ Delphi (hoặc C++ builder trong trường hợp của bạn) hoặc bạn có thể thêm javascript trên trang để chỉnh sửa chính nó.

Nội dung của trang có thể được lấy từ

(WebBrowser.Document as IHTMLDocument2).body.innerHTML; 

Hãy nhớ rằng (WebBrowser.Document như IHTMLDocument2) có thể là con số không.


Dù sao, tôi có thể tưởng tượng rằng có các thành phần xung quanh làm tất cả công việc cho bạn, đó có thể là tuyến đường tốt hơn để cải tiến bánh xe.

+0

Tôi đã hy vọng có một thành phần đã có sẵn tất cả các nút - đôi khi giống như một bé Frontpage – Riho

+2

Nếu bạn có RADPHP, hãy xem thư mục 'Embarcadero \ RadPHP \ 3.0 \ plugins \'. Bạn sẽ tìm thấy 'uHTMLEdit.pas' và' uHTMLEdit.dfm'. Đó là một trình soạn thảo HTML một dạng không có các phụ thuộc khác với VCL tiêu chuẩn. –

+0

@WoutervanNifterick - Tôi đã thử đơn vị này, nhưng nó sẽ không hoạt động với các tệp html MOST: http://www.stackoverflow.com/questions/39594393/twebbrowser-crashes-with-some-html-files – Ampere

4

Tôi muốn giới thiệu TRichView do hỗ trợ đẳng cấp thế giới và bộ tính năng sâu. Mặc dù đây không phải là trình soạn thảo "HTML" thực sự nhưng nó hỗ trợ khả năng xuất sang HTML, thậm chí tạo ra các kiểu CSS thích hợp nếu cần. Tôi sử dụng nó để xử lý phần email của sản phẩm chính của chúng tôi và nó hoạt động rất tốt. Lưu trữ nội bộ là RTF (được mở rộng để hỗ trợ hình ảnh tốt hơn) hoặc dưới dạng định dạng độc quyền. Có rất nhiều ví dụ về một trình soạn thảo đơn giản mà sẽ dễ dàng phù hợp với nhu cầu của bạn.

+0

Tôi đã sử dụng TRichView trong gần 10 năm. Nó là tốt, nhưng có thể là quá mức cần thiết cho một trình soạn thảo đơn giản. Sự thiếu hụt một là nó không xử lý sự liên kết của hình ảnh được nêu ra. Chúng tôi đã làm việc trên Sergey trong nhiều năm cố gắng để có được anh ta để thêm nó. Luôn luôn là ... phiên bản tiếp theo. (Có lẽ bình luận này sẽ đánh trứng anh ta). – lkessler

1

trong C++ Builder, nó sẽ là một cái gì đó như thế này:

(wb là một TCppWebBrowser)

//--------------------------------------------------------------------------- 

#include <vcl.h> 
#pragma hdrstop 
#include "mshtml.h" 

#include "Unit1.h" 
//--------------------------------------------------------------------------- 
#pragma package(smart_init) 
#pragma link "SHDocVw_OCX" 
#pragma resource "*.dfm" 
TForm1 *Form1; 
//--------------------------------------------------------------------------- 
__fastcall TForm1::TForm1(TComponent* Owner) 
     : TForm(Owner) 
{ 
} 
//--------------------------------------------------------------------------- 
void __fastcall TForm1::btnNavigateAndEditClick(TObject *Sender) 
{ 
     wb->Navigate((WideString)"www.google.com"); 
     while (wb->Busy) 
       Application->ProcessMessages(); 

     if (wb->Document) 
     { 
       IHTMLDocument2 *html; 
       wb->Document->QueryInterface<IHTMLDocument2>(&html); 
       html->put_designMode(L"On"); 
       html->Release(); 
     } 
} 
//--------------------------------------------------------------------------- 
void __fastcall TForm1::btnInsertImageClick(TObject *Sender) 
{ 
    if (wb->Document) 
    { 
      IHTMLDocument2 *html; 
      wb->Document->QueryInterface<IHTMLDocument2>(&html); 
      VARIANT var; 
      VARIANT_BOOL receive; 
      html->execCommand(L"InsertImage",true,var, &receive); 
      html->Release(); 
    } 
} 
//--------------------------------------------------------------------------- 
void __fastcall TForm1::btnGetHtmlClick(TObject *Sender) 
{ 
     if (wb->Document) 
     { 
       IHTMLDocument2 *html; 
       wb->Document->QueryInterface<IHTMLDocument2>(&html); 
       IHTMLElement *pElement; 
       html->get_body(&pElement); 
       pElement->get_parentElement(&pElement); 
       wchar_t *tmp; 
       pElement->get_outerHTML(&tmp); 
       Memo1->Lines->Text = tmp; 
       pElement->Release(); 
       html->Release(); 
     } 
} 
//--------------------------------------------------------------------------- 
1

http://www.bsalsa.com/

cung cấp một tập miễn EmbeddedWebBrowser thành phần với một thành phần Chỉnh sửa thiết kế mà bạn liên kết với cửa sổ EmbeddedBrowser để kiểm soát chế độ thiết kế và có quyền kiểm soát chỉnh sửa lưu vào tệp, chèn liên kết, hình ảnh, v.v ...

dường như hoạt động tốt!

Các vấn đề liên quan