Delphi 的 TCHART - 不能显示数量和文本描述
TCHART with Delphi - cannot have bar show amount and a text description
我有一个显示条形图的 Delphi 柏林程序,我希望每个条形图上方的标签显示数值,条形图下方的另一个标签显示描述,例如星期几。如果我使用 2 个按钮,显示一个或另一个,我可以同时获得这两个按钮,但是有没有办法在条形图上显示 2 个标签,一个在条形图上方,一个在下方?在此程序中,button2 在上方显示一个标签,在下方显示一个轴,但它为每个栏显示两次相同的信息。
我试图在之前的 post 中提出这个问题,但回复中 space 不足以添加足够的详细信息。
procedure TForm1.Button1Click(Sender: TObject);
var
i : integer;
begin
chart1.series[0].clear;
for i := 1 to 4 do
chart1.series[0].add(100+5*i,'',clred);
end;
procedure TForm1.Button2Click(Sender: TObject);
var
i : integer;
begin
chart1.series[0].clear;
day[1] := 'Sun';
day[2] := 'Mon';
day[3] := 'Tues';
day[4] := 'Wed';
for i := 1 to 4 do
chart1.series[0].add(100+5*i,day[i],clred);
end;
默认设置系列标记为smsLabelOrValue
,轴标签样式设置为talAuto
;这将显示点标签(如果存在)或点值(如果该点没有标签)。
要更改该行为,您可以更改这些属性:
系列标记样式:
Chart1.Series[0].Marks.Style:=smsValue;
可能的值:
smsValue, { 1234 }
smsPercent, { 12 % }
smsLabel, { Cars } // If label is empty, no mark will be displayed
smsLabelPercent, { Cars 12 % }
smsLabelValue, { Cars 1234 }
smsLegend, { (Legend.Style) }
smsPercentTotal, { 12 % of 1234 }
smsLabelPercentTotal, { Cars 12 % of 1234 }
smsXValue, { 1..2..3.. or 21/6/2014 }
smsXY, { 123 456 }
smsSeriesTitle, { Series1 }
smsPointIndex, { 1..2..3... }
smsPercentRelative, { 100%..90%..120%... }
smsLabelPercentValue, { Cars 12 % 1234 }
smsLabelOrValue
轴标签样式:
Chart1.Axes.Bottom.LabelStyle:=talValue; //talAuto, talNone, talValue, talMark, talText, talPointValue
在您的情况下,将此添加到 Button2Click 中的代码会得到所需的结果:
Chart1.Series[0].Marks.Style:=smsValue;
Yeray 的回答就是解决方案。此处重复:Chart1.Series[0].Marks.Style:=smsValue;
我有一个显示条形图的 Delphi 柏林程序,我希望每个条形图上方的标签显示数值,条形图下方的另一个标签显示描述,例如星期几。如果我使用 2 个按钮,显示一个或另一个,我可以同时获得这两个按钮,但是有没有办法在条形图上显示 2 个标签,一个在条形图上方,一个在下方?在此程序中,button2 在上方显示一个标签,在下方显示一个轴,但它为每个栏显示两次相同的信息。
我试图在之前的 post 中提出这个问题,但回复中 space 不足以添加足够的详细信息。
procedure TForm1.Button1Click(Sender: TObject);
var
i : integer;
begin
chart1.series[0].clear;
for i := 1 to 4 do
chart1.series[0].add(100+5*i,'',clred);
end;
procedure TForm1.Button2Click(Sender: TObject);
var
i : integer;
begin
chart1.series[0].clear;
day[1] := 'Sun';
day[2] := 'Mon';
day[3] := 'Tues';
day[4] := 'Wed';
for i := 1 to 4 do
chart1.series[0].add(100+5*i,day[i],clred);
end;
默认设置系列标记为smsLabelOrValue
,轴标签样式设置为talAuto
;这将显示点标签(如果存在)或点值(如果该点没有标签)。
要更改该行为,您可以更改这些属性:
系列标记样式:
Chart1.Series[0].Marks.Style:=smsValue;
可能的值:
smsValue, { 1234 } smsPercent, { 12 % } smsLabel, { Cars } // If label is empty, no mark will be displayed smsLabelPercent, { Cars 12 % } smsLabelValue, { Cars 1234 } smsLegend, { (Legend.Style) } smsPercentTotal, { 12 % of 1234 } smsLabelPercentTotal, { Cars 12 % of 1234 } smsXValue, { 1..2..3.. or 21/6/2014 } smsXY, { 123 456 } smsSeriesTitle, { Series1 } smsPointIndex, { 1..2..3... } smsPercentRelative, { 100%..90%..120%... } smsLabelPercentValue, { Cars 12 % 1234 } smsLabelOrValue
轴标签样式:
Chart1.Axes.Bottom.LabelStyle:=talValue; //talAuto, talNone, talValue, talMark, talText, talPointValue
在您的情况下,将此添加到 Button2Click 中的代码会得到所需的结果:
Chart1.Series[0].Marks.Style:=smsValue;
Yeray 的回答就是解决方案。此处重复:Chart1.Series[0].Marks.Style:=smsValue;