Ein paar unsortierte Gedanken:
Den Parser würde ich möglichst separat von der UI anlegen, dann wäre auch eine Portierung
VCL/FMX leicht möglich.
Man sollte sich schon zumindest etwas nach den
HTML /
DOM Strukturen richten und nicht versuchen nur simple Text-Ersetzungen zu machen.
Sonst wird das Erweitern der Strukturen irgendwann ganz schnell im Nirwana enden.
Der Parser also erstmal in eine Art interne
DOM-Struktur abbilden und diese dann erst im UI rendern.
Das einfach Split nach "<br>" könnte man machen, aber dann sollte man wohl echte CrLf abfangen und unterdrücken.
Je besser man das echte
HTML Verhalten abbilden kann, umso besser, sodass der Code dann auch 1:1 in Delphi oder im Browser das Gleiche macht.