最有用的Delphi TStringGrid(网格)替换建议

最有用的Delphi TStringGrid(网格)替换建议,delphi,printing,report,tstringgrid,tgrid,Delphi,Printing,Report,Tstringgrid,Tgrid,Delphi的一个薄弱领域是网格(例如TStringGrid),尽管它做了很好的基础工作,但当您需要打印它或定制它的外观时,它会变得更加困难。我已经使用它大约15年了,因此它非常嵌入到我的应用程序中,随着时间的推移,我已经推出了TGrid到RTF转换(通过MSWord打印)的解决方案,并使用TDrawGrid进行了更多的定制。我的解决方案(仍然)必须同时在Delphi7和DelphiXE中工作。碰巧,我的网格没有一个是DB绑定的,它们都是用代码填充的单元格 现在,我正计划整理我的报告并“美化”我

Delphi的一个薄弱领域是网格(例如TStringGrid),尽管它做了很好的基础工作,但当您需要打印它或定制它的外观时,它会变得更加困难。我已经使用它大约15年了,因此它非常嵌入到我的应用程序中,随着时间的推移,我已经推出了TGrid到RTF转换(通过MSWord打印)的解决方案,并使用TDrawGrid进行了更多的定制。我的解决方案(仍然)必须同时在Delphi7和DelphiXE中工作。碰巧,我的网格没有一个是DB绑定的,它们都是用代码填充的单元格


现在,我正计划整理我的报告并“美化”我的表单,这意味着用一个更强大的实现替换网格。外面有很多东西,我有两个,还有一个。时间是非常有限的,虽然实验与字体,颜色和打印,我将感谢建议,其中许多网格/打印显示报告组合,我应该采用。我目前没有报表生成器,正在考虑FastReports,但我愿意接受建议。

您可以尝试使用EhLib库,其中包括TDBGridEh组件。它很便宜,而且很强大

> P>您可能还需要考虑BurgStutsNETFrase


成本几乎为零,并且有不错的支持

我可以强烈推荐使用ExpressQuantumGrid

您可以考虑一个
TStringGridToCxGrid
facade类,它取代了
TStringGrid
,并将您的旧代码转换为
TcxGrid

组件可能是一种可能性。我们在应用程序中将其用作网格。我还没有试过打印,但我会在不久的将来。它可以导出为富格文本或html,这可能是有用的

编辑:顺便说一句,它是开源的,而且非常完善


EDIT2:已更正组件的名称。我本来是这样做的,但是当我建立链接时,它就丢失了。

我一直对它感兴趣。然而,除了一些简单的测试之外,我还没有使用它。如果你对免费的替代品感兴趣,那就值得一看。

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

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

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

  • 大量定制绘画,但没有印刷。如果是这样的话,我会回到VCLTDrawGrid,因为否则更复杂的股票喷漆系统会妨碍您

  • 保持简单。如果是这样,我建议使用ExGridView。其他的解决方案似乎都能帮我解决98%的问题,并且需要大量的维护来解决定制的绘画故障、印刷故障或其他任何问题。如果您只需要一个Windows 2000时代的虚拟网格来显示模型中的数据,请使用ExGridView

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

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


由于您声明需要打印、好看的主题绘画,并且您已经拥有Developer Express组件,因此这将是最合乎逻辑的选择。它是一个稳定、成熟和高质量的组件套件。对于后来看到这个问题的其他人,我唯一要提醒的是,这是一个复杂、沉重的解决方案,不适合所有“只需要比TStringGrid更好的可用网格”的Delphi应用程序。例如,DevEx Quantum Grid可以复制您在Outlook中看到的几乎所有网格功能,包括“分组方式”功能

DevExpress套件真的不会出错。学习quantumgrid的机制需要一点时间,但投资回报率是巨大的。我也这么认为,DevExpress非常强大,但需要一段时间来管理。这是一个成熟的产品,打印组件也可以进行打印。使用Dev Express cxGrid,您可以通过使用单个TcxStyleController来集中网格的外观和感觉。节省了很多精力。@Splash:我该怎么做?有趣。我建议你只在需要时使用Express Quantum Grid,因为它有300000多行源代码和3000个单元的复杂性。有时候,是的,这正是你所需要的。但有时,它太重了,太重了。@Warren P:同意。由于其强大的功能和灵活性,
TcxGrid
从本质上说是不平凡和复杂的。但这基本上也适用于
TWoman
;-)至少你没有说非理性,比如Pi。@Brian Frost:你必须实现与
TStringGrid
publishes相同的接口。在内部,属性和方法调用必须映射到相应的
TcxGrid
成员。不久前,我编写了一个静态转换器函数,它可以在运行时将自定义网格转换为
TcxGrid
,但它也可以作为facade component.Nice来使用+1用于独立(从TCustomControl开始)实施网格。59美元不是“几乎什么都没有”。Ca