Какой стандартный VCL контрол использовать для рисования рамок по сторонам?

Мне нужен стандартный VCL контрол, который бы позволял выбирать наличие, цвет и толщину рамок по 4 своим краям. TShape позволяет задавать рамку, но она "общая" для всех 4 сторон, а мне же нужны отдельно-конфигурируемые. Контрол нужен из стандартной поставки Delphi (т.е. чтобы не ставить всякие левые паки), и, желательно, по типу TShape (без стилизации при смене ОС / стиля оформления приложения. Т.е. чем проще, тем лучше).

Существует ли такой контрол в стандартном VCL? (спойлер: говорят что нет)

Каким образом такой контрол создать минимальной кровью? (т.е. не делать новый компонент, который придется ставить на все разработческие машины).


Что-то похожее предоставляет TPanel - можно ограниченно выбирать типы, толщины и стороны Bevel, но нельзя задать ни цвет, ни просто края (без эффекта "освещения").

TBevel - можно ограниченно выбирать стороны Bevel, но нельзя задать ни цвет, ни толщину.

P.S. Знаю о создании своих контролов, но прежде чем бросаться писать свой велосипед, хотелось бы проверить наличие "штатного" способа.
P.P.S. Желательно именно контрол, а не способ для рисования на канвасе.


Ответы (1 шт):

Автор решения: Alekcvp

В дельфи есть стандартный компонент TPaintBox и у него есть стандартный метод OnPaint, в котором вы можете нарисовать всё что хотите, например так:

procedure TForm1.PaintBox1Paint(Sender: TObject);
var
  PBox: TPaintBox absolute Sender;
begin
  with PBox.Canvas do
  begin
    MoveTo(0, 0);
    Pen.Color := clRed;
    LineTo(PBox.ClientWidth - 1, 0);
    Pen.Color := clTeal;
    LineTo(PBox.ClientWidth - 1, PBox.ClientHeight - 1);
    Pen.Color := clGreen;
    LineTo(0, PBox.ClientHeight - 1);
    Pen.Color := clNavy;
    LineTo(0, 0);
  end;
end;
→ Ссылка