我有一个虚拟字符串树(启用网格线),带有 X 个 header 和 x 个根。 我想将子项(至少 1 个)添加到只有 1 个文本的根中,该文本位于中间并遍历所有标题(独立)。因此,无论我是否调整标题等的大小,文本始终与 VirtualStringTree 的实际客户端大小对齐。
这可能吗?如果是这样,怎么办?
最佳答案
这听起来像是单元格合并。这是讨论的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;
关于delphi - VirtualStringTree 对齐文本和网格线,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11877505/