如何自动展开和打印 TreeView

2023-12-08

我创建了一个应用程序,它会扫描每台计算机,并使用硬件、软件和更新/修补程序信息填充 TreeView:

enter image description here

我遇到的问题是打印,如何自动展开树视图并将所选计算机的结果发送到打印机?我当前使用的方法是将内容发送到画布(BMP),然后将其发送到打印机,但这不会捕获整个树视图,仅捕获屏幕上显示的内容。有什么建议吗?太感谢了。


打印的问题TTreeView就是不可见的部分没有什么可绘制的。 (Windows 仅绘制控件的可见部分,因此当您使用PrintTo或 APIPrintWindow函数,它只有可见节点可用于打印 - 未显示的内容尚未绘制,因此无法打印。)

如果表格布局有效(没有线条,只有缩进级别),最简单的方法是创建文本并将其放在隐藏的文本中TRichEdit,然后让TRichEdit.Print处理输出。这是一个例子:

// File->New->VCL Forms Application, then
// Drop a TTreeView and a TButton on the form.
// Add the following for the FormCreate (to create the treeview content)
// and button click handlers, and the following procedure to create
// the text content:

procedure TreeToText(const Tree: TTreeView; const RichEdit: TRichEdit);
var
  Node: TTreeNode;
  Indent: Integer;
  Padding: string;
const
  LevelIndent = 4;
begin
  RichEdit.Clear;
  Node := Tree.Items.GetFirstNode;
  while Node <> nil do
  begin
    Padding := StringOfChar(#32, Node.Level * LevelIndent);
    RichEdit.Lines.Add(Padding + Node.Text);
    Node := Node.GetNext;
  end;
end;

procedure TForm1.Button1Click(Sender: TObject);
var
  HideForm: TForm;
  HideEdit: TRichEdit;
begin
  HideForm := TForm.Create(nil);
  try
    HideEdit := TRichEdit.Create(HideForm);
    HideEdit.Parent := HideForm;
    TreeToText(TreeView1, HideEdit);
    HideEdit.Print('Printed TreeView Text');
  finally
    HideForm.Free;
  end;
end;

procedure TForm3.FormCreate(Sender: TObject);
var
  i, j: Integer;
  RootNode, ChildNode: TTreeNode;
begin
  RootNode := TreeView1.Items.AddChild(nil, 'Root');
  for i := 1 to 6 do
  begin
    ChildNode := TreeView1.Items.AddChild(RootNode, Format('Root node %d', [i]));
    for j := 1 to 4 do
      TreeView1.Items.AddChild(ChildNode, Format('Child node %d', [j]));
  end;
end;
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何自动展开和打印 TreeView 的相关文章

  • 当用户按下打印时运行脚本,并且在脚本结束之前不开始假脱机(linux,cups)

    我需要做的是结合用户按下打印来执行 python 程序 脚本 并且在该程序退出之前不要让打印作业假脱机 原因是打印驱动程序不是开源的 我需要更改用户设置 在本例中是部门 ID 和密码 通常是每个用户 但因为这是一个信息亭 具有相同帐户的不同
  • 有什么方法可以让 css 选择除第一页之外的所有内容吗?

    我刚刚找到了 CSS page指令 并将其与 first将 CSS 应用到 html 打印的第一页 有没有办法反其道而行之 将 CSS 应用于所有页面except首先 使用 CSS3 not https developer mozilla
  • 如何以编程方式访问打印机的墨水量?

    好的 这是 Windows 特定的问题 我需要能够访问连接到计算机的打印机的墨水量 可能是直接连接 也可能是网络连接 我认识到每个打印机 或至少是打印机公司 的情况可能会有所不同 但我在哪里可以找到有关它们如何向 PC 显示墨水量的信息 另
  • 将字符串作为 PChar 从 CSharp 传递到 Delphi DLL

    我正在尝试将字符串从 C 传递到 Delphi 构建的 DLL Delphi DLL 需要 PChar 这是Delphi导出 procedure DLL Message Location PChar AIntValue integer st
  • 通过“修改日期”确定文件夹中的哪个文件是最新的?

    我需要扫描特定文件夹中的最新文件 基本上检查修改日期以查看哪个是最新的 但请记住这些文件具有随机名称 这是我到目前为止得到的 procedure TForm1 Button1Click Sender TObject begin ftp Ho
  • Soap Delphi 客户端因 1MB 调用超时而结束

    我们正在开发 SOAP Web 服务 Apache PHP 所有小规模调用都运行良好 但对于 1Mb 的 Soap 调用 HTTPS 调用大小为 1MB 我们的 Delphi Soap 客户端在除一台 PC 之外的所有 PC 上都因超时而停
  • 隐藏树视图列表中的节点。在 C# 中

    我正在使用 VS 2005 C 正在处理一个未完成的 WinForm 我已将 XML 解析为树视图列表 但遇到了一些问题 我想知道是否有一种方法可以隐藏 过滤 删除名称中包含 this text 的某个节点 而不必依赖文本框 这就是我对这个
  • 什么是代码页 0?

    我正在使用Delphi函数 StringCodePage 我在 COM 函数 Acrobat Annotation getContents 请参阅我的其他帖子 返回的字符串上调用它 它返回 0 0是什么 安西 代码页 0 是 CP ACP
  • 是否可以在虚拟树视图中选择多个列?

    我需要添加功能来复制节点和列的矩形选择 但我找不到任何方法来实际选择虚拟树视图中的多个列 除了 toFullRowSelect 之外 我只是错过了什么吗 如果没有 是否有一个后代具有类似网格的多列选择支持 经过一些测试后 我得出了以下结论
  • 让线程在窗体关闭时保持运行

    我在我的应用程序上创建了一个同步线程 我想知道如果我关闭申请表 是否有办法让该线程保持打开状态 直到完成同步过程 调用线程的WaitFor方法在您的 DPR 文件中 之后Application Run线 如果线程已经运行完毕 那么WaitF
  • 在该对象调用的事件期间销毁该对象

    我有一个按钮 它的 OnClick 事件调用一个销毁按钮的过程 但随后 线程 想要返回到 OnClick 事件 并且我遇到了访问冲突 我完全被难住了 您需要在按钮的所有代码执行完毕后销毁该按钮 执行此操作的标准方法是将用户定义的消息发布到表
  • 打印 JTable 中选定的行

    我正在制作一个java swing应用程序 我也是一名新手程序员 编程1年半 我正在尝试在按钮内编写一种方法来打印 在打印机中 而不是在控制台中 jTable 的预选行 由用户 该行之前已通过查询打印 在窗口中 这是我的代码 在按钮内 我知
  • Wkhtmltopdf 每页右侧的垂直文本

    下面是使用 wkhtmltopdf 生成的 PDF 示例 我需要在每一页的右书脊上生成文本 我尝试将其添加到标题代码中 似乎会剪辑 PDF 的正文 我正在使用 wkhtmltopdf 的页眉和页脚参数 不太确定如何或是否可以在每个页面的右侧
  • 如何在Python中捕获打印机事件

    我想在打印机开始打印时捕获信号 如果你告诉我如何获取将要打印的文档的路径 那就太好了 pywin32print看起来很有用 但不知道怎么用 要获得新打印作业的通知 您可以使用FindFirstPrinterChangeNotificatio
  • 如何等到我启动的程序使用完该文件后才删除该文件?

    我一直在寻找一种方法来打开通过 Delphi 应用程序及其适当的应用程序保存到我的计算机上的文件 该文件存储在 SQL 数据库中的 Varbinary 字段中 加载到内存流中 然后通过 TMemoryStream 的 SavetoFile
  • 打印附加结构(swift 4)

    我有三个 textifled 用于将数据附加到结构中 如何打印我附加的内容 现在我收到一条错误消息 import UIKit class ViewController UIViewController IBOutlet var c UITe
  • 有没有办法在 TRttiField 中 FieldType 为零的结构中获取 real48 和短字符串变量的 RTTI 提示?

    我发现 Delphi 中的扩展 RTTI 功能有一个奇怪的疏忽 可能是故意的 我想转储包含大约 1500 个不同字段的记录类型中的所有字段 是的 认真的 其中一些是 real48 类型 一些是短字符串 对于这两种类型 在运行时这些类型的 F
  • TRichEdit和URL高亮问题

    我正在使用当前代码在 TRichEdit 上突出显示 URL procedure TForm1 WndProc var Message TMessage var p TENLink strURL string begin if Messag
  • 如何在显示表单之前强制将焦点集中在组件上

    我必须展示 与ShowModal 一个有很多的表格TEdit但我想把注意力集中在TEdit 但并不总是相同 具体取决于上下文 我不能使用SetFocus之前ShowModal 因为表单未激活 并使用该组件Name or Tag在我的应用程序
  • 如何在以管理员身份运行模式下部署应用程序?

    如何部署应用程序 使其需要管理员权限 而无需最终用户手动执行此操作 我使用 Delphi 2009 来构建该应用程序 您可以使用以下命令通知 Windows 您的应用程序需要以管理员身份运行requestedExecutionLevel应用

随机推荐

  • 使用 IEnumerable 和 Linq-To-Sql 时如何防止内存溢出?

    这个问题与我之前的一个问题 这是我当前的代码 IEnumerable
  • 如何解码 HTTP 中 Content-Disposition 标头的文件名参数?

    This question提供了这方面的背景filename范围 我需要编写一个脚本来访问网络服务器上的一些文件 文件名包含无法用 ASCII 编码的 CJK 字符 curl I http bj baidupcs com file f6f2
  • JasperReport 参数在 iReport 中有效,但在 JasperServer 上失败

    我在 iReport 中创建了一份报告 使用 isForPrompting true 设置参数 当我用预览来测试它时 一切正常 Parameter Symbol SQL Query select from table where colum
  • 如何在没有浏览器的情况下与网站交互? [关闭]

    很难说出这里问的是什么 这个问题模棱两可 含糊不清 不完整 过于宽泛或言辞激烈 无法以目前的形式合理回答 如需帮助澄清此问题以便重新打开 访问帮助中心 假设我正在构建一个 C 应用程序 申请目的 从用户处获取用户名和密码 并显示网站上存在的
  • jQuery Mobile 不加载新页面脚本

    将 jQuery Mobile 与 Django 结合使用 在页面转换期间 基本脚本似乎加载正常 但从一个页面到下一个页面 标题下的新页面脚本不会在浏览器中加载 更具体 我通过输入网址加载主页 一切正常 我通过单击主页中的链接加载下一页 然
  • 使用与重复字段同名的字段时 BigQuery 会扁平化

    编辑以使用公共数据集 I have a table with the following schema which you can access here https bigquery cloud google com table real
  • 如何使用 Mojo 进行内部重定向?

    Catalyst 支持的重定向内部到框架 forward and detach 和外部 HTTP 重定向 res gt redirect 内部重定向本质上只是重新分派到新路径 假设我设置了两条路径 sub register self app
  • 使用 ViewPager 更改片段

    我在用PagerSlidingTab图书馆ViewPager 我想在滚动选项卡时更改片段 它运行良好 查看我的代码 我在用AsynTask 在各个Fragment 当应用程序通过 MainActivity 打开时 第一个 Fragment
  • 适用于 C、C++ 或 Fortran 的代码抛光器/重新格式化器 [关闭]

    Closed 此问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 目前不接受答案 假设您有一堆由不同作者用 C C 或 Fortran 编写的文件 在格式 如何注释等方面有不同的意见 我想很多人都知道这样的情况 是否有任何免费工具
  • Xamarin.Forms 警告:尝试在其视图不在 iOS 图像/手势识别器的窗口层次结构中的 * 上呈现 *

    我有一个模态导航页面 其中包含一个充当按钮的图像
  • Android Toolbar的Switch的actionLayout导致按下菜单时文本跳转

    请参考我的项目 https github com paulpv ToolbarSwitch 我正在为 Android 工具栏 又名 新 ActionBar 开发一个简单的自定义布局 这个简单的控件向工具栏添加了一个开关 可以在此处以洋红色突
  • 在Blackberry中,我们可以创建可供不同应用程序使用的通用库吗?

    我想创建一个通用的第三方库 它可以被不同的应用程序共享和使用 并且保持一致 我们可以实现这个目标吗 如果可以 这个库将如何安装以及在哪里安装 以及如何从其他应用程序访问这些库文件 是的 你可以这样做 您创建并编译该库 您可以在依赖它的应用程
  • 通过此与虚拟对象同步

    到目前为止 我已经看到了同步块的用法 但最近我了解到使用虚拟对象更好 我发现以下与此相关的主题 Java同步方法锁定对象或方法 总而言之 在下面的代码中 两个不同的对象不能同时运行 addA 和 addB 因为它们都使用 this 作为锁
  • Java:如何从图像数组创建电影?

    我基本上有一个字节矩阵 每行 即 byte 代表一个图像 如何创建一个电影 任何格式 avi mpeg 等等 并将其保存为文件 每个图像可以是以下之一 int JPEG Encoded formats int NV16 YCbCr form
  • 使用 Project Reactor 和 DirectoryStream 列出目录内容

    我想将 DirectoryStream 与 Project Reactor 一起使用来列出目录中的所有文件 我的尝试是 Path myDir Paths get C Users r dacanal Documents Reply EDA l
  • Hibernate:多对多关系表作为实体

    问题如标题所示 如何将多对多关系表作为实体 我想说 你的问题很有道理 看看这个文档部分 第 24 章最佳实践 摘录 不要使用外来关联映射 真正的多对多关联的实际测试用例很少 最多 您需要存储在 链接 中的附加信息的时间 table 在这种情
  • ImageIO write() 是阻塞方法吗?

    在我用 java 开发的应用程序中 我使用 ImageIO API 来缩放图像 然后将它们写入目录 然后通知 Web 服务器图像已准备好使用 向 Web 服务器发送信号之前的最后一个调用是 ImageIO write 方法 但 Web 服务
  • TinyMCE 4 插入链接表单字段已禁用

    我正在使用TinyMCE Railsgem 使用 TinyMCE 4 我正在加载link插件 所有这一切都是在颜色框弹出窗口之后 中启动的 TinyMCE 编辑器工作正常 但链接按钮会弹出一个对话框来添加 编辑链接 但除了target可供编
  • 使用openpyxl旋转Excel图表的轴

    那里 我正在尝试使用 openpyxl 来处理 Excel 数据 将图片绘制出来并导出它们就可以了 但是 x axis 不够漂亮 我想旋转它 但在文档中没有找到解决方案 这是使用 XlsxWriter 的解决方案 solution 我的代码
  • 如何自动展开和打印 TreeView

    我创建了一个应用程序 它会扫描每台计算机 并使用硬件 软件和更新 修补程序信息填充 TreeView 我遇到的问题是打印 如何自动展开树视图并将所选计算机的结果发送到打印机 我当前使用的方法是将内容发送到画布 BMP 然后将其发送到打印机