Also eigentlich ist alles richtig:
Du überschreibst schon die Standardfunktion des TEdit, somit gibt es da keine Konflikte.
Und falls das interne HWND neu erstellt wird, ist bereits der Refresh im TCustomEdit.CreateWnd enthalten.
Dein Code ist auch aktuell und richtig. (von XE bis 10.3.3 gab es dort keine Änderung)
Und Windows meint auch
EM_SETCUEBANNER ist richtig.
Du darfst natürlich auch gern noch das Result prüfen (siehe "Return value") und bei False (bzw. 0) ein
RaiseLastOSError.
https://docs.microsoft.com/en-us/win...m-setcuebanner
muss noch ausgewertet werden. Kommt alles später. Erstmal muss alles funktionieren.
Einfach ein Property für diese Eigenschaft und dort im Setter
DoSetTextHint(TextHint);
neu auslösen, mit dem erwähnten
Ord(FTextHintAlwaysVisible)
.