TAChart: Add Legend.UserItemsCount property

git-svn-id: trunk@28571 -
This commit is contained in:
ask 2010-11-30 13:16:06 +00:00
parent 2b62871247
commit abd5ef4928
3 changed files with 26 additions and 7 deletions

View File

@ -34,7 +34,8 @@ type
seMarginY: TSpinEdit;
procedure cbUseSidebarChange(Sender: TObject);
procedure Chart1FuncSeries1Calculate(const AX: Double; out AY: Double);
procedure Chart1FuncSeries1DrawLegend(ACanvas: TCanvas; const ARect: TRect);
procedure Chart1FuncSeries1DrawLegend(
ACanvas: TCanvas; AIndex: Integer; const ARect: TRect);
procedure FormCreate(Sender: TObject);
procedure rgAlignmentClick(Sender: TObject);
procedure seMarginXChange(Sender: TObject);
@ -63,7 +64,7 @@ begin
end;
procedure TForm1.Chart1FuncSeries1DrawLegend(
ACanvas: TCanvas; const ARect: TRect);
ACanvas: TCanvas; AIndex: Integer; const ARect: TRect);
var
x, y0, w: Integer;
begin

View File

@ -288,9 +288,12 @@ begin
end;
procedure TCustomChartSeries.GetLegendItemsBasic(AItems: TChartLegendItems);
var
i: Integer;
begin
if Assigned(Legend.OnDraw) then
AItems.Add(TLegendItemUserDrawn.Create(Legend.OnDraw, Title))
for i := 0 to Legend.UserItemsCount - 1 do
AItems.Add(TLegendItemUserDrawn.Create(i, Legend.OnDraw, Title))
else
GetLegendItems(AItems);
end;

View File

@ -42,15 +42,17 @@ type
end;
TLegendItemDrawEvent =
procedure (ACanvas: TCanvas; const ARect: TRect) of object;
procedure (ACanvas: TCanvas; AIndex: Integer; const ARect: TRect) of object;
{ TLegendItemUserDrawn }
TLegendItemUserDrawn = class(TLegendItem)
private
FIndex: Integer;
FOnDraw: TLegendItemDrawEvent;
public
constructor Create(AOnDraw: TLegendItemDrawEvent; const AText: String);
constructor Create(
AIndex: Integer; AOnDraw: TLegendItemDrawEvent; const AText: String);
procedure Draw(ACanvas: TCanvas; const ARect: TRect); override;
property OnDraw: TLegendItemDrawEvent read FOnDraw;
end;
@ -166,8 +168,10 @@ type
private
FMultiplicity: TLegendMultiplicity;
FOnDraw: TLegendItemDrawEvent;
FUserItemsCount: Integer;
procedure SetMultiplicity(AValue: TLegendMultiplicity);
procedure SetOnDraw(AValue: TLegendItemDrawEvent);
procedure SetUserItemsCount(AValue: Integer);
public
constructor Create(AOwner: TCustomChart);
public
@ -176,6 +180,8 @@ type
property Multiplicity: TLegendMultiplicity
read FMultiplicity write SetMultiplicity default lmSingle;
property OnDraw: TLegendItemDrawEvent read FOnDraw write SetOnDraw;
property UserItemsCount: Integer
read FUserItemsCount write SetUserItemsCount default 1;
property Visible default true;
end;
@ -203,9 +209,10 @@ end;
{ TLegendItemUserDrawn }
constructor TLegendItemUserDrawn.Create(
AOnDraw: TLegendItemDrawEvent; const AText: String);
AIndex: Integer; AOnDraw: TLegendItemDrawEvent; const AText: String);
begin
inherited Create(AText);
FIndex := AIndex;
FOnDraw := AOnDraw;
end;
@ -213,7 +220,7 @@ procedure TLegendItemUserDrawn.Draw(ACanvas: TCanvas; const ARect: TRect);
begin
inherited Draw(ACanvas, ARect);
if Assigned(FOnDraw) then
FOnDraw(ACanvas, ARect);
FOnDraw(ACanvas, FIndex, ARect);
end;
{ TLegendItemLine }
@ -491,6 +498,7 @@ constructor TChartSeriesLegend.Create(AOwner: TCustomChart);
begin
inherited Create(AOwner);
FVisible := true;
FUserItemsCount := 1;
end;
procedure TChartSeriesLegend.SetMultiplicity(AValue: TLegendMultiplicity);
@ -507,6 +515,13 @@ begin
StyleChanged(Self);
end;
procedure TChartSeriesLegend.SetUserItemsCount(AValue: Integer);
begin
if FUserItemsCount = AValue then exit;
FUserItemsCount := AValue;
StyleChanged(Self);
end;
procedure SkipObsoleteProperties;
begin
RegisterPropertyEditor(