Глядя на (XE7) FMX.Memo.pas
procedure TMemo.DoContentPaint()
, можно подумать, что порядок рисования неправильный. С другой стороны, это может быть преднамеренным, может быть, я просто не понимаю, почему.
Сначала рисуется текст, затем выделение и, наконец, выделение заклинаний. Стандартный цвет выбора - $7F3399FF
. Обратите внимание на альфа-канал (7F
). Это делает его наполовину прозрачным, и поэтому текст просвечивает, даже если цвет текста отображается поверх текста.
![enter image description here](https://i.stack.imgur.com/UWSAh.png)
Решение вашей проблемыпоэтому, чтобы определить цвет, чтобы быть частично прозрачным, f.ex.:
FMemo.SelectionFill.Color := $7FFFFF00; // or perhaps even more transparent $4FFFFF00
Эффект этого состоит в том, однако, что текст больше не черный (как это не с оригинальным цветом выделения).
![enter image description here](https://i.stack.imgur.com/Addjb.png)
Тестирование с копией файла FMX.Memo.pas
Я переставил procedure TMemo.DoContentPaint()
так, чтобы появился кодовый блок, отмеченный // selection
до блока // text
. В этом случае для выбора можно использовать полностью непрозрачный цвет.
FMemo.SelectionFill.Color := $FFFFFF00; // alpha = $FF
![enter image description here](https://i.stack.imgur.com/fwsVz.png)
Но никогда не изменяйте никакие файлы в исходном каталоге установки Delphi(ы) . Сделайте копию файла в каталоге вашего проекта и измените эту копию. Недостатком является то, что с новыми обновленными версиями вам, возможно, придется помнить, чтобы копировать и изменять снова.