VirtualStringTree对齐文本和网格线

时间:2012-08-09 05:56:22

标签: delphi delphi-7 vcl virtualtreeview tvirtualstringtree

我有一个带有X标头和x根的virtualstringtree(已启用网格线)。 我想将子项(至少1个)添加到只有1个文本位于中间且遍历所有标题(独立)的根中。所以无论我是否调整标题等,文本总是与VirtualStringTree的实际客户端大小对齐。

这可能吗?如果是这样,怎么样?

enter image description here

1 个答案:

答案 0 :(得分:3)

这听起来像是细胞合并。例如,here讨论了这个问题,解决方案是在toAutoSpanColumns中加入TreeOptions.AutoOptions

如果您想要居中对齐的文字,请相应地覆盖OnDrawText。类似的东西:

procedure TForm1.VirtualStringTree1DrawText(Sender: TBaseVirtualTree;
  TargetCanvas: TCanvas; Node: PVirtualNode; Column: TColumnIndex;
  const Text: WideString; const CellRect: TRect; var DefaultDraw: Boolean);
var
  r: TRect;
begin
  r := CellRect;
  Windows.DrawTextW(TargetCanvas.Handle, PWideChar(Text), Length(Text), r, DT_CENTER or DT_VCENTER);
  DefaultDraw := False;
end;