VST实例(12) 列扩展和多行显示
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;
运行结果如下(另外随便找了个文本文件作为显示例子):