You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

TVirtualStringTree每个单元格均显示"node"错误,如何正确展示绑定数据?

问题原因

TVirtualStringTree 是虚拟渲染模式的控件,你当前仅完成了节点创建、数据绑定的逻辑,没有实现控件的OnGetText回调事件,控件无法感知需要读取你自定义记录里的哪个字段渲染到单元格,就会输出默认占位文本node。

修复步骤

  1. 先确认窗体初始化阶段已配置节点数据占用空间(如果没加要补上,否则节点数据存储会异常):
procedure TForm2.FormCreate(Sender: TObject);
begin
  vsTree1.NodeDataSize := SizeOf(TRecFileDirectory);
  // 其他初始化逻辑
end;
  1. 给vsTree1控件添加OnGetText事件,实现单元格文本读取逻辑:
procedure TForm2.vsTree1GetText(Sender: TBaseVirtualTree; Node: PVirtualNode;
  Column: TColumnIndex; TextType: TVSTTextType; var CellText: string);
var
  ptrFileDir: TPRecFileDirectory;
begin
  ptrFileDir := Sender.GetNodeData(Node);
  // 根据你的列配置调整分支逻辑,以下是示例
  case Column of
    0: CellText := ptrFileDir^.FileDirectory; // 首列显示目录路径
    1: CellText := BoolToStr(ptrFileDir^.FileDirectoryLock, True); // 第二列显示锁定状态
  end;
end;

补充注意事项

  • 如果需要展示多列,要提前在控件的Columns属性里添加对应数量的列配置
  • 确认arrFileDirectory数组在执行btn4Click前已经完成赋值,没有空数据的情况

内容的提问来源于stack exchange,提问作者Ajay Patnaik

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.04 03:24:03