Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Einfaches Html in Memo (?) anzeigen (https://www.delphipraxis.net/193419-einfaches-html-memo-anzeigen.html)

hoika 27. Jul 2017 14:33

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
  • zwischen 19:00 und 22:00 Uhr
  • an Samstagen, Sonntagen und gesetzlichen Feiertagen, am 24.12. und 31.12. zwischen 07:00 und 19:00 Uhr
Nicht das es wieder heisset, "Forensuche benutzen!"
Das habe ich gefunden.
http://www.delphipraxis.net/184413-e...-woertern.html
http://www.delphipraxis.net/44580-ht...-anzeigen.html

Was würdet ihr benutzen?

PS: Html-Formatierung meines Beispiel-Codes habe ich nicht gefunden.

Glados 27. Jul 2017 14:42

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: https://github.com/BerndGabriel/HtmlViewer (jedenfalls kann ich damit leben).

himitsu 27. Jul 2017 14:54

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 Delphi-Referenz durchsuchenTLinkLabel, aber außer einem
HTML-Code:
<a href="...">...</a>
kann das eigentlich garnichts.

nahpets 27. Jul 2017 15:05

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:
<html>
<body>
davor und ein
Delphi-Quellcode:
</body>
</html>
dahinter.

Davon ausgehend, dass Dein Fragment in 'ner Stringliste vorliegt und Du dich für den TWebBrowser entscheidest, könnte eventuell sowas gehen:
Delphi-Quellcode:
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);
...
SynEdit und Highlighter sind für die Farbhervorhebung des HTML-Quelltextes geeignet, aber nicht für die Darstellung als Webseite.

hoika 27. Jul 2017 16:54

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.

Glados 27. Jul 2017 16:57

AW: Einfaches Html in Memo (?) anzeigen
 
Zitat:

Zur Performance: Mehr als das was hier steht muss nicht angezeigt werden.
Dann halte ich jegliche externe Komponente für viel zu übertrieben.

himitsu 27. Jul 2017 17:10

AW: Einfaches Html in Memo (?) anzeigen
 
Zitat:

Zitat von Glados (Beitrag 1377644)
Dann halte ich jegliche externe Komponente für viel zu übertrieben.

Drum nannte ich ja auch RichEdit.
Listen und Fett kann man auch in RTF.

jaenicke 27. Jul 2017 17:29

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:
https://www.tmssoftware.com/site/htmlcontrols.asp

Und es gibt in der Richtung noch sehr viele weitere Lösungen.

Kopieren könnte man ja per Klick, Kontextmenü usw. machen.

blondervolker 27. Jul 2017 17:52

AW: Einfaches Html in Memo (?) anzeigen
 
TMS geht. Wenn man seine Software verkaufen sollte, ist die Kohle gut angelegt...:-D:-D:-D

hoika 27. Jul 2017 18:15

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
http://www.swissdelphicenter.com/de/...de.php?id=1823

Sieht etwas merkwürdig aus, aber das hilft.

RichEdit1.SelStart := 0;
RichEdit1.SelLength := 0;


Alle Zeitangaben in WEZ +1. Es ist jetzt 00:52 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz