我一直在开发一个Web服务器,用于生成FusionCharts使用的XML数据。在尝试着用Delphi来标准化包装这些图表所需的XML生产对象结构数天后,我决定看看是否已经有人做过这件事。
我的目标是在Delphi中建立一个对象结构,用于包装生成FusionCharts XML数据所需的功能。有42种可能的图表类型,每种类型都需要略有不同的XML结构。我开始构建的对象结构简单地包装了指定这样一张图表的常见属性的能力,并基于这些属性生成即时的XML数据。当然,它还包括处理多个数据集,每个数据集用于图表中的不同系列。还有一些混合数据集的怪异图表,这正是我在尝试实现此结构时迷失方向的地方。
我很快意识到这是一个巨大的任务,并想知道是否已经有人完成了这样的工作。我知道有一个VCL库可以在应用程序中显示FusionCharts,但这并不是我需要的。我只需要简单地生成XML数据,以通过Web服务器传递回HTTP客户端。
这已经做过了吗?如果没有,那么如何完成这项任务的任何提示或指针?我正准备创建一个名为“TFusionChart”的单个对象,并将所有内容都封装在其中(带有“ChartType”属性),但有42种可能的图表,这将是一团糟。我还可以创建42个不同的对象,每个对象对应一种图表,但这将具有冗余代码。
更新:
为了解释我的现有结构,我有一个基本组件叫做“TFusionChart”。该类包含所有图表所共有的内容,包括类别名称、标题、背景等。没有任何实际的图表是基于这个类的。然后我有“TFusionChart2D”和“TFusionChart3D”。然后我有4个名为“TFusionChartSingle2D”、“TFusionChartMulti2D”、“TFusionChartSingle3D”和“TFusionChartMulti3D”的组件。从这些4个类开始,我就开始创建实际的图表组件。我计划为每个可用的图表类型都提供一个组件。
我面临的问题是如何管理要包含的数据。一些图表可以组合成一个,例如:多个系列在列中、一条线系列以及列内堆叠的数据。这一个图表就有非常独特的存储数据的方式,很难与其他类型的图表共享,例如一个简单的单系列列图表。
我的目标是在Delphi中建立一个对象结构,用于包装生成FusionCharts XML数据所需的功能。有42种可能的图表类型,每种类型都需要略有不同的XML结构。我开始构建的对象结构简单地包装了指定这样一张图表的常见属性的能力,并基于这些属性生成即时的XML数据。当然,它还包括处理多个数据集,每个数据集用于图表中的不同系列。还有一些混合数据集的怪异图表,这正是我在尝试实现此结构时迷失方向的地方。
我很快意识到这是一个巨大的任务,并想知道是否已经有人完成了这样的工作。我知道有一个VCL库可以在应用程序中显示FusionCharts,但这并不是我需要的。我只需要简单地生成XML数据,以通过Web服务器传递回HTTP客户端。
这已经做过了吗?如果没有,那么如何完成这项任务的任何提示或指针?我正准备创建一个名为“TFusionChart”的单个对象,并将所有内容都封装在其中(带有“ChartType”属性),但有42种可能的图表,这将是一团糟。我还可以创建42个不同的对象,每个对象对应一种图表,但这将具有冗余代码。
更新:
为了解释我的现有结构,我有一个基本组件叫做“TFusionChart”。该类包含所有图表所共有的内容,包括类别名称、标题、背景等。没有任何实际的图表是基于这个类的。然后我有“TFusionChart2D”和“TFusionChart3D”。然后我有4个名为“TFusionChartSingle2D”、“TFusionChartMulti2D”、“TFusionChartSingle3D”和“TFusionChartMulti3D”的组件。从这些4个类开始,我就开始创建实际的图表组件。我计划为每个可用的图表类型都提供一个组件。
我面临的问题是如何管理要包含的数据。一些图表可以组合成一个,例如:多个系列在列中、一条线系列以及列内堆叠的数据。这一个图表就有非常独特的存储数据的方式,很难与其他类型的图表共享,例如一个简单的单系列列图表。
我尝试了下面回答中描述的XML数据绑定功能,但这种解决方案太过复杂,所以我放弃了。原因在于有42种类型的图表,每种图表都需要几千行代码。