【发布时间】:2019-01-04 20:15:13
【问题描述】:
我想就在堆叠条形图底部显示我的数据源的客户端名称寻求帮助。从我研究的所有示例看来,底部图表轴标签是由 TeeChart 查看数据源“自动”设置的。但是我似乎无法让它工作。下面是我想要实现的目标的图片。
Picture of what I am trying to achieve
我有三个系列'用于构建堆叠图表。我已经包含了我用于每个查询的每个数据源的图片。
Datasources for three series' queries
根据我的研究,我似乎也可以使用DBChart1GetAxisLabel() 来自定义设置标签。但我很难理解如何确保正确的自定义标签名称与我的查询中的正确“客户名称”相关联。
这是我如何构建图表的代码示例:
过程 TfrmSupplierAnalytics.btnOKClick(Sender: TObject); 变量 S,NewTypeStr,测试,clientSql:字符串; var seriasNormalOrders:TBarSeries; var seriasCreditNoteOrders:TBarSeries; var seriasPartialOrders:TBarSeries; N, i : 整数; 开始 qCreditNoteOrders.关闭; qNormalOrders.关闭; qPartialOrders.关闭; qGetClientIdFromName.Close; qClients.关闭; DBChart1.CleanupInstance; DBChart1.ClearChart; 尝试 对于 N := 0 到 clbClients.Items.Count-1 做 如果 clbClients.State[N] = cbChecked 然后开始 测试:=字符串(clbClients.Items[N]); NewTypeStr := NewTypeStr + '(E.clientid = '+ IntToStr(FindClientID(test)) + ')'; clientSql := clientSql + NewTypeStr; NewTypeStr := ' 或 '; 结尾; 除了 在 E 上:例外 ShowMessage(E.ClassName+' 引发错误,带有消息: '+E.消息); 结尾; OpenQueryCreditNoteOrders(clientSql); OpenQueryPartialOrders(clientSql); OpenQueryNormalOrders(clientSql); seriasNormalOrders :=TBarSeries.Create(self); DBChart1.AddSeries(seriasNormalOrders); seriasCreditNoteOrders :=TBarSeries.Create(self); DBChart1.AddSeries(seriasCreditNoteOrders); seriasPartialOrders :=TBarSeries.Create(self); DBChart1.AddSeries(seriasPartialOrders); seriasNormalOrders.MultiBar := mbStacked; seriasCreditNoteOrders.MultiBar := mbStacked; seriasPartialOrders.MultiBar := mbStacked; seriasNormalOrders.Marks.Visible := true; seriasNormalOrders.MarksLocation:= mlCenter; seriasNormalOrders.MarksOnBar := True; seriasNormalOrders.YValues.ValueSource := 'NormalOrders'; seriasNormalOrders.DataSource := qNormalOrders; seriasNormalOrders.Title := '正确的订单'; seriasNormalOrders.Marks.Visible := True; seriasNormalOrders.Marks.AutoPosition := true; seriasCreditNoteOrders.YValues.ValueSource := 'CreditNoteOrders'; seriasCreditNoteOrders.DataSource := qCreditNoteOrders; seriasCreditNoteOrders.Title := '信用票据订单'; seriasPartialOrders.YValues.ValueSource := 'PartialOrders'; seriasPartialOrders.DataSource := qPartialOrders; seriasPartialOrders.Title := '短期订单'; seriasNormalOrders.CheckDataSource; seriasCreditNoteOrders.CheckDataSource; seriasPartialOrders.CheckDataSource; 结尾;所以,总结一下,我的代码中是否有一些我缺少的设置会在每个堆叠条下方显示“客户端名称”,或者我必须使用自定义标签吗?
如果我必须使用自定义标签,我将不胜感激有关如何确保将数据源中的正确“客户端名称”替换为 DBChart1GetAxisLabel 中正确的 ValueIndex 的一些指导?
提前致谢。
【问题讨论】:
-
您好 Johan,您能告诉我们您使用的 TeeChart VCL/FMX 是什么吗?
-
嗨,我正在使用带有 VCL 表单的 Embarcadero RAD Studio XE2。因此,从代码中的使用部分,我看到“VCLTee.*****”正在实施。我正在使用 Steema 版本:TeeChart VCL/FMX 版本 2018 Build 2018.24.180321。
标签: delphi-xe2 teechart