Se trata de una suite de user controls, para crear gráficos estadísticos. Son cuatro controles pero algunos poseen estilos diferentes, se podría decir que están los principales y más utilizados. Cada user control es independiente del otro, por lo que no requiere implementar toda la suite, por supuesto esto no lo hace más óptimo en reducción de código, pero es esa costumbre de no depender de nada, son muchas lineas de código y seguramente habrá más de algún bugs dando vuelta, por mi parte creo que hasta aquí llegaron mis ganas con esto, por supuesto que si alguien encuentra algún error o sugerencia se agradece informar para corregirlo.
En la descarga se encuentra un ejemplo de cada uno y un proyecto principal que abarca todos y algunos agregados para simular un Dashboard.








Actualizado 21/12/2021, se añadió la función image() la cual retorna una imagen del grafico para poder imprimirla, esta tiene como parámetros opcionales Ancho y Alto para poder ajustar a la hoja de impresión, junto a los ejemplos individuales hay una demostración de como imprimir.
Muy Bueno, lo que recomendaría es ampliar el numero a tipo exploting, y también en los chart Barra, que se muestre los valores en la punta de la barra, sin la necesidad de pasar el mouse por encima de la imagen…
Hola gracias por las recomendaciones, no entiendo a que te referis con «tipo exploting», en cuanto a los valores se puede mostrar en en la punta de la barra, cambiar LabelsVisible =True y LabelsPositions = LP_ABOBE
Al cambiar el valor de labelsvisible a true en barchar horizontal y ejecutar, arroja el error «El subindice esta fuera del intervalo» dirigiendo a General, DrawHorizontal, del control UcChartBar, Otro seria los modelos de Chart se aumentaria y tambien a 3D el Otro es que mostrara los labelsvisible en vertical en la punta del barra en forma de Pop Ups.
Muchas Gracias por sus aportes
3D no está en mi lista de deseos, sería un lindo desafío pero, creo que hoy en día se ven muy pocos en 3D, está mas de moda lo simplista, lo plano, si buscas charts en google fijate que ya casi no muestran modelos 3D.
Gracias por los errores mencionados.
Hola leandro Ud. Es un Capo de los capos de programación en Vb 6.0, Si por favor me propria apoyar con este código:
http://leandroascierto.com/foro/index.php?topic=3396.msg18324#msg18324
Con los siguientes Controles. Muchas Gracias
https://downloadly.ir/software/programming/teechart/
https://downloadly.ir/software/programming/proessentials/
Gracias por el aporte., tengo hartos informes que llevar a gráficos y esta es una excelente opción.
Saludos !!
Por favor podrías hacer una demo con conexión ADO????
Por favor podrias hacer conexion conADO. Gracias
Boa tarde
como facho pra imprimir este gráfico
Si por favor Leandro deseamos que se conecte con Ado
Después de utilizarlo un rato , no se porque los números decimales dan problemas, cuando uso .add int(valor) funciona correctamente.
Efectivamente no se porqué pero en ningún control que he probado se admiten números decimales. Además el control ChartArea no tiene método .clear así que no se como limpiar el grafico para recargar nuevos datos.
Si pudiera darnos unas indicaciones se lo agradecería. Me parecen fantásticos estos desarrollos y definitivamente les dan otro aspecto a los viejos desarrollos de vb6.
Gracias.
Hola Carlos, si tienes razón no tiene un método Clear, debería tenerlo, en cuanto a los decimales no note que este fallando, pero volveré a revisarlo, cualquier cosa deja un ejemplo aquí de que parámetros pasas, para encontrar mas fácil el error.
Buenos días:
Gracias por el comentario. El error que nos aparece es «El objeto ya no es válido» Cuando pasamos por Function GetMax()
Resulta que el valor de m_Serie(0).Values(1) i=0 y j=1 no está definido y falla la compraración If M < m_Serie(i).Values(j) Then
Nos pasa siempre pero cuando forzamos valores enteros add int(valor) el error no ocurre. También decirle que esos valores vienen de un recorset y rellenemoslos mismos en un bucle algo que creemos no estará relacionado.
If Not rs.EOF Then
Set Value = New Collection
With Value
For i = 0 To 11
.Add Int(rs(i)) ' Aquí es donde pasamos el valor al metodo add
Next i
End With
chart_compras.AddLineSeries "Pagado", Value, &H800080
End If
Gracias por todo
Perdón pero efectivamente con un .Add Replace(rs(i), «,», «.») funciona ok, son puntos en vez de comas…. como siempre en vb6 jeje.
Buenas de nuevo. Una vez que implementamos los números con decimales con punto en el ChartArea vemos que el eje Y no se forma bien porque no tiene en cuenta el punto.
en la Función Getmax () del user control aun poniendo M como double M siempre coge un valor entero Si m_Serie(i).Values(j) =23456.45 por ejemplo M vale 2345645 con lo que getmax() devuelve un limite superior del eje erróneo.
Private Function GetMax() As Single
Dim i As Long, j As Long, M As Single
For i = 0 To SerieCount – 1
For j = 1 To m_Serie(i).Values.Count
If M < m_Serie(i).Values(j) Then
M = m_Serie(i).Values(j)
End If
Next
Next
GetMax = M
End Function
Carlos ya probaste pasarlo directamente así
.Add rs(i)
porque por lo que entiendo el valor que se le esta pasando no es un decimal.
buenas Leandro:
cuando paso rs(i) si
.add 200 ‘ funciona ok
.add 200,2 ‘ da error por ser una coma
.add 200.2 ‘ funciona ok al pasarle decimales con punto pero la función getmax() no calcula bien el limite superior del eje Y porque en
M = m_Serie(i).Values(j), M siempre elimina los puntos decimales.
No se si me he explicado bien.
finalmente se pudo solucionar únicamente con
.add format(rs(i),»0.00″) ‘ así todo funciona correctamente en el chart Area.
Ahora encontré que el .value del Piechart no puede ser decimal, aparte del método .clear del chartArea
Todo lo demás funciona de maravilla, gracias.
Carlos, ahi subí nuevamente el .zip con con el clear del ChartArea, después de llamar a Clear, invocar a Refresh si se quiere mostrar el grafico limpio, de lo contrario volver a cargar los nuevos valores y después invocar a refresh.
el value del Piechart si puede ser con decimales, de echo en ejemplo que se encuentra solo paso Rnd como valor aleatorio y este es casi siempre es un numero decimal.
cualquier cosa me comentas.
Buenas tardes; todo perfecto con el chartArea, disculpas pero me refería al objeto Progrescircular que es el que no admite decimales en un metodo .value.
Carlos, yo opte por mostrar un numero entero, ya que no me pareció necesario mostrar un decimal cuando hablamos de porcentaje, pero si vos queres mostrar el decimal podes cambiar esta linea dentro del usercontrol en la funcion «Draw»
sDiplay = CStr(Portion * 100 \ Range) & «%»
por esto
sDiplay = CStr(Portion * 100 / Range) & «%»
ojo que el blog cambia las comillas dobles ‘ ‘ por » «
Que maravillla! quedo muy agradecido por tu dedicación.
A medida que vamos utilizando los controles vamos dándole mejor uso.
Nuestro próximo proyecto tratará de un panel de control estilo web donde aplicaremos la mayoría de tus controles. La idea es hacer algo parecido a bootstrap pero sin bootstrap.
solo una ultima consulta:
Print.form falla con cualquiera de los controles como Chartarea Piechart, etc… si se intenta imprimir el formulario que los incluye simplemente se cierra el aplicativo.
te respospondo en este hilo porque no puedo pegar código aquí.
http://leandroascierto.com/foro/index.php?topic=3455.0
Buenos días
dentro de ese código ni scaleX ni scaleY estan definidos nos arroja error.
perdón es oForm.ScaleX y oForm.ScaleY ahi actualice el codigo.
Gracias por todo, ya funciona perfecto.
hola Leandro excelente control, se puede guardar como imagen o imprimir?
Hola Grabriel entre hoy o mañana estaré subiendo una actualizacion para que esto sea posible, agregare una propiedad «Image» para que esta se pueda utilizar con Printer.PaintPicture
Saludos.
muy bueno, pero al compilar para ocx y usar en el proyecto el error de HasDc o Windowsless = true, y no se como solucionarlo
Gracias.
Hola Jean, descárgalo y prueba nuevamente, he corregido algunas cosas que no funcionaban si estaban como ocx.
Saludos.
Leandro, meus parabéns, buscava este tipo de qualidade para os nosso projeto algum tempo.
Leandro, realmente muy buenos controles, pero tengo un problema al llevar el control a mis proyectos me anda saliendo un error en el control de ucProgressCircular, al hacer clic en propiedades me sale error del proyecto del control y me manda el siguiente error….»Cadena de clase no válida» y los controles insertados desaparecen y en esa area aparece una franja negra, la única forma de volver a mostrar el formulario es cerrar y volver a abrir.
Por favor una ayuda para poder salvar este problema, de antemano muchas gracias
Mil disculpas el error completo es «Cadena de clase no válido. Buscando un objeto con ProyID»
Saludos nuevamente