Я пытаюсь получить такой результат из TVirtualStringTree:
Я считаю, что это может быть возможно либо напрямую, с помощью TVirtualStringTree
(основной элемент управления Virtual Treeview Майка Лишке), или путем создания подкласса и изменения унаследованного элемента управления, или путем перехода к TVirtualDrawTree
.
Вот что я могу get и показывает проблему, с которой я сталкиваюсь:
Моя проблема заключается в том, что я не могу получить текст для столбца 0, чтобы он занимал всю горизонтальную область элемента управления виртуального древовидного представления. Существует демонстрация виртуального древовидного представления в расширенной демонстрации, показывающей многострочный текст, который, кажется, делает то, что мне нужно, но я Я не могу понять, как применить его в сочетании с столбцами с подробностями, которые мне нужны под строкой заголовка (показаны как Узел, Узел, Узел на рисунке).
Вот что я пробовал:
toGridExtensions
в TreeOptions.MiscOptions
. Вот пример кода, показывающий, как я пытался изменить contentRect:
procedure TForm1.VirtualStringTree1BeforeCellPaint(Sender: TBaseVirtualTree;
TargetCanvas: TCanvas; Node: PVirtualNode; Column: TColumnIndex;
CellPaintMode: TVTCellPaintMode; CellRect: TRect; var ContentRect: TRect);
var
level:Integer;
begin
level := VirtualStringTree1.GetNodeLevel(Node);
if (level=0) then
Inc( ContentRect.Right, 300);
end;
Обновление:
Используя ответ, принятый ниже, я получаю следующее: