Page 1 of 1

Cursor y Scroll

Posted: Mon Jul 23, 2018 8:21 pm
by 21082966
Hola,
Estoy programando varios TeeChart en Visual Studio 2017 con VB.NET y quiero hacer 3 cosas, que aún no logro ejecutar, espero me puedan ayudar ya que soy nueva ocupando este tipo de gráficos.

1. Mi eje X contiene fecha y hora y quiero que se vaya mostrando 1 hora cada vez y que automáticamente se vaya moviendo cuando llegue a 1 hora 1 minuto y así, pero no se como hacerlo si mi eje X no son numeros enteros si no que fechas como dije anteriormente.

2. Luego de poder realizar lo del punto 1 quisiera poder agregar unos botones en la parte inferior del gráfico para así ir retrocediendo para ver datos pasados o avanzando, según requiera.

3. Y por último quisiera pone un cursor vertical en el gráfico para poder ir visualizando los valores (ya hice para visualizar los valores, pero me sale la flecha normal de windows y quiero que sea un cursor que abarque todo el alto del TeeChart)

Muchas gracias y espero puedan ayudarme.
Saludos

Re: Cursor y Scroll

Posted: Tue Jul 24, 2018 9:02 am
by Christopher
Hola!

Para empezar, he escrito este código que produce el gif en la parte inferior. Perdone que no lo haya escrito en VB.NET - si necessita ayuda con el C# dígamelo y le haré una traducción.

Code: Select all

		public Form1()
		{

			InitializeComponent();
			InitializeChart();
		}

		private Line line;
		private void InitializeChart()
		{
			line = new Line(tChart1.Chart);
			line.XValues.DateTime = true;

			tChart1.Axes.Bottom.Labels.Angle = 90;
			tChart1.Axes.Bottom.Increment = Steema.TeeChart.Utils.GetDateTimeStep(Steema.TeeChart.DateTimeSteps.OneHour);
			tChart1.Axes.Bottom.Labels.DateTimeFormat = "yyyy/MM/dd hh:mm:ss";

			DateTime dateTime = DateTime.Now;
			Random rnd = new Random();

			for (int i = 0; i < 400; i++)
			{
				line.Add(dateTime, rnd.Next(1000));
				dateTime = dateTime.AddMinutes(15);
			}

			tChart1.Axes.Bottom.SetMinMax(line.XValues[175], line.XValues[225]);

			CursorTool cursorTool = new CursorTool(tChart1.Chart);
			cursorTool.Series = line;
			cursorTool.FollowMouse = true;
			cursorTool.Pen.Color = System.Drawing.Color.Red;
			cursorTool.Style = CursorToolStyles.Vertical;
			cursorTool.Change += CursorTool_Change;
		}

		private void CursorTool_Change(object sender, CursorChangeEventArgs e)
		{
			int start = tChart1.Axes.Left.IStartPos;
			int end = tChart1.Axes.Left.IEndPos;
			int valueIndex;

			for (int i = start; i < end; i++)
			{
				valueIndex = line.Clicked(e.x, i);
				if (valueIndex > -1)
				{
					tChart1.Header.Text = "YValue: " + line.YValues[valueIndex];
					break;
				}
			}
		}

		private void DoScrollBottomAxis(double offset, bool positive)
		{
			double max = tChart1.Axes.Bottom.Maximum;
			double min = tChart1.Axes.Bottom.Minimum;
			if (positive)
				tChart1.Axes.Bottom.SetMinMax(min + offset, max + offset);
			else
				tChart1.Axes.Bottom.SetMinMax(min - offset, max - offset);

		}

		private void bLeft_Click(object sender, EventArgs e)
		{
			DoScrollBottomAxis(Steema.TeeChart.Utils.GetDateTimeStep(Steema.TeeChart.DateTimeSteps.OneHour), false);
		}

		private void bRight_Click(object sender, EventArgs e)
		{
			DoScrollBottomAxis(Steema.TeeChart.Utils.GetDateTimeStep(Steema.TeeChart.DateTimeSteps.OneHour), true);
		}
2018-07-24_10-56-11.gif
2018-07-24_10-56-11.gif (227.53 KiB) Viewed 17264 times

Re: Cursor y Scroll

Posted: Mon Jul 30, 2018 6:45 pm
by 21082966
Hola Christopher,
Muchas gracias por tu ayuda es exactamente lo que quiero hacer, pero es dificil pasarlo a vb.net, ya que al parecer las clases no tienen los mismos nombres, por ejemplo eso del cursor, no se como declararlo, me podrías ayudar un poco para convertir el codigo? Gracias otra vez!!

Re: Cursor y Scroll

Posted: Tue Jul 31, 2018 10:18 am
by Christopher
Hola,

claro que sí, aquí tienes el codigo en VB.NET

Code: Select all

	Public Sub New()

		' This call is required by the designer.
		InitializeComponent()

		' Add any initialization after the InitializeComponent() call.

		InitializeChart()

	End Sub

	Private Sub bLeft_Click(sender As Object, e As EventArgs) Handles bLeft.Click
		DoScrollBottomAxis(Steema.TeeChart.Utils.GetDateTimeStep(Steema.TeeChart.DateTimeSteps.OneHour), False)
	End Sub

	Private Sub bRight_Click(sender As Object, e As EventArgs) Handles bRight.Click
		DoScrollBottomAxis(Steema.TeeChart.Utils.GetDateTimeStep(Steema.TeeChart.DateTimeSteps.OneHour), True)
	End Sub

	Dim line1 As Line

	Private Sub DoScrollBottomAxis(offset As Double, positive As Boolean)
		Dim max As Double = TChart1.Axes.Bottom.Maximum
		Dim min As Double = TChart1.Axes.Bottom.Minimum
		If positive Then
			TChart1.Axes.Bottom.SetMinMax(min + offset, max + offset)
		Else
			TChart1.Axes.Bottom.SetMinMax(min - offset, max - offset)
		End If
	End Sub

	Private Sub InitializeChart()
		line1 = New Line(TChart1.Chart)
		line1.XValues.DateTime = True

		TChart1.Axes.Bottom.Labels.Angle = 90
		TChart1.Axes.Bottom.Increment = Steema.TeeChart.Utils.GetDateTimeStep(DateTimeSteps.OneHour)
		TChart1.Axes.Bottom.Labels.DateTimeFormat = "yyyy/MM/dd hh:mm:ss"

		Dim dateTime As DateTime = DateTime.Now
		Dim rnd As Random = New Random()

		For i = 0 To 400
			line1.Add(dateTime, rnd.Next(1000))
			dateTime = dateTime.AddMinutes(15)
		Next

		TChart1.Axes.Bottom.SetMinMax(line1.XValues.Item(175), line1.XValues.Item(225))

		Dim cursorTool As CursorTool = New CursorTool(TChart1.Chart)
		cursorTool.Series = line1
		cursorTool.FollowMouse = True
		cursorTool.Pen.Color = Color.Red
		cursorTool.Style = CursorToolStyles.Vertical
		AddHandler cursorTool.Change, AddressOf CursorTool_Change


	End Sub

	Private Sub CursorTool_Change(sender As Object, e As CursorChangeEventArgs)
		Dim start As Integer = TChart1.Axes.Left.IStartPos
		Dim ended As Integer = TChart1.Axes.Left.IEndPos
		Dim valueIndex As Integer

		Try
			For i = start To ended
				valueIndex = line1.Clicked(e.x, i)
				If valueIndex > -1 Then
					TChart1.Header.Text = "YValue: " + line1.YValues.Item(valueIndex).ToString()
					Exit Try
				End If
			Next
		Finally
		End Try
	End Sub

Re: Cursor y Scroll

Posted: Tue Jul 31, 2018 3:26 pm
by 21082966
Christopher,
Muchas gracias, pero no me resulta y descubrí que no tengo el CursorTool dentro de las Tools de mi TeeChart, que podrá ser? Me podrías ayudar nuevamente, por favor? Saludos!!

Re: Cursor y Scroll

Posted: Wed Aug 01, 2018 7:11 am
by Christopher
Hola Mel,

Cual es la versión de TeeChart que utilizas? La versión Business (aquí) no tiene el CursorTool, por ejemplo.

Re: Cursor y Scroll

Posted: Tue Aug 28, 2018 2:45 pm
by 21082966
Christopher wrote:
Wed Aug 01, 2018 7:11 am
Hola Mel,

Cual es la versión de TeeChart que utilizas? La versión Business (aquí) no tiene el CursorTool, por ejemplo.
Hola Christopher,
Era lo que decías, ahora ya actualicé mi teechart a versión pro y me aparece el cursor, pero necesito que la función CursorTool_Change sea genérica, osea yo pasarle el nombre del teechart y me vaya agregando el cursor a cada uno. Como lo podría hacer? Ya que pasarle parámetros en el add handler me pide un parametro para "cursorchangeeventargs" y no se que debo pasarle, me podrías ayudar?
Muchas gracias por todo!!

Re: Cursor y Scroll

Posted: Wed Aug 29, 2018 7:34 am
by Christopher
Hola Mel,

así con la versión Pro de TeeChart ya puedes compilar y ejecutar el código en mi mensaje aquí? Perdona, pero no entiendo muy bien qué cosas quieres hacer más con este código - me lo puedes explicar en más detalle por favor?