标签: treeview

如何使用delphi提高从表中加载树视图节点的速度

使用递归函数从表中加载树视图节点很简单,但对于大数据来说需要很长时间。
我有一个包含以下字段的表:id、title、parentid :将树视图节点保持在 N 级。

该表有超过 70000 行。当我从此表中填充树视图时,需要很长时间(大约 9 分钟)才能完成。

有没有更好的解决方案来提高加载速度?

database delphi treeview performance ado

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

树视图事件 DrawNode 未触发

我想更改树视图中所选项目的颜色,即使所选项目没有聚焦。我正在使用 DrawoNode 来实现此目的。但我的 DrawNode 事件没有触发。可能是什么问题呢?这是我的代码:

SolidBrush greenBrush = new SolidBrush(Color.Green);
    SolidBrush redBrush = new SolidBrush(Color.Red);

    private void tvVouchers_DrawNode(object sender, DrawTreeNodeEventArgs e)
    {
        if (e.Node.IsSelected)
        {
            if (tvVouchers.Focused)
                e.Graphics.FillRectangle(greenBrush, e.Bounds);
            else
                e.Graphics.FillRectangle(redBrush, e.Bounds);
        }
        else
            e.Graphics.FillRectangle(Brushes.White, e.Bounds);

        e.Graphics.DrawRectangle(SystemPens.Control, e.Bounds);

        TextRenderer.DrawText(e.Graphics,
                               e.Node.Text,
                               e.Node.TreeView.Font,
                               e.Node.Bounds,
                               e.Node.ForeColor);
    }
Run Code Online (Sandbox Code Playgroud)

c# treeview

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

如何删除 TTreeViewItem 中的所有子项?

有没有办法从 TTreeViewItem 中删除所有子项?我尝试过DeleteChildren,但这会导致崩溃。

我以为这是一个简单的问题,结果却产生了更多的问题。这就是为什么我解释我正在尝试做的事情。

我的应用程序尝试在 Delphi XE5 FMX 中生成目录树。我使用 TTreeView 来实现这一点。它首先生成一个驱动器列表,所有驱动器都属于 TTreeViewItem。当用户单击某个项目时,下面的目录将添加到该目录中,并且单击的 TTreeViewItem 将展开。当用户再次单击时,TTreeViewItem 就会崩溃。这有一个警告:下次用户单击同一个 TTreeViewItem 时,目录列表将添加到现有目录中,请参见下图。为了防止这种情况,我想首先清除当前列表。

重复目录的列表

当我尝试使用 TreeViewItem.DeleteChildren 从 TTreeViewItem 删除子项时,我在另一个位置遇到异常,请参见下图。

错误信息

至于一些问题:是的,我确信我只添加了 TTreeViewItems,这是我分配 OnClick 事件(import_directory_click)的唯一控件。为了确定起见,我已经添加了完整的代码并注释掉了非必需的内容。

我希望有人告诉我这个功能已经存在(找不到它),但即便如此我仍然想知道如何管理 TTreeView。

  procedure TMain.import_initialize;
  var
     Item: TTreeViewItem;
     drive: Char;
     start: string;
  begin
     Directory_Tree.Clear;

  {$IFDEF MSWINDOWS}
  // When Windows, just present a list of all existing drives
     for drive := 'C' to 'Z' do
     begin

  // A drive exists when its root directory exists
        start := drive + ':\';
        if TDirectory.Exists (start) then …
Run Code Online (Sandbox Code Playgroud)

delphi treeview firemonkey

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

如何选中或取消选中 TreeView 中的所有子节点

我的应用程序中有一个“取消选择”按钮,但效果不佳。如果我要取消选择该文件夹,它将取消选择。但子文件夹中的文件夹将保持选中状态(选中)。

任何有关此问题的帮助将不胜感激。

在此输入图像描述

c# treeview tree winforms

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

Python tkinter treeview获取/返回所选项目的iid

iid它的目的是当用户单击某个项目并将其打印出来时获取树视图项目的 ,但由于某种原因identify()没有收到 event.y 变量,也许?

import tkinter as tk
from tkinter import ttk

class App:
    def __init__(self):
        self.root = tk.Tk()
        self.tree = ttk.Treeview()
        self.tree.pack(side="top", fill="both")
        self.tree.bind("<<TreeviewSelect>>", self.tree_click_event)

        for i in range(10):
            self.tree.insert("", "end", text="Item %s" % i)

        self.root.mainloop()

    def tree_click_event(self, event):
        iid = self.tree.identify(event.x,event.y)
        print (iid)

if __name__ == "__main__":
    app = App()
Run Code Online (Sandbox Code Playgroud)

单击树视图中的项目后,错误为:

TypeError: identify() missing 1 required positional argument: 'y'
Run Code Online (Sandbox Code Playgroud)

为了响应 @TessellationHeckler 的评论,基于链接对代码进行的编辑不会产生错误,但仍然不会打印出iid

def tree_click_event(self, event):
    item = self.tree.identify('item', event.x,event.y)
    print (item)
Run Code Online (Sandbox Code Playgroud)

感谢您接受@CommonSense的答案,总结看来我需要使用 self.tree.bind('<1>', …

python treeview tkinter

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

WPF TreeView 隐藏项目的虚拟化性能

我有一个TreeView控件,允许用户根据关键字过滤树中的项目。VirtualizingStackPanel.IsVirtualizing="True" VirtualizingStackPanel.VirtualizationMode="Recycling"我的树上有它并且它ItemsSource是数据绑定的。我TreeViewItemVisibility设置如下:

<Setter Property="Visibility" Value="{Binding IsVisible, Converter={StaticResource BooleanToVisibilityConverter}}"/>

该树在未过滤时的性能非常好,但在加载具有大量隐藏项目的树项目时,我发现性能受到很大影响。从我在 VS 的诊断工具中看到的情况来看,在我看来,MyTreeViewItem试图加载它的不可见子项,即使它们不可见,这会导致内存和 CPU 因加载大量不可见项而受到影响。有谁之前经历过这个吗?有没有办法可以覆盖实现虚拟树项目的默认逻辑,以便隐藏项目不会被加载?

c# wpf treeview virtualization

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

vuetify Treeview 每个对象都被打开,但我没有设置“全部打开”选项

我正在为我的项目设置 vuetify 的树视图组件。我单击了树视图的文件夹对象,打开了每个对象。但我没有设置“全部打开”选项。

我的项目基于 vue cli 3,我的 ESLint 配置是“airbnb”。

模板 :

        <v-card class="mx-auto">
          <v-sheet class="pa-1 tree__resources lighten-2">
            <v-treeview
              :active.sync="active"
              :open.sync="open"
              :items="items"
              item-key="id"
              activatable
              active-class="primary--text"
              open-on-click
              return-object>
              <template v-slot:prepend="{ item, open }">
                <v-icon v-if="item.type == 'directory'">
                  {{ open ? 'mdi-folder-open' : 'mdi-folder' }}
                </v-icon>
                <v-icon v-else>
                  {{ files[item.type] }}
                </v-icon>
              </template>
            </v-treeview>
          </v-sheet>
        </v-card>  
Run Code Online (Sandbox Code Playgroud)

脚本:

export default {
  data: () => ({
    active: [],
    open: [],
    items: ["JSON DATA"],
    files: {
      html: 'mdi-language-html5',
      js: 'mdi-nodejs',
      json: 'mdi-json',
      md: 'mdi-markdown',
      pdf: 'mdi-file-pdf', …
Run Code Online (Sandbox Code Playgroud)

javascript treeview vue.js vuetify.js

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

如何使用 ASP.NET MVC 实现简单的 TreeView

我是一个Web开发新手,我想使用VS2019构建一个非常简单的网站,基于MVC结构。我需要在网页中创建一个树视图,具有可选择的节点,尽可能简单。

我在加载数据、填充到任何结构/类方面没有问题。但是,我不知道如何在网页中显示树视图。

我已经找了四个小时了。我看到很多js树插件,很多NuGet中的TreeView控制器。我只想要一个简单的树,最好来自微软,而不是任何其他第三方。我看到一个 TreeView WebControl,但它似乎适用于 Web 表单应用程序 (.aspx)。

请不要告诉我去网上搜索,因为我真的很努力地尝试过。十分感谢!

如果微软没有现成的东西可以在cshtml中使用,请确认这一点,我将停止搜索,如果可能的话,请推荐一种最容易学习和使用的TreeView使用方式。

jstree / Telerik / ???

在此输入图像描述

c# asp.net-mvc treeview visual-studio-2019

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

Tkinter,树视图不随窗口调整大小

当我垂直和水平调整窗口大小时,如何使 Treeview 调整大小并将 Sizegrip 保持在窗口的角落?我使用了框架,设置sticky =“ns”来调整窗口中框架的大小,并填充='BOTH',expand=True来调整框架中Treeview的大小。

from tkinter import *           # Python interface to the Tk GUI toolkit
from tkinter import filedialog  # open file
from tkinter import ttk         # Tk themed widget set

root = Tk()

#menu itmes removed for space

win2 = Toplevel(master=root)    # create a new top level window
frame1 = Frame(win2)
frame2 = Frame(win2)
frame3 = Frame(win2)
scrollbar = Scrollbar(frame1)     # put a scrolbar widget on the right side of the window
scrollbar.pack(side = RIGHT, fill …
Run Code Online (Sandbox Code Playgroud)

python treeview tkinter

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

在树视图 Odoo 13 外添加按钮

再会!

有没有办法在 Odoo 的树视图上方添加一个按钮?
每当用户单击按钮时,我想运行一个函数。
如果这是不可能的,你能帮我提供替代方案吗?

这是我的代码:

'''<?xml version="1.0" encoding="utf-8"?>
<odoo>
    <record id="account_payment_import_view_tree" model="ir.ui.view">
        <field name="name">account.payment.import.view.tree</field>
        <field name="model">account.payment.import</field>
        <field name="arch" type="xml">
            <tree string="Payment Imports" decoration-info="payment_id != False" decoration-danger="error_msg != False">
                <field name="transaction_date"/>
                <field name="facts_id"/>
                <field name="paid_in_lei"/>
                <field name="paid_in_euro"/>
                <field name="amount"/>
                <field name="account"/>
                <field name="account_no"/>
                <field name="document_no"/>
                <field name="details_bk_statement"/>
                <field name="error_msg"/>
                <field name="invoice_number" invisible="1"/>
                <field name="payment_id" widget="many2onebutton" invisible="1"/>
                <field name="invoice_id" widget="many2onebutton" invisible="1"/>
                <field name="company_id" invisible="1"/>
                <field name="currency_id" invisible="1"/>
            </tree>
        </field>
    </record>

    <record id="account_payment_import_action" model="ir.actions.act_window">
        <field name="name">Payment Imports</field>
        <field name="res_model">account.payment.import</field>
        <field name="view_mode">tree</field> …
Run Code Online (Sandbox Code Playgroud)

treeview user-interface button odoo odoo-13

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