Я пытаюсь получить результат, похожий на этот, из TVirtualStringTree:
Я считаю, что это может быть возможно либо напрямую с помощью TVirtualStringTree
(основной виртуальныйЭлемент управления Treeview (Майк Лишке), или путем его наследования и изменения унаследованного элемента управления, или перейдя к TVirtualDrawTree
.
Вот что я могу получить, и показывает проблему, с которой я сталкиваюсь:
У меня проблема в том, что я не могу получить текст для столбца 0, который бы занимал всю горизонтальную область виртуального древовидного элемента управления.В демонстрации Advanced есть демонстрация виртуального дерева, показывающая многострочный текст, который, кажется, делает то, что мне нужно, но я не могу понять, как его применять в сочетании со столбцами сведений, которые мне нужны, под строкой заголовка (показанной как Node,Узел, узел на рисунке).
Вот что я пытался:
- Изменить ContentRect.Right в событии BeforeCellPaint:
- установить
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;
Обновление:
Использованиеответ принят ниже, я получаю следующее: