2020国产成人精品视频,性做久久久久久久久,亚洲国产成人久久综合一区,亚洲影院天堂中文av色

分享

delphi html編輯器,如何轉(zhuǎn)換簡單的富文本HTML標(biāo)記在Delphi?(How to Convert Simple Ric

 獨(dú)孤求財 2022-07-21 發(fā)布于廣東

你可能會說,現(xiàn)在有很多在StackOverflow的這個討論,但大部分都是比我需要的,多為其他語言更加復(fù)雜。

我有,我有一個“幫助”表,用于填充使用該數(shù)據(jù)庫的動態(tài)網(wǎng)站的幫助頁面的代碼MySQL的遠(yuǎn)程數(shù)據(jù)庫。

我決定做一個Delphi應(yīng)用程序來管理,而不是由網(wǎng)站本身做更多的速度和安全性網(wǎng)站。

我想提出一個TRichEdit做出幫助文本并使用簡單的事情像對齊,粗體,斜體和下劃線樣式。 我不想用圖片和字體。

如何挑選豐富樣式的文本,并將其轉(zhuǎn)換為HTML把我的BLOB字段在遠(yuǎn)程數(shù)據(jù)庫中,然后再轉(zhuǎn)換成豐富的文本,如果我想再次編輯呢 ?

Answer 1:

想這并沒有給出準(zhǔn)確的結(jié)果,許多不同的解決方案后,我的靈感來自于該解決方案: 轉(zhuǎn)換RTF到HTML和HTML為RTF 。

這個想法是, TWebBrowser控制(設(shè)計/編輯模式)可以處理并轉(zhuǎn)換成正確的富文本格式,當(dāng)它被從剪貼板粘貼。

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內(nèi)容TRichEdit ,那么你應(yīng)該保存它產(chǎn)生沿著轉(zhuǎn)換的HTML原生RTF。 如果您使用的唯一原因TRichEdit是讓你可以有簡單的格式化功能,那么你可能會更好過使用生成本地HTML內(nèi)容的HTML編輯控件。

不管你走哪條路,最好是存儲用戶編輯內(nèi)容的原始格式,并根據(jù)需要為其他格式進(jìn)行轉(zhuǎn)換(而不是將其轉(zhuǎn)換兩個方向)。

如果你使用TRichEdit ,那么你可以很容易地流進(jìn)出控制的RTF內(nèi)容,但我建議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;

手動轉(zhuǎn)換RTF到HTML不是一件容易的事。 有Unicode字符的考慮,字體樣式,字體規(guī)范,段落格式,編號列表,特殊的HTML字符,和這么多。 即使你只需要支持簡單的格式,用戶經(jīng)常使用會使轉(zhuǎn)換頭痛等功能 - 如從復(fù)制的MSWord內(nèi)容,并與所有種類的格式和字體樣式粘貼到您的應(yīng)用程序。

JvRichEditToHtml做一份體面的工作轉(zhuǎn)換RTF到HTML,但我們最終編寫我們自己的轉(zhuǎn)換單元,因為我們做了很多更與RTF比簡單的格式。 JvRichEditToHtml應(yīng)該很容易處理,只要你所描述什么是用戶不通過復(fù)制/粘貼介紹復(fù)雜的內(nèi)容,或者使用鍵盤快捷鍵的內(nèi)容(例如,子彈= Ctrl + Shift + L,縮進(jìn)= CTRL + M格式化等)。

還有德爾福幾個不錯的HTML編輯控件,如果你想繞過在RTF創(chuàng)作和轉(zhuǎn)換為HTML的復(fù)雜性:

谷歌搜索結(jié)果::德爾福,HTML,編輯器,組件

HTML編輯器的CBuilder /德爾福

所見即所得的HTML編輯器組件德爾福

對于HTML編輯器VCL控制的追求

堆棧溢出::德爾福,HTML,編輯器,組件

德爾福與HTML / CSS界面

(和其他許多!)

我們使用TRichView由于其廣泛的能力。 它可以加載/創(chuàng)建RTF,出口HTML。 它不是免費(fèi)的但是。 如果您正在尋找免費(fèi)的東西, TJvRichView和JvRichEditToHtml都是不錯的選擇。

文章來源: How to Convert Simple RichText to HTML tags in Delphi?

    本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊一鍵舉報。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多