VST实例(12) 列扩展和多行显示

发布时间 2023-05-31 11:07:59作者: Luo大哥

TreeOptions.AutoOptions如果包含了“toAutoSpanColumns” ,且下一栏为空,则本栏被缩减的文本(即文本只显示部分,后面只显示…)会自动扩展显示在下一栏中。

看图示例:

 

通常情况下,当单元格的宽度不能完全显示字符串内容时,字符串会被截取显示,截取之外的内容显示为“……”。

事实上,VST是支持多行显示单元格内容的,方法如下:

1、首先,VST.treeoptions里应该设置为允许动态调整nodeheight,代码如下:

with vst1.TreeOptions do
  begin
    MiscOptions:=MiscOptions+[toVariableNodeHeight]  ;
  end;

2、在初始化时(oninitnode),设置为允许多行显示。代码如下:

InitialStates:=InitialStates+[ivsMultiline];

3、在事件“OnMeasureItem”里写代码,设置节点高度;

例子代码如下:

procedure TForm4.vst1MeasureItem(Sender: TBaseVirtualTree;
  TargetCanvas: TCanvas; Node: PVirtualNode; var NodeHeight: Integer);
begin
  //在满足多行显示的情况下,节点之间还有10的间隔。
  NodeHeight:=vst1.ComputeNodeHeight(TargetCanvas,node,0)+10;
end;

运行结果如下(另外随便找了个文本文件作为显示例子):