mirror of
https://gitlab.com/freepascal.org/lazarus/lazarus.git
synced 2025-08-12 20:39:23 +02:00
TAChart: Unify formatting of auto-generated and Source-generated marks.
git-svn-id: trunk@24147 -
This commit is contained in:
parent
5e12f2c568
commit
e1f162aa58
@ -123,24 +123,28 @@ type
|
|||||||
specialize TGenericChartMarks<TChartAxisBrush, TChartPen, TChartAxisFramePen>)
|
specialize TGenericChartMarks<TChartAxisBrush, TChartPen, TChartAxisFramePen>)
|
||||||
private
|
private
|
||||||
FSource: TCustomChartSource;
|
FSource: TCustomChartSource;
|
||||||
|
function IsFormatStored: Boolean;
|
||||||
procedure SetSource(const AValue: TCustomChartSource);
|
procedure SetSource(const AValue: TCustomChartSource);
|
||||||
public
|
public
|
||||||
constructor Create(AOwner: TCustomChart);
|
constructor Create(AOwner: TCustomChart);
|
||||||
published
|
published
|
||||||
|
property Format stored IsFormatStored;
|
||||||
property Frame;
|
property Frame;
|
||||||
property LabelBrush;
|
property LabelBrush;
|
||||||
property LinkPen;
|
property LinkPen;
|
||||||
property Source: TCustomChartSource read FSource write SetSource;
|
property Source: TCustomChartSource read FSource write SetSource;
|
||||||
|
property Style default smsValue;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
{ TChartAxis }
|
{ TChartAxis }
|
||||||
|
|
||||||
TChartAxis = class(TCollectionItem)
|
TChartAxis = class(TCollectionItem)
|
||||||
private
|
private
|
||||||
|
FMarkTexts: TStringDynArray;
|
||||||
|
FMarkValues: TDoubleDynArray;
|
||||||
FSize: Integer;
|
FSize: Integer;
|
||||||
FTitleSize: Integer;
|
FTitleSize: Integer;
|
||||||
FMarkValues: TDoubleDynArray;
|
|
||||||
FMarkTexts: TStringDynArray;
|
|
||||||
procedure GetMarkValues(AMin, AMax: Double);
|
procedure GetMarkValues(AMin, AMax: Double);
|
||||||
private
|
private
|
||||||
FAlignment: TChartAxisAlignment;
|
FAlignment: TChartAxisAlignment;
|
||||||
@ -179,8 +183,6 @@ type
|
|||||||
procedure DrawTitle(
|
procedure DrawTitle(
|
||||||
ACanvas: TCanvas; const ACenter: TPoint; var ARect: TRect);
|
ACanvas: TCanvas; const ACenter: TPoint; var ARect: TRect);
|
||||||
function IsVertical: Boolean; inline;
|
function IsVertical: Boolean; inline;
|
||||||
function MarkToText(AMark: Double): String;
|
|
||||||
function MarkToTextDefault(AMark: Double): String;
|
|
||||||
procedure Measure(
|
procedure Measure(
|
||||||
ACanvas: TCanvas; const AExtent: TDoubleRect;
|
ACanvas: TCanvas; const AExtent: TDoubleRect;
|
||||||
var AMargins: TChartAxisMargins);
|
var AMargins: TChartAxisMargins);
|
||||||
@ -296,6 +298,13 @@ begin
|
|||||||
inherited Create(AOwner);
|
inherited Create(AOwner);
|
||||||
FFrame.Style := psClear;
|
FFrame.Style := psClear;
|
||||||
FLabelBrush.Style := bsClear;
|
FLabelBrush.Style := bsClear;
|
||||||
|
FStyle := smsValue;
|
||||||
|
FFormat := SERIES_MARK_FORMATS[FStyle];
|
||||||
|
end;
|
||||||
|
|
||||||
|
function TChartAxisMarks.IsFormatStored: Boolean;
|
||||||
|
begin
|
||||||
|
Result := FStyle <> smsValue;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
procedure TChartAxisMarks.SetSource(const AValue: TCustomChartSource);
|
procedure TChartAxisMarks.SetSource(const AValue: TCustomChartSource);
|
||||||
@ -487,7 +496,7 @@ begin
|
|||||||
FMarkValues := GetIntervals(AMin, AMax, Inverted);
|
FMarkValues := GetIntervals(AMin, AMax, Inverted);
|
||||||
SetLength(FMarkTexts, Length(FMarkValues));
|
SetLength(FMarkTexts, Length(FMarkValues));
|
||||||
for i := 0 to High(FMarkValues) do
|
for i := 0 to High(FMarkValues) do
|
||||||
FMarkTexts[i] := MarkToText(FMarkValues[i]);
|
FMarkTexts[i] := Format(Marks.Format, [FMarkValues[i]]);
|
||||||
end
|
end
|
||||||
else begin
|
else begin
|
||||||
count := 0;
|
count := 0;
|
||||||
@ -504,6 +513,10 @@ begin
|
|||||||
SetLength(FMarkValues, count);
|
SetLength(FMarkValues, count);
|
||||||
SetLength(FMarkTexts, count);
|
SetLength(FMarkTexts, count);
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
if Assigned(FOnMarkToText) then
|
||||||
|
for i := 0 to High(FMarkTexts) do
|
||||||
|
FOnMarkToText(FMarkTexts[i], FMarkValues[i]);
|
||||||
end;
|
end;
|
||||||
|
|
||||||
function TChartAxis.IsVertical: Boolean; inline;
|
function TChartAxis.IsVertical: Boolean; inline;
|
||||||
@ -511,21 +524,6 @@ begin
|
|||||||
Result := Alignment in [calLeft, calRight];
|
Result := Alignment in [calLeft, calRight];
|
||||||
end;
|
end;
|
||||||
|
|
||||||
function TChartAxis.MarkToText(AMark: Double): String;
|
|
||||||
begin
|
|
||||||
Result := MarkToTextDefault(AMark);
|
|
||||||
if Assigned(FOnMarkToText) then
|
|
||||||
FOnMarkToText(Result, AMark);
|
|
||||||
end;
|
|
||||||
|
|
||||||
function TChartAxis.MarkToTextDefault(AMark: Double): String;
|
|
||||||
const
|
|
||||||
EPSILON = 1e-16;
|
|
||||||
begin
|
|
||||||
if Abs(AMark) <= EPSILON then AMark := 0;
|
|
||||||
Result := Trim(FloatToStr(AMark));
|
|
||||||
end;
|
|
||||||
|
|
||||||
procedure TChartAxis.Measure(
|
procedure TChartAxis.Measure(
|
||||||
ACanvas: TCanvas; const AExtent: TDoubleRect; var AMargins: TChartAxisMargins);
|
ACanvas: TCanvas; const AExtent: TDoubleRect; var AMargins: TChartAxisMargins);
|
||||||
|
|
||||||
|
@ -152,8 +152,7 @@ type
|
|||||||
read FDistance write SetDistance default DEF_MARKS_DISTANCE;
|
read FDistance write SetDistance default DEF_MARKS_DISTANCE;
|
||||||
property Format: String read FFormat write SetFormat;
|
property Format: String read FFormat write SetFormat;
|
||||||
property LabelFont: TFont read FLabelFont write SetLabelFont;
|
property LabelFont: TFont read FLabelFont write SetLabelFont;
|
||||||
property Style: TSeriesMarksStyle
|
property Style: TSeriesMarksStyle read FStyle write SetStyle;
|
||||||
read FStyle write SetStyle default smsNone;
|
|
||||||
property Visible default true;
|
property Visible default true;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
@ -177,6 +176,7 @@ type
|
|||||||
property Frame;
|
property Frame;
|
||||||
property LabelBrush;
|
property LabelBrush;
|
||||||
property LinkPen;
|
property LinkPen;
|
||||||
|
property Style default smsNone;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
{ TSeriesPointer }
|
{ TSeriesPointer }
|
||||||
|
Loading…
Reference in New Issue
Block a user