Delphi 更改TDBChart月格式显示
我正在使用一个Delphi 更改TDBChart月格式显示,delphi,delphi-2010,teechart,Delphi,Delphi 2010,Teechart,我正在使用一个TDBChart-来自TeeChart Std的饼图来显示一个饼图,该饼图对我正在使用的数据库中的PRICE列中的值进行求和,并对月份的数据进行排序-来自在数据库中设置为datetime type的列数据库 MyTDBChart显示以下内容: 我的问题:如何显示2016年10月和2016年11月的月份 (理想情况下分别为10月16日和11月16日) 如您所见,它当前显示为数字-10-16和11-16 在“系列选项”中的任何位置都找不到用于此的格式选项。在添加点之前,我将日期时间格
TDBChart
-来自TeeChart Std的饼图来显示一个饼图,该饼图对我正在使用的数据库中的PRICE
列中的值进行求和
,并对月份的数据进行排序
-来自在数据库中设置为datetime type
的列数据库
MyTDBChart
显示以下内容:
我的问题:如何显示2016年10月和2016年11月的月份
(理想情况下分别为10月16日和11月16日)
如您所见,它当前显示为数字-10-16和11-16
在“系列选项”中的任何位置都找不到用于此的格式选项。在添加点之前,我将日期时间格式化为字符串,并将其作为标签传递。即:
uses DateUtils;
procedure TForm1.FormCreate(Sender: TObject);
var tmpDate: TDateTime;
i: Integer;
begin
for i:=0 to 1 do
begin
tmpDate:=IncMonth(Today,i);
Series1.AddPie(random*100,FormatDateTime('mmm-yy', tmpDate));
end;
end;
编辑:
如果要填充并将其连接到数据源,则会自动添加标签。然后,在不修改源代码的情况下,我看到的唯一选项是使用OnGetMarkText事件,如下所示:
procedure TForm1.Series1GetMarkText(Sender: TChartSeries; ValueIndex: Integer;
var MarkText: string);
var i: Integer;
m, y: string;
begin
i:=Pos('-',MarkText);
m:=Copy(MarkText,1,i-1);
y:=Copy(MarkText,i+1,Length(MarkText)-i);
MarkText:=ShortMonthNames[StrToInt(m)] + ' ' + y;
end;
我直接使用DataSource选项卡Summary添加信息,然后在那里设置我的TSimpleDataSet。如果我正确理解了你的建议,我就不能这样“添加分数并将其作为标签传递”,或者我是否理解了你的建议,错了?嗨,谢谢你在答案中添加内容!在选择有问题的DBChart时,对象检查器列表中没有该事件。我注意到这是一个系列事件,如何访问这些事件?选择my DBChart中的序列在对象检查器中不生成事件列表您可以在对象检查器中选择序列(单击表单以更改焦点,对象检查器将刷新,将序列添加到组合框)。或者,您可以手动声明事件并在运行时分配事件,在FormCreate
:Series1.OnGetMarkText:=Series1GetMarkText代码>谢谢,工作起来很有魅力,一个问题:ShortMonthNames说未声明的标识符,我通过添加FormatSettings来修复它,如:MarkText:=FormatSettings.ShortMonthNames[strotint(m)]+“”+y代码>希望没问题:)