Ich lese interessiert mit, da ich gerade an einem ähnlichen Teilprojekt arbeite...
Ich glaube nicht, dass wir uns konkret gegenseitig helfen können, will aber mal meinen Stand kurz beschreiben:
Hier habe ich eigene "Controls" gezeigt, in denen ich grundlegend schon arbeiten kann:
http://www.delphipraxis.net/185623-m...-controls.html
Ich zeichne dazu die "Controls" lediglich auf den Formularcanvas und zeichne auch den Cursor einfach als Strich in das Bild.
Grundsätzlich fühlt sich das im Ergebnis schon wie richtige Controls an (Selektion von Text und C&P geht aber noch nicht).
Gerade bin ich dabei, auch einen Editor für mehrzeiligen Text aufzubauen und als zweiten Schritt einen Code-Editor mit Syntax-Highlighting etc.
Ich parse den Roh-Text dazu in einzelne Worte, z.B. so:
"Ich"
" "
"parse"
" "
"den"
...
Jedes Wort wird in einem Objekt verwaltet und zusätzlich bestimmte Statusinformationen (Bedeutung, Hint etc) die der Editor dann für die Darstellung des Textes verwenden kann.
Der Text wird wiederum in Zeilen untergliedert, die dann jeweils mehrere Wörter enthalten.
Der Editor wird an die Zeilen gebunden, erstellt dann für jede gebundene Zeile eine Art Panel ohne Rand und für jedes Wort in der Zeile ein Edit ohne Rand. Die trennenden Leerzeichen sind in dem Sinne auch Wörter.
Der Editor zeichnet mindestens die sichtbaren Zeilen und schätzt zunächst die Gesamthöhe für den Gesamttext ab um die Scrollbar darzustellen. Wenn Zeit ist kann er auch mehr Text rendern, um genauere Daten zu haben.
Wenn dann Text in einer Zeile geändert wird muss diese als invalide gekennzeichnet und neu gerendert werden.
Die Metadaten zu den einzelnen Zeilen und Wörtern müssen in der Datenschicht verwaltet werden, die Positionen auf der Zeichenfläche aber vom jeweiligen Editor.
In jedem Fall soll bei mir eine Zeile im Editor an eine Zeile im Text gebunden werden und jedes Wort einer Zeile soll wiederum an ein einzelnes Edit gebunden werden (ohne sichtbare Rahmen).
Je Wort ist also dann jeweils ein Edit für die Darstellung und Bearbeitung (incl. Caretpositionierung bei Klick usw) zuständig.
So ist mein aktueller Ansatz, an dem ich arbeite.
Später wäre ein RichEditor noch interessant, das würde dann schon eher zu Deinem Projekt passen. Da wäre das Zerlegen in einzelne Wörter mit zugeordneten Metadaten sicher auch weniger interessant.