图例控件
样式选项卡
可以通过图表编辑器,图表选项卡,图例页面访问图例参数。
图例样式
图例默认样式“自动”将在图表中只有一个系列时将系列点值放入图例中。当图表包含多个系列时,“自动”会将系列名称放入图例中。在编辑器中,使用Dropdown Combobox获取默认值以外的值。如果更改图例样式以显示值,并且图表中有多个系列,TeeChart Pro将显示第一个系列的值。您可以使用自定义选项修改显示。
Chart1.Legend.LegendStyle := lsLastValues; //Puts the last value of each Series in the Legend box
文本样式
有关可能的图例文本样式的列表,请参阅TextStyle属性。文本样式格式化图例中的系列条目(例如,将值显示为总计的百分比等)。
定位图例(位置选项卡选项)
对齐
使用对齐属性(顶部,底部,左侧和右侧)有4个可用的默认位置。右边是默认位置。图例的默认定位始终位于图表之外。有关定位图例的详细信息,请参阅有关自定义图例的部分。
调整图表
大小调整大小图表属性,如果未启用,将在图表框架区域内绘制图例。虽然这对于某些Legend定位要求可能是令人满意的,但是通过使用Legend HorizMargin和VertMargin属性可以更好地控制与Chart框架相关的Legend定位。
HorizMargin和VertMargin
Horizmargin适用于左右对齐的图例。VertMargin适用于顶部和底部对齐的图例。更改Horizmargin属性值将移动Chart框架相对于Legend,反之亦然。因此,将Horizmargin值设为负值会将图表移动到图例上(增加图表矩形区域的大小)。但是,这些属性不适用于在图表上重新定位图例,为实现此目的,最好使用运行时自定义图例内容中概述的技术。
自定义位置
将Legend CustomPosition属性设置为true,然后将Legend的Top和Left像素坐标设置为自定义位置。
With Chart1.Legend do Begin CustomPosition:=True; Top:=100; Left:=100; end;
水平图例中的行数
图例水平对齐(顶部或底部)时,可以指定行数:
Chart1.Legend.MaxNumRows:=3;
默认情况下,MaxNumRows为0(零),这意味着Legend将根据需要使用尽可能多的行显示所有值。
颜色框修改(编辑器的符号选项卡)
使用Colorwidth属性设置图例中颜色框的宽度。
With Chart1.Legend do Begin //move the colour boxes to the right of the value list Symbol.Position:=spRight; //set the boxes as continuous Symbol.Continuous:=True; //Make the boxes wider Colorwidth:=40; end; //Hide the Pen of the line between the boxes //The line depends on the Series itself (here a Line Series) Series1.LinePen.Visible:=False;
在运行时自定义图例内容
Legend事件提供完全控制Legend外观和内容的选项。
OnGetLegendRect事件
图例外部矩形允许更改“图例”框的整体大小和位置。与OnGetLegendPos结合使用以重新定位图表图例和内容。
例如。您可以使用CustomPosition更无缝地实现以下移动(请参阅上文)
procedure TForm1.Chart1GetLegendRect(Sender: TCustomChart; var Rect: TRect); begin //This moves the Legend box to the left (leaving the contents where they were !) //Set Chart1.Legend.ResizeChart := False; to disable resizing of the Chart //thus placing the Legend inside the Chart rectangle Rect.Left := Rect.Left - 100; Rect.Right := Rect.Right - 100; end;
OnGetLegendPos事件
修改图例内容的位置。以下示例可与上面的代码一起使用,将Legend内容移动到新的Legend矩形。
procedure TForm1.Chart1GetLegendPos(Sender: TCustomChart; Index: Integer; var X, Y, XColor: Integer); begin //Moves the Legend contents to the left by 100 pixels use with OnGetLegendRect //Does not move colour boxes. X := X - 100; end;
OnGetLegendText事件
修改图例内容的文本。
procedure TForm1.Chart1GetLegendText(Sender: TCustomAxisPanel; LegendStyle: TLegendStyle; Index: Integer; var LegendText: String); begin //Modify Legend text LegendText := LegendText + IntToStr(Index); end;
将图例放置在图表矩形区域内时,请记住图例在系列和轴之前绘制,并且将出现在任何交叉点的任何一个下方。
OnClickLegend事件
单击图例时拾取图例项目。
procedure TForm1.Chart1ClickLegend(Sender: TCustomChart; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); Var tmp:Integer; begin tmp:=Chart1.Legend.Clicked( x,y ) ; if tmp<>-1 then ShowMessage( 'Clicked legend item: '+ Chart1.FormattedLegend( tmp ) ); end;
来源:oschina
链接:https://my.oschina.net/u/3905944/blog/3052107