TeeChart VCL for Borland/CodeGear/Embarcadero RAD Studio, Delphi and C++ Builder.
-
senbengtma
- Newbie
- Posts: 15
- Joined: Tue Nov 09, 2021 12:00 am
Post
by senbengtma » Thu May 04, 2023 1:14 pm
I cant access the series that is a function, only series1.
Code: Select all
type
TForm1 = class(TForm)
Chart1: TChart;
Series1: TCandleSeries;
Series2: TFastLineSeries;
TeeFunction1: THighTeeFunction;
Series3: TFastLineSeries;
TeeFunction2: TLowTeeFunction;
ChartListBox1: TChartListBox;
procedure GoToTeechart(sender: TObject; DataId: Integer; RealTimeDataElement: TIABRealTimeData);
procedure GoToTeechartHistory(Sender: TObject; DataId, Item, Count: Integer; HistoricalChartDataElement: TIABHistoricalChartData);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
num:integer;
implementation
{$R *.dfm}
procedure tform1.GoToTeechart(Sender: TObject; DataId: Integer; RealTimeDataElement: TIABRealTimeData);
var
Open,High,Low,Close: Double;
first1,last1,first2,last2:integer;
tid:tdatetime;
begin
tid:=realtimedataelement.DateTime;
Open:=RealTimeDataElement.Open;
High:=RealTimeDataElement.High;
Low:=RealTimeDataElement.Low;
Close:=RealTimeDataElement.Close;
Chart1.LeftAxis.Maximum :=high+1 ;
Chart1.LeftAxis.minimum :=low-1 ;
series1.AddCandle(now,open,high,low,close);
chart1.Axes.Bottom.AdjustMaxMin;
self.series1.CalcFirstLastVisibleIndex;
self.Series2.CalcFirstLastVisibleIndex;
first1:=series1.FirstDisplayedIndex;
last1:=series1.LastDisplayedIndex;
first2:=series2.FirstDisplayedIndex;
last2:=series2.LastDisplayedIndex;
//first2:=chart1.Series[1].FirstDisplayedIndex;
//last2:=chart1.Series[1].LastDisplayedIndex;
codesite.Send(format('first1:%d first2:%d last1:%d last2:%d',[first1,first2,last1,last2]));
-
senbengtma
- Newbie
- Posts: 15
- Joined: Tue Nov 09, 2021 12:00 am
Post
by senbengtma » Thu May 04, 2023 1:18 pm
first1:0 first2:-1 last1:1 last2:-1
first1:0 first2:-1 last1:2 last2:-1
first1:0 first2:-1 last1:3 last2:-1
first1:0 first2:-1 last1:4 last2:-1
-
Yeray
- Site Admin
- Posts: 9622
- Joined: Tue Dec 05, 2006 12:00 am
- Location: Girona, Catalonia
-
Contact:
Post
by Yeray » Tue May 09, 2023 12:47 pm
Hello,
You may have missed to add a
DataSource
to
Series2
. Ie:
Code: Select all
Series1:=TCandleSeries(Chart1.AddSeries(TCandleSeries));
Series1.FillSampleValues;
TeeFunction1:=THighTeeFunction.Create(Self);
Series2:=TFastLineSeries(Chart1.AddSeries(TLineSeries));
Series2.DataSource:=Series1;
Series2.SetFunction(TeeFunction1);
-
senbengtma
- Newbie
- Posts: 15
- Joined: Tue Nov 09, 2021 12:00 am
Post
by senbengtma » Wed May 10, 2023 11:58 am
thanks but No..
Code: Select all
object Series1: TCandleSeries
Legend.Visible = False
CloseValues.Name = 'Close'
CloseValues.Order = loNone
DateValues.Name = 'Date'
DateValues.Order = loAscending
HighValues.Name = 'High'
HighValues.Order = loNone
LowValues.Name = 'Low'
LowValues.Order = loNone
OpenValues.Name = 'Open'
OpenValues.Order = loNone
ShowInLegend = False
DownCloseColor = 1330417
DownCloseGradient.StartColor = 1330417
HighLowPen.Color = clDefault
HighLowPen.EndStyle = esSquare
UpCloseColor = 6519581
UpCloseGradient.StartColor = 6519581
end
object Series2: TFastLineSeries
LinePen.Color = 3513587
XValues.DateTime = True
XValues.Name = 'X'
XValues.Order = loAscending
YValues.Name = 'Y'
YValues.Order = loNone
DataSources = (
'Series1')
object TeeFunction1: THighTeeFunction
end
end
-
Yeray
- Site Admin
- Posts: 9622
- Joined: Tue Dec 05, 2006 12:00 am
- Location: Girona, Catalonia
-
Contact:
Post
by Yeray » Fri May 12, 2023 10:55 am
Hello,
Maybe you need to add the
CheckDataSource
after adding a new value to the candle.
Find an example attached.