mirror of
https://gitlab.com/freepascal.org/lazarus/lazarus.git
synced 2025-04-28 06:23:56 +02:00
TAChart: Add Legend.UserItemsCount property
git-svn-id: trunk@28571 -
This commit is contained in:
parent
2b62871247
commit
abd5ef4928
@ -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
|
||||
|
@ -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;
|
||||
|
@ -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(
|
||||
|
Loading…
Reference in New Issue
Block a user