Newbee here, so plase bear with me:)
I have a TFastLine series displaying a running graph. Near the BottomAxis I need to draw some letters (one at the time) for some of the values displayed. The letters draw are like a labels for the values I guess, but I need the label at the bottom of the graph, and scrolling 'together' with the value it describes.
Been reading help and examples, but right now I feel like I'm getting information overload:) and can not figure out how to achive this or even where to start.
regards,
Leo
Custom drawing
-
- Site Admin
- Posts: 14730
- Joined: Mon Jun 09, 2003 4:00 am
- Location: Banyoles, Catalonia
- Contact:
Hi Leo,
I'm not sure of what are you trying to achieve but you could do something like the code below to custom draw on TeeChart's canvas. However, you could also consider using TAnnotationTool objects (only available in TeeChart Pro) or custom labels as shown at All Features\Welcome!\Axes\Labels\Custom Labels example in TeeChart's features demo. You'll find the features demo at TeeChart's program group.
I'm not sure of what are you trying to achieve but you could do something like the code below to custom draw on TeeChart's canvas. However, you could also consider using TAnnotationTool objects (only available in TeeChart Pro) or custom labels as shown at All Features\Welcome!\Axes\Labels\Custom Labels example in TeeChart's features demo. You'll find the features demo at TeeChart's program group.
Code: Select all
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, TeEngine, TeeSurfa, TeeComma, ExtCtrls, TeeProcs, Chart, Series;
type
TForm1 = class(TForm)
Chart1: TChart;
TeeCommander1: TTeeCommander;
Series1: TFastLineSeries;
procedure FormCreate(Sender: TObject);
procedure Chart1AfterDraw(Sender: TObject);
procedure Chart1Zoom(Sender: TObject);
procedure Chart1UndoZoom(Sender: TObject);
procedure Chart1Scroll(Sender: TObject);
private
{ Private declarations }
procedure CalculateLabels(Series: TChartSeries);
public
{ Public declarations }
end;
type
TCustomText = record
X,Y: Integer;
Text: String;
end;
var
Form1: TForm1;
Labels: array[0..49] of TCustomText;
count: Integer;
implementation
{$R *.dfm}
procedure TForm1.FormCreate(Sender: TObject);
begin
Series1.FillSampleValues(Length(Labels));
CalculateLabels(Series1);
end;
procedure TForm1.Chart1AfterDraw(Sender: TObject);
var i: Integer;
begin
for i:=0 to count-1 do
Chart1.Canvas.TextOut(Labels[i].X,Labels[i].Y,Labels[i].Text);
end;
procedure TForm1.CalculateLabels(Series: TChartSeries);
var i: Integer;
begin
Chart1.Draw;
count:=0;
for i:=0 to Series.Count-1 do
if Series.YValue[i] >300 then
begin
Labels[count].X:=Series.CalcXPos(i);
Labels[count].Y:=Series.CalcYPos(i);
Labels[count].Text:='Custom text '+IntToStr(i);
inc(count);
end;
end;
procedure TForm1.Chart1Zoom(Sender: TObject);
begin
CalculateLabels(Series1);
end;
procedure TForm1.Chart1UndoZoom(Sender: TObject);
begin
CalculateLabels(Series1);
end;
procedure TForm1.Chart1Scroll(Sender: TObject);
begin
CalculateLabels(Series1);
end;
end.
Best Regards,
Narcís Calvet / Development & Support Steema Software Avinguda Montilivi 33, 17003 Girona, Catalonia Tel: 34 972 218 797 http://www.steema.com |
Instructions - How to post in this forum |