Ваш контроль рисуется на общем холсте. К тому времени, когда он достигнет значения вашего Paintметода управления, Canvas.Stroke.Kindэто TBrushKind.Noneтак, если вы не присвоите ему какое-то другое значение, оно на самом деле ничего не накрасит.
Вы должны добавить
Canvas.Stroke.Kind := TBrushKind.Solid;
Но это будет только рисовать горизонтальную линию (вы забыли создать точки и сделать DrawLineпризыв к вертикальной), и она не будет заполнять фон белым цветом.
Самый простой способ сделать это
Canvas.ClearRect(ClipRect, TAlphaColorRec.White);
Обычно общие значения холста могут (и будут) меняться другими элементами управления. Лучший способ справиться с этим - подражать коду от TShapeпредоставления ваших собственных TFillи TStrokeполей и назначать их холсту перед рисованием. Таким образом, вы можете быть уверены, что не пропустите установку определенного значения Stroke или Fill, которое может быть изменено вне вашего контроля.


