你可能會說,現在有很多在StackOverflow的這個討論,但大部分都是比我需要的,多為其他語言更加復雜。 我有,我有一個“幫助”表,用于填充使用該數據庫的動態(tài)網站的幫助頁面的代碼MySQL的遠程數據庫。 我決定做一個Delphi應用程序來管理,而不是由網站本身做更多的速度和安全性網站。 我想提出一個TRichEdit做出幫助文本并使用簡單的事情像對齊,粗體,斜體和下劃線樣式。 我不想用圖片和字體。 如何挑選豐富樣式的文本,并將其轉換為HTML把我的BLOB字段在遠程數據庫中,然后再轉換成豐富的文本,如果我想再次編輯呢 ? Answer 1: 想這并沒有給出準確的結果,許多不同的解決方案后,我的靈感來自于該解決方案: 轉換RTF到HTML和HTML為RTF 。 這個想法是, TWebBrowser控制(設計/編輯模式)可以處理并轉換成正確的富文本格式,當它被從剪貼板粘貼。 uses SHDocVw, MSHTML; function ClipboardToHTML(AParent: TWinControl): WideString; var wb: TWebBrowser; function WaitDocumentReady: Boolean; var StartTime: DWORD; begin StartTime := GetTickCount; while wb.ReadyState <> READYSTATE_COMPLETE do begin Application.HandleMessage; if GetTickCount >= StartTime + 2000 then // time-out of max 2 sec begin Result := False; // time-out Exit; end; end; Result := True; end; begin Result := ''; wb := TWebBrowser.Create(nil); try wb.Silent := True; wb.Width := 0; wb.Height := 0; wb.Visible := False; TWinControl(wb).Parent := AParent; wb.HandleNeeded; if wb.HandleAllocated then begin wb.Navigate('about:blank'); (wb.Document as IHTMLDocument2).designMode := 'on'; if WaitDocumentReady then begin (wb.Document as IHTMLDocument2).execCommand('Paste', False, 0); Result := (wb.Document as IHTMLDocument2).body.innerHTML; end; end; finally wb.Free; end; end; procedure TForm1.Button1Click(Sender: TObject); begin RichEdit1.SelectAll; RichEdit1.CopyToClipboard; ShowMessage(ClipboardToHTML(Self)); end; Answer 2: 如果你真的想使用生成RTF內容TRichEdit ,那么你應該保存它產生沿著轉換的HTML原生RTF。 如果您使用的唯一原因TRichEdit是讓你可以有簡單的格式化功能,那么你可能會更好過使用生成本地HTML內容的HTML編輯控件。 不管你走哪條路,最好是存儲用戶編輯內容的原始格式,并根據需要為其他格式進行轉換(而不是將其轉換兩個方向)。 如果你使用TRichEdit ,那么你可以很容易地流進出控制的RTF內容,但我建議TJvRichEdit過TRichEdit : procedure GetRTFData(MS: TMemoryStream; RTF: TRichEdit); begin MS.Clear; RTF.Lines.SaveToStream(MS); MS.Position := 0; end; procedure SetRTFData(MS: TMemoryStream; RTF: TRichEdit); begin MS.Position := 0; RTF.StreamFormat := sfRichText; RTF.Lines.LoadFromStream(MS); end; 手動轉換RTF到HTML不是一件容易的事。 有Unicode字符的考慮,字體樣式,字體規(guī)范,段落格式,編號列表,特殊的HTML字符,和這么多。 即使你只需要支持簡單的格式,用戶經常使用會使轉換頭痛等功能 - 如從復制的MSWord內容,并與所有種類的格式和字體樣式粘貼到您的應用程序。 JvRichEditToHtml做一份體面的工作轉換RTF到HTML,但我們最終編寫我們自己的轉換單元,因為我們做了很多更與RTF比簡單的格式。 JvRichEditToHtml應該很容易處理,只要你所描述什么是用戶不通過復制/粘貼介紹復雜的內容,或者使用鍵盤快捷鍵的內容(例如,子彈= Ctrl + Shift + L,縮進= CTRL + M格式化等)。 還有德爾福幾個不錯的HTML編輯控件,如果你想繞過在RTF創(chuàng)作和轉換為HTML的復雜性: 谷歌搜索結果::德爾福,HTML,編輯器,組件 HTML編輯器的CBuilder /德爾福 所見即所得的HTML編輯器組件德爾福 對于HTML編輯器VCL控制的追求 堆棧溢出::德爾福,HTML,編輯器,組件 德爾福與HTML / CSS界面 (和其他許多!) 我們使用TRichView由于其廣泛的能力。 它可以加載/創(chuàng)建RTF,出口HTML。 它不是免費的但是。 如果您正在尋找免費的東西, TJvRichView和JvRichEditToHtml都是不錯的選擇。 文章來源: How to Convert Simple RichText to HTML tags in Delphi? |
|