![]() |
Einfaches Html in Memo (?) anzeigen
Hallo,
ich habe folgendes Html-Konstrukt <langtext> <div> <b>Unvorhergesehene Inanspruchnahme</b> durch Person X </div> <div> <ul> <li>zwischen 19:00 und 22:00 Uhr</li> <li>an Samstagen, Sonntagen und gesetzlichen Feiertagen, am 24.12. und 31.12. zwischen 07:00 und 19:00 Uhr</li> </ul> </div> </langtext> Ergebnis müsste sein: Unvorhergesehene Inanspruchnahme durch Person X
Das habe ich gefunden. ![]() ![]() Was würdet ihr benutzen? PS: Html-Formatierung meines Beispiel-Codes habe ich nicht gefunden. |
AW: Einfaches Html in Memo (?) anzeigen
Ich stand vor ein paar Jahren vor demselben Problem.
Erst hatte ich ein Memo, dann ein RichEdit. Beide grauenvoll was die Performance angeht. Abhilfe schafft der THTMLViewer: ![]() |
AW: Einfaches Html in Memo (?) anzeigen
In TMemo erstmal garnicht.
Wenn, dann in TRichEdit, welches bereits Funktionen zur Textformatierung drin hat. Eventuell auch ein TSynEdit oder TSynMemo. Ich glaub für TSynEdit gibt es Highlighter/Importer für HTML. Und auch für Richedit hatte ich mal irgendwo einen Code gesehn, der das HTML parst, den Text extrahiert, ihn in ein RichEdit einfügt und die Formatierungsbefehle des HTML auf den Text im RichEdit anwendet. Also quasi ein HTML-zu-RTF-Converter. Es gibt ein grauenhaftes ![]()
HTML-Code:
kann das eigentlich garnichts.
<a href="...">...</a>
|
AW: Einfaches Html in Memo (?) anzeigen
Vielleicht aus dem Fragment einfach mal eine vollständige HTML-Seite machen und dann TWebBrowser nutzen?
Also mindesten noch ein
Delphi-Quellcode:
davor und ein
<html>
<body>
Delphi-Quellcode:
dahinter.
</body>
</html> Davon ausgehend, dass Dein Fragment in 'ner Stringliste vorliegt und Du dich für den TWebBrowser entscheidest, könnte eventuell sowas gehen:
Delphi-Quellcode:
SynEdit und Highlighter sind für die Farbhervorhebung des HTML-Quelltextes geeignet, aber nicht für die Darstellung als Webseite.
procedure WBLoadHTML(wb: TWebBrowser; slHTMLCode: tStrings); overload;
var ms: TMemoryStream; begin wb.Navigate('about:blank'); while wb.ReadyState < READYSTATE_INTERACTIVE do Application.ProcessMessages; if Assigned(wb.Document) then begin ms := TMemoryStream.Create; try slHTMLCode.Insert(0,'<body>'); // Hierzwischen könnte man auch noch 'nen Header reinbauen, // der ein Stylesheet aufruft ... und sonst alles, // was man für ein standardkonformes HTML braucht ... slHTMLCode.Insert(0,'<html>'); slHTMLCode.Add('</body>'); slHTMLCode.Add('</html>'); slHTMLCode.SaveToStream(ms); ms.Seek(0, 0); (wb.Document as IPersistStreamInit).Load(TStreamAdapter.Create(ms)); finally ms.Free; end; end; end; // Aufruf: ... // Befüllen der Stringliste mit dem Fragment WBLoadHTML(DeineWebBrowserKomponente,StringlisteMitDemFragment); ... |
AW: Einfaches Html in Memo (?) anzeigen
Hallo,
OK, danke, ich schaue es mir an. Zur Performance: Mehr als das was hier steht muss nicht angezeigt werden. Ich könnte mir das sogar selber bauen, bin aber zu faul dazu ;) was gegen den THtmlViewer spricht, ist, dass es halt ähnlich wie ein TMemo aussehen soll, damit der Nutzer z.B. den lesbaren Text in de Zwischenablage kopieren kann. Ich habe ja TMS-Software, leider nicht die neuste Version mit TAdvRichedit, im Moment probiere ich diveres THtml-Komponenten aus. Am ehesten komme ich gerade mit THtmlListBox. |
AW: Einfaches Html in Memo (?) anzeigen
Zitat:
|
AW: Einfaches Html in Memo (?) anzeigen
Zitat:
Listen und Fett kann man auch in RTF. |
AW: Einfaches Html in Memo (?) anzeigen
Wenn es nur um die Anzeige geht...
Wie wäre es mit TJvHTLabel aus den JEDIs, genauer der JVCL? Wenn es etwas kosten darf: ![]() Und es gibt in der Richtung noch sehr viele weitere Lösungen. Kopieren könnte man ja per Klick, Kontextmenü usw. machen. |
AW: Einfaches Html in Memo (?) anzeigen
TMS geht. Wenn man seine Software verkaufen sollte, ist die Kohle gut angelegt...:-D:-D:-D
|
AW: Einfaches Html in Memo (?) anzeigen
Hallo,
aber was bei TMS, was dann wie ein TMemo aussieht, das TAdvRichEdit hat meine Sammlung (noch) nicht. Das THTMLCredit sieht aus wie ein Label. Ein Update mache ich wegen sowas nicht. So, ich habe jetzt das hier genommen ![]() Sieht etwas merkwürdig aus, aber das hilft. RichEdit1.SelStart := 0; RichEdit1.SelLength := 0; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 22:18 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz