📄 uylegend.pas
字号:
{*********************************************}
{ TeeChart Delphi Component Library }
{ Custom Legend Size and Position Demo }
{ Copyright (c) 1995-1996 by David Berneda }
{ All rights reserved }
{*********************************************}
unit Uylegend;
interface
{ This form shows a customized Legend.
The Chart.OnGetLegendRect and Chart.OnGetLegendPos events are used to
change the default legend size and the default legend text positions.
}
uses
SysUtils, WinTypes, WinProcs, Messages, Classes, Graphics, Controls,
Forms, Dialogs, ExtCtrls, Chart, Series, StdCtrls, Teengine, Buttons,
TeeProcs;
type
TLegendXYForm = class(TForm)
Chart1: TChart;
PieSeries1: TPieSeries;
Panel1: TPanel;
RadioGroup1: TRadioGroup;
BitBtn3: TBitBtn;
Memo1: TMemo;
procedure FormCreate(Sender: TObject);
procedure Chart1GetLegendRect(Sender: TCustomChart; var Rect: TRect);
procedure Chart1GetLegendPos(Sender: TCustomChart; Index: Longint;
var X, Y, XColor: Longint);
procedure RadioGroup1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
DefaultLegend:Boolean;
end;
var
LegendXYForm: TLegendXYForm;
implementation
{$R *.DFM}
procedure TLegendXYForm.FormCreate(Sender: TObject);
begin
DefaultLegend:=False; { <-- only used in this example }
PieSeries1.FillSampleValues(10); { <-- some random pie sectors }
end;
procedure TLegendXYForm.Chart1GetLegendRect(Sender: TCustomChart;
var Rect: TRect);
begin
if not DefaultLegend then { <-- if we want to customize legend... }
Begin
{ This changes the Legend Rectangle dimensions }
Rect.Bottom:=Rect.Top+PieSeries1.Count*15; { <-- Calc Legend Height }
Rect.Left:=Rect.Left-120; { <-- Bigger Legend Width }
end;
end;
procedure TLegendXYForm.Chart1GetLegendPos(Sender: TCustomChart; Index: Longint;
var X, Y, XColor: Longint);
begin
if not DefaultLegend then
Begin
{ Calculate the X Y coordinates for each Legend Text }
x:=Chart1.Legend.RectLegend.Left;
x:=x + (Index div (PieSeries1.Count div 2))*100;
y:=Chart1.Legend.RectLegend.Top;
y:=y + (Index mod (PieSeries1.Count div 2))*30;
if (Index mod 2)=1 then X:=X+20;
x:=x+20;
XColor:=X-15;
end;
end;
procedure TLegendXYForm.RadioGroup1Click(Sender: TObject);
begin
{ Get the RadioGroup selection and force the chart to repaint }
DefaultLegend:=RadioGroup1.ItemIndex=0;
Chart1.Repaint;
end;
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -