Как заполнить область над полосой прокрутки в TVirtualStringTree?

Мне нужно заполнить (с черным) маленький белый квадрат, который я выделил на рисунке ниже.

Я попытался добавить дополнительные столбцы. Я попытался расширить PaintInfo.PaintRectangle. Я пробовал каждую настройку в столбце Сумма, о котором я могу думать. У меня нет идей.

У кого-нибудь есть идеи о том, как это сделать?

Вот код, который выполняет пользовательский заголовок. (Простите оператор with, а не мой исходный код....)

procedure TWinPOSReceiptPluginForm.ReceiptDisplayTreeAdvancedHeaderDraw(Sender: TVTHeader; var PaintInfo: THeaderPaintInfo;
  const Elements: THeaderPaintElements);
var
    TempText: string;
begin
    with PaintInfo do
    begin
      // First check the column member. If it is NoColumn then it about the header background.

        if (hpeBackground in Elements) and (Column <> nil) then begin
          TempText := Column.Text;
          TargetCanvas.Brush.Color := $444444;
          TargetCanvas.FillRect(PaintRectangle);
          TargetCanvas.Font.Color := clWhite;
          TargetCanvas.Font.Style := [];
          TargetCanvas.TextOut (PaintRectangle.Left + 3, PaintRectangle.Top + 3, TempText);
          end;
    end;
end;

введите описание изображения здесь

Ответ 1

Неправильное условие if. Это никогда не будет верно, если hpeBackground находится в Elements для этой области, потому что в этом случае столбец равен нулю.

Так как проверка столбца nil нужна только для получения Column.Text, вам нужно изменить этот код:

if hpeBackground in Elements then
begin
  if Column <> nil then
    TempText := Column.Text;
  TargetCanvas.Brush.Color := $444444;