TAChart: Unify formatting of auto-generated and Source-generated marks.

git-svn-id: trunk@24147 -
This commit is contained in:
ask 2010-03-21 15:08:41 +00:00
parent 5e12f2c568
commit e1f162aa58
2 changed files with 20 additions and 22 deletions

View File

@ -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);

View File

@ -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 }