你可能会说,现在有很多在StackOverflow的这个讨论,但大部分都是比我需要的,多为其他语言更加复杂。 我有,我有一个“帮助”表,用于填充使用该数据库的动态网站的帮助页面的代码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字符的考虑,字体样式,字体规范,段落格式,编号列表,特殊的HTML字符,和这么多。 即使你只需要支持简单的格式,用户经常使用会使转换头痛等功能 - 如从复制的MSWord内容,并与所有种类的格式和字体样式粘贴到您的应用程序。 JvRichEditToHtml做一份体面的工作转换RTF到HTML,但我们最终编写我们自己的转换单元,因为我们做了很多更与RTF比简单的格式。 JvRichEditToHtml应该很容易处理,只要你所描述什么是用户不通过复制/粘贴介绍复杂的内容,或者使用键盘快捷键的内容(例如,子弹= Ctrl + Shift + L,缩进= CTRL + M格式化等)。 还有德尔福几个不错的HTML编辑控件,如果你想绕过在RTF创作和转换为HTML的复杂性: 谷歌搜索结果::德尔福,HTML,编辑器,组件 HTML编辑器的CBuilder /德尔福 所见即所得的HTML编辑器组件德尔福 对于HTML编辑器VCL控制的追求 堆栈溢出::德尔福,HTML,编辑器,组件 德尔福与HTML / CSS界面 (和其他许多!) 我们使用TRichView由于其广泛的能力。 它可以加载/创建RTF,出口HTML。 它不是免费的但是。 如果您正在寻找免费的东西, TJvRichView和JvRichEditToHtml都是不错的选择。 文章来源: How to Convert Simple RichText to HTML tags in Delphi? |
|