Du musst einfach in dwEffects das Bit CFE_AUTOBACKCOLOR setzen (wenn das nicht deklariert ist dann nimm CFM_BACKCOLOR, das hat denselben Wert).
Erweiterte Version (AColor = clWindow oder clNone löscht die Hintergrundfarbe):
Delphi-Quellcode:
procedure RE_SetSelBgColor(RichEdit: TRichEdit; AColor: TColor);
var
Format: CHARFORMAT2;
begin
FillChar(Format, SizeOf(Format), 0);
with Format do
begin
cbSize := SizeOf(Format);
dwMask := CFM_BACKCOLOR;
if (AColor = clWindow) or (AColor = clNone) then
dwEffects := CFE_AUTOBACKCOLOR
else
crBackColor := AColor;
Richedit.Perform(EM_SETCHARFORMAT, SCF_SELECTION, Longint(@Format));
end;
end;