Wenn du von TRichEdit ableitest und die alte Window-Funktion vor dem HideCaret aufrufst, wieso steckst du dann das HideCaret nicht gleich ins OnEnter oder machst sowas wie das hier:
Delphi-Quellcode:
type
TMyRE = class(TRichEdit)
public
procedure OnFocus(var Msg: TMessage); message WM_SETFOCUS;
end;