相关疑难解决方法(0)

如何基于具有"级别"的平面列表填充树视图?

我有一个从第三方项目文件填充的对象列表.设计此文件的方式是每个项目都处于层次结构的"级别".所以第一个项目在0级,所有子项目都在1级,依此类推.

举个例子:

  1. Node 1     (Level 0)
  2. Node 1.1   (Level 1)
  3. Node 1.2   (Level 1)
  4. Node 1.3   (Level 1)
  5. Node 1.3.1 (Level 2)
  6. Node 1.4   (Level 1)
  7. Node 2     (Level 0)
  8. Node 2.1   (Level 1)
  9. Node 2.1.1 (Level 2)
 10. Node 3     (Level 0)
Run Code Online (Sandbox Code Playgroud)

这将产生如下层次结构:

- Node 1
--- Node 1.1
--- Node 1.2
--- Node 1.3
----- Node 1.3.1
--- Node 1.4
- Node 2
--- Node 2.1
----- Node 2.1.1 …
Run Code Online (Sandbox Code Playgroud)

delphi treeview hierarchy

5
推荐指数
2
解决办法
2784
查看次数

使用UseExplorerThemes的VirtualTreeView

我刚刚发现使用Option toUseExplorerTheme可以为VirtualStringTree生成一个很好的选择矩形.但是,如果设置了选项toGridExtensions并且树中有多个列,则不会为内部单元格绘制选区的垂直边框,并且也会丢失圆角.仅正确绘制左侧和最右侧列的最外边缘和角.看起来好像在最外面的列之间绘制了选择矩形,并且刚刚在选择矩形上绘制了未选择列的背景.

关闭toGridExtensions会产生正确的选择矩形,但我更喜欢将其打开,因为只能通过单击标准模式中的文本来选择单元格(而不是单击文本旁边的空白区域).

Delphi 7和XE2会出现问题,也可能与其他版本一起出现问题.

要重现向表单添加TVirtualStringTree,显示标题,向标题添加多个列,并激活选项toGridExtensions(MiscOptions),toUseExplorerTheme(PaintOptions),toExtendedFocus(SelectionOptions),运行程序并单击任何单元格.

delphi virtualtreeview

3
推荐指数
1
解决办法
576
查看次数

当没有添加孩子时,有没有办法显示TTreeNode的>符号?

我在一个TTreeView对象中显示项目.当一个项目有子项时,控件>在图标旁边绘制一个(或者如果展开则绘制一个向下箭头).

我想知道>即使没有添加任何孩子,我是否能以某种方式告诉该项目.

在我的软件中存在某些条件,其中向用户显示有孩子是有意义的,而没有实际添加孩子(然后在选择项目时完成)

使用c ++ Builder 2009 VCL,但这个Q也应该对Delphi有效.

delphi vcl c++builder

2
推荐指数
1
解决办法
113
查看次数

标签 统计

delphi ×3

c++builder ×1

hierarchy ×1

treeview ×1

vcl ×1

virtualtreeview ×1