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

View File

@ -288,9 +288,12 @@ begin
end; end;
procedure TCustomChartSeries.GetLegendItemsBasic(AItems: TChartLegendItems); procedure TCustomChartSeries.GetLegendItemsBasic(AItems: TChartLegendItems);
var
i: Integer;
begin begin
if Assigned(Legend.OnDraw) then 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 else
GetLegendItems(AItems); GetLegendItems(AItems);
end; end;

View File

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