Ein TShape, was seines Zeichens ja Nachfahre von TGraphicControl ist, hat keinen eigenen Canvas, sondern zeichnet sich auf den seines Parents. Dies tut es, in dem es sich den DeviceContext des Parents abholt. Was und wie dabei was schief läuft ist schwer zu beurteilen.
Mir fielen zwei mögliche Lösungen ein:
1) Eine eigene Shape- (bzw. Line-) Klasse, die von TWinControl abgeleitet ist, und daher über einen eignen Canvas verfügt.
2) Selbst den
DC des RichEdits holen, und ein wenig native
GDI betreiben.
Bei Variante 1 ergibt sich evtl. das Problem, dass die Linien immer alles im RichEdit verdecken, also potentiell Buchstaben durchkreuzen. Bei Variante 2 könnte man prüfen, ob man grad wirklich auf einen Pixel in der Hintergrundfarbe zeichnet. Dafür dürfte zweiteres "unschöner" zu implementieren sein, und man müsste genauer wissen was TShape macht, dass das RichEdit selbst nicht mehr klar kommt, und dieses vermeiden. Ich zumindest empfinde native
GDI als nicht besonders handlich
"When one person suffers from a delusion, it is called insanity. When a million people suffer from a delusion, it is called religion." (Richard Dawkins)