An alternative is simply doing RichMemo.Enabled := False (However the background of a disabled control changes and for my use case it must be unchanged).
are you trying to use RichMemo as a rich-text Label?
setting "enabled" to false, might also prevent "scrolling" of the text. (not sure if it's critical for you or not).
Maybe you simply want to set to "ReadOnly := true". It doesn't prevent the selection... but maybe you don't want to prevent the selection after all?
The obvious benefit is that you don't have to mess with colors anymore.
And you can always set SetLength to zero, for OnSelhange event.