mirror of
https://gitlab.com/freepascal.org/lazarus/lazarus.git
synced 2025-08-11 16:36:01 +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>)
|
||||
private
|
||||
FSource: TCustomChartSource;
|
||||
function IsFormatStored: Boolean;
|
||||
procedure SetSource(const AValue: TCustomChartSource);
|
||||
public
|
||||
constructor Create(AOwner: TCustomChart);
|
||||
published
|
||||
property Format stored IsFormatStored;
|
||||
property Frame;
|
||||
property LabelBrush;
|
||||
property LinkPen;
|
||||
property Source: TCustomChartSource read FSource write SetSource;
|
||||
property Style default smsValue;
|
||||
end;
|
||||
|
||||
{ TChartAxis }
|
||||
|
||||
TChartAxis = class(TCollectionItem)
|
||||
private
|
||||
FMarkTexts: TStringDynArray;
|
||||
FMarkValues: TDoubleDynArray;
|
||||
FSize: Integer;
|
||||
FTitleSize: Integer;
|
||||
FMarkValues: TDoubleDynArray;
|
||||
FMarkTexts: TStringDynArray;
|
||||
|
||||
procedure GetMarkValues(AMin, AMax: Double);
|
||||
private
|
||||
FAlignment: TChartAxisAlignment;
|
||||
@ -179,8 +183,6 @@ type
|
||||
procedure DrawTitle(
|
||||
ACanvas: TCanvas; const ACenter: TPoint; var ARect: TRect);
|
||||
function IsVertical: Boolean; inline;
|
||||
function MarkToText(AMark: Double): String;
|
||||
function MarkToTextDefault(AMark: Double): String;
|
||||
procedure Measure(
|
||||
ACanvas: TCanvas; const AExtent: TDoubleRect;
|
||||
var AMargins: TChartAxisMargins);
|
||||
@ -296,6 +298,13 @@ begin
|
||||
inherited Create(AOwner);
|
||||
FFrame.Style := psClear;
|
||||
FLabelBrush.Style := bsClear;
|
||||
FStyle := smsValue;
|
||||
FFormat := SERIES_MARK_FORMATS[FStyle];
|
||||
end;
|
||||
|
||||
function TChartAxisMarks.IsFormatStored: Boolean;
|
||||
begin
|
||||
Result := FStyle <> smsValue;
|
||||
end;
|
||||
|
||||
procedure TChartAxisMarks.SetSource(const AValue: TCustomChartSource);
|
||||
@ -487,7 +496,7 @@ begin
|
||||
FMarkValues := GetIntervals(AMin, AMax, Inverted);
|
||||
SetLength(FMarkTexts, Length(FMarkValues));
|
||||
for i := 0 to High(FMarkValues) do
|
||||
FMarkTexts[i] := MarkToText(FMarkValues[i]);
|
||||
FMarkTexts[i] := Format(Marks.Format, [FMarkValues[i]]);
|
||||
end
|
||||
else begin
|
||||
count := 0;
|
||||
@ -504,6 +513,10 @@ begin
|
||||
SetLength(FMarkValues, count);
|
||||
SetLength(FMarkTexts, count);
|
||||
end;
|
||||
|
||||
if Assigned(FOnMarkToText) then
|
||||
for i := 0 to High(FMarkTexts) do
|
||||
FOnMarkToText(FMarkTexts[i], FMarkValues[i]);
|
||||
end;
|
||||
|
||||
function TChartAxis.IsVertical: Boolean; inline;
|
||||
@ -511,21 +524,6 @@ begin
|
||||
Result := Alignment in [calLeft, calRight];
|
||||
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(
|
||||
ACanvas: TCanvas; const AExtent: TDoubleRect; var AMargins: TChartAxisMargins);
|
||||
|
||||
|
@ -152,8 +152,7 @@ type
|
||||
read FDistance write SetDistance default DEF_MARKS_DISTANCE;
|
||||
property Format: String read FFormat write SetFormat;
|
||||
property LabelFont: TFont read FLabelFont write SetLabelFont;
|
||||
property Style: TSeriesMarksStyle
|
||||
read FStyle write SetStyle default smsNone;
|
||||
property Style: TSeriesMarksStyle read FStyle write SetStyle;
|
||||
property Visible default true;
|
||||
end;
|
||||
|
||||
@ -177,6 +176,7 @@ type
|
||||
property Frame;
|
||||
property LabelBrush;
|
||||
property LinkPen;
|
||||
property Style default smsNone;
|
||||
end;
|
||||
|
||||
{ TSeriesPointer }
|
||||
|
Loading…
Reference in New Issue
Block a user