13

Delphi 的薄弱环节之一是网格(例如 TStringGrid),虽然它的基本工作很好,但当您需要打印它或自定义它的外观时,它变得更加困难。我已经使用它大约 15 年了,因此它非常嵌入我的应用程序中,随着时间的推移,我已经为 TGrid 到 RTF 转换(通过 MSWord 打印)提供了家庭推出的解决方案,并使用 TDrawGrid 进行了更多的定制。我的解决方案(仍然)必须在 Delphi 7 和 Delphi XE 中工作。碰巧的是,我的网格都不是数据库绑定的,它们都是在代码中填充单元格的。

现在我计划整理我的报告并“美化”我的表格,这意味着用更强大的实现替换网格。那里有很多负载,我有两个Developer Express Quantum GridTMS Grid Pack。尽管体验字体、颜色和打印​​的时间非常有限,但我希望能就我应该采用的许多网格/打印显示报告组合中的哪一种提出建议。我目前没有报告生成器,正在考虑使用 FastReports,但我愿意接受建议。

4

6 回答 6

13

大约在 1998 年,我厌倦了 TStringGrid,开始了一段漫长的旅程。我大量使用了虚拟网格视图控件,包括 Roman Mochalev 的 ExGridView(此处移植到 Delphi 2010/XE )和 developer express 的量子网格控件,以及与之配套的打印套件,以及 Mike Lischke 的 Virtual Tree View。是的。这是一个树视图。但是,如果您不创建多个级别的节点,它也会创建一个非常棒的虚拟网格。

最后,这些都不是完美的。您的应用程序的要求可能包括:

  • 印刷。如果是这样,我会选择Developer Express组件,因为他们的网格组件和其他组件在他们的打印套件中内置了打印支持。

  • 很多定制绘画,但没有印刷。如果是这样,我会回到 VCL TDrawGrid,因为否则更复杂的股票绘画系统只会妨碍你。

  • 保持简单。如果是这样,我推荐ExGridView 组件。其他解决方案似乎都让我完成了 98% 的工作,并且需要大量的维护来解决自定义绘画故障、打印故障或其他任何问题。如果您想要的只是一个 Windows 2000 时代的虚拟网格显示模型中的数据,请使用 ExGridView。

  • 将来可能需要嵌套节点(树的东西)。那么现在就从 VirtualTreeView 开始,暂时将其用作网格,稍后无缝添加树功能。

在您的情况下,可能有更多的“附加要求”,而不是我在这里所能想到和列出的。但正是这些“也”的东西将(或应该)决定你的选择。您的应用程序必须 24/7/365.25 运行?好吧,那就保持简单,避免以后会伤害你的花哨的东西。

既然您声明您需要打印、漂亮的主题绘画,并且您已经拥有 Developer Express 组件,那将是 #1 最合乎逻辑的选择。它是一个稳定、成熟、高质量的组件套件。对于稍后查看此问题的其他人,我唯一需要注意的是,它是一个复杂、重量级的解决方案,并且不适用于 100% 的“只需要比 TStringGrid 更好的可行网格”的所有 Delphi 应用程序。DevEx Quantum Grid 可以复制您在 Outlook 中看到的几乎所有网格功能,例如,包括“分组依据”功能。

于 2011-06-28T13:30:39.080 回答
7

虚拟树视图组件可能是一种可能性。我们将其用作应用程序中的网格。我还没有尝试打印,但我会在不久的将来某个时候。它可以导出为富文本或 html,这可能对此很有用。

编辑:顺便说一句,它是开源的,而且相当精致。

EDIT2:更正了组件的名称。我最初是这样做的,但是当我创建链接时它丢失了。

于 2011-06-28T12:29:10.757 回答
4

我强烈推荐使用ExpressQuantumGrid

您可以考虑一个TStringGridToCxGrid外观类,它替换TStringGrid您的遗留代码并将其转换为TcxGrid.

于 2011-06-28T10:49:20.877 回答
4

我一直对KGrid很感兴趣。但是,除了一些简单的测试之外,我还没有使用过它。如果您对免费替代品感兴趣,值得一试。

于 2011-06-28T13:29:50.537 回答
2

您可能还想考虑 BergSoft NextGrids http://www.bergsoft.net/

几乎没有成本,并有体面的支持

于 2011-06-28T09:35:37.297 回答
1

您可以尝试使用包含 TDBGridEh 组件的 EhLib 库。它便宜且功能强大。http://www.ehlib.com

于 2011-06-28T08:38:49.287 回答