Cobol Foro

Cobol Foro (https://www.cobolforo.es/index.php)
-   Cocina PowerCOBOL (https://www.cobolforo.es/forumdisplay.php?f=24)
-   -   [PowerCOBOL + COM/OLE] Uso del ChartControl de Codejock (https://www.cobolforo.es/showthread.php?t=140)

Kuk 28 de mayo de 2015 20:47

Uso del ChartControl de Codejock
 
7 Archivos Adjunto(s)
El chart de Codejock es algo que me ha encantado. Para poder usarlo, lo principal es crear uno de los estilos visuales dinamicamente via COM, si no lo hacemos, no se visualiza nada. Para ello, tenemos que hacer:

En REPOSITORY:

Código COBOL:
  1.      CLASS COM AS "*COM"

Luego en donde sea necesario, por ejemplo en "Opened" del Form que va a mostrar el Chart.
Para crear un estilo (por ejemplo el ChartAreaSeriesStyle) del Chart via COM, hacemos lo siguiente (todos los estilos posibles los podeis ver en el ejemplo que se instala para VB) :

Código COBOL:
  1.  ENVIRONMENT     DIVISION.
  2.  DATA            DIVISION.
  3.  WORKING-STORAGE SECTION.
  4.  01  TXT              PIC X(50).
  5.  01  CHART-STYLE     OBJECT REFERENCE COM.
  6.  01  COB-CAPA        OBJECT REFERENCE POW-COBJECT.
  7.  01  OBJ-CAPA        OBJECT REFERENCE COM.
  8.  PROCEDURE       DIVISION.
  9.    
  10.      *> CREAMOS ESTILO EN DINAMICO
  11.      MOVE "Codejock.ChartAreaSeriesStyle.15.0.1" TO TXT    
  12.      INVOKE COM "CREATE-OBJECT" USING TXT RETURNING CHART-STYLE
  13.  
  14.      *> AÑADIMOS PRIMERA CAPA DE CHART
  15.      INVOKE "Series" OF "Content" OF ChartControl1 "Add"
  16.       USING "CAPA1" RETURNING COB-CAPA
  17.  
  18.      *> CONVERTIMOS LA CAPA CREADA EN COM
  19.      CALL "POWERCONVTOCOM" USING COB-CAPA RETURNING OBJ-CAPA
  20.  
  21.      *> APLICAMOS ESTILO
  22.      INVOKE OBJ-CAPA "SET-STYLE" USING CHART-STYLE
  23.  
  24.      *> AÑADIMOS TEXTO DE ENCABEZADO DEL CHART
  25.      INVOKE "Titles" OF "Content" OF ChartControl1 "Add" USING "Datos del año"  
  26.  
  27.      *> SI QUEREMOS USAMOS PIEL OSCURA DEL ESTILO
  28.      INVOKE "Appearance" OF "Content" OF ChartControl1 "SetAppearance" USING "BLACK"
  29.  
  30.      *> AÑADIMOS DATOS EN LA CAPA (0 = CAPA1, SI AÑADIMOS OTRA SERIA "Item"(1) ETC)
  31.      INVOKE "Points" OF "Item"(0) OF "Series" OF "Content" OF chartcontrol1 "Add" USING "Dato Nº1" 1000
  32.      INVOKE "Points" OF "Item"(0) OF "Series" OF "Content" OF chartcontrol1 "Add" USING "Dato Nº2" 589
  33.      INVOKE "Points" OF "Item"(0) OF "Series" OF "Content" OF chartcontrol1 "Add" USING "Dato Nº3" 1544
  34.      INVOKE "Points" OF "Item"(0) OF "Series" OF "Content" OF chartcontrol1 "Add" USING "Dato Nº4" 879

Resultado aqui en la imagen 1. El resto son ejemplos de apariencias.

Los 6 y 7 son 3D, movibles en ejecucion por raton.

Fito 6 de julio de 2021 18:03

Holaaaa:

Estoy usando este chart para hacer unas estadísticas, y no logro poner las etiquetas del eje X en ángulo.

Alguien lo ha probado?

Saludos

Fito....

Paulo 27 de diciembre de 2021 15:05

Hola.

Estou a tentar alterar o tamanho da fonte do titulo ("Title"), mas não estou a conseguir.
Alguém sabe como o fazer?
Estou a usar a versão 18.6.0 do codejock.
Gracias

Paulo 27 de diciembre de 2023 15:31

1 Archivos Adjunto(s)
Hola a todos
Alguem sabe o codigo para não mostrar as labels ?
Gracias

[ATTACH=CONFIG]951[/ATTACH]

Kuk 28 de diciembre de 2023 11:44

@Paulo, se hace así:

Código COBOL:
  1.      move pow-false to "Visible" OF "Label" OF "Style" OF "Item"(0) OF "Series" OF "Content" OF chartcontrol1

Paulo 1 de enero de 2024 01:56

Gracias Kuk

Fito 11 de marzo de 2024 13:45

Hola Amigos:

Se puede hacer una gráfica más extensa que el tamaño de la ventana? que se pueda hacer scroll?

Saludos

Fito...

Kuk 11 de marzo de 2024 18:03

@Fito, creo que lo hace automáticamente cuando ve que los datos ya no caben, pero no lo hacen todas las vistas sino solo en las del tipo Bar: https://forum.codejock.com/chartcont...opic17500.html

Código VB:
  1. Dim Diagram As ChartDiagram2D
  2. Set Diagram = ChartControl.Content.Series(0).Diagram
  3. Diagram.AllowScroll = True
  4. 'Diagram.AllowZoom = True 'Optional
  5. Diagram.AxisX.Range.ViewAutoRange = False
  6. Diagram.AxisX.Range.ViewMaxValue = 5 (number of bars visible in view)

En Cobol es así:

Código COBOL:
  1.  01  COB-DIAG        OBJECT REFERENCE POW-COBJECT.
  2.  01  OBJ-DIAG        OBJECT REFERENCE COM.
  3.  01  OBJ-AXIS        OBJECT REFERENCE COM.
  4.  01  OBJ-RANG        OBJECT REFERENCE COM.
  5.  
  6.  01  VERDAD          PIC X VALUE "1".
  7.  01  FALSO           PIC X VALUE "0".
  8.  01  numBars         PIC 9 value 3.
  9. ...
  10.  
  11.      *> Scrollable
  12.      move "Diagram" OF "Item"(0) OF "Series" OF "Content" OF chartcontrol1 to COB-DIAG
  13.      CALL "POWERCONVTOCOM" USING COB-DIAG RETURNING OBJ-DIAG
  14.      invoke OBJ-DIAG "get-AxisX" returning OBJ-AXIS
  15.      invoke OBJ-AXIS "get-Range" returning OBJ-RANG
  16.          
  17.      invoke OBJ-DIAG "set-AllowScroll" using VERDAD
  18.      invoke OBJ-RANG "set-ViewAutoRange" using FALSO
  19.      invoke OBJ-RANG "set-ViewMaxValue" using numBars
  20.      

En numBars hay que poner cuántas barras quieres que se vean, a partir de ahí habrá que usar el scroll.

Lo he probado y funciona.

Fito 12 de marzo de 2024 15:06

Hola Carlos:

Lo voy a probar. Para zafar lo hice manualmente, metí el control adentro de un Frame y dos barras de scroll afuera, entonces mediante un cálculo agrando el control y después con las barras resto o sumo a las propiedades Top y Left. Bien casero :mola:

Otra cosa. No me puse a investigar, pero los valores sobre las barras, cuando son grandes los pone en notación científica, Me gustaría que salieran tal cual son. Ahora en la Argentina los importes son muy grandes debido a la inflación.

Muchas gracias

Saludos

Fito...

Kuk 12 de marzo de 2024 22:05

@Fito, lo único que he encontrado es esto pero no hay respuestas: https://forum.codejock.com/display-b...opic24074.html

También he trasteado el Chart Builder que se instala con los OCX para ver las propiedades y no encuentro ninguna que hable de ello...

Se me ocurre que para el gráfico no necesitas demasiada precisión, así que puedes truncar/acortar las últimas 2 o 3 cifras y poner una "K" de kilo (miles), en plan en vez de 15.000.000 poner 15.000K o algo así.

Fito 13 de marzo de 2024 14:52

Hola Carlos:

JUNTOS SOMOS DINAMITA.....:mola::mola::mola::mola:

Gracias a tu ejemplo, empecé a probar y conseguí lo que quería.

Para configurar los valores de las barras hay que llegar a una propiedad llamada Categoría de la Etiqueta...

Código COBOL:
  1. move 1                    to "Category" of "Format" of "Label" of "Style" of "Item"(wserie) of "Series" of "Content" of Grafico

Y para Configurar el Eje Y de la misma manera lo tuve que hacer por COM (como pusiste en tu ejemplo anterior)

Código COBOL:
  1.  01  COB-DIAG         OBJECT REFERENCE POW-COBJECT.
  2.  01  OBJ-DIAG         OBJECT REFERENCE COM.
  3.  01  OBJ-AXIS         OBJECT REFERENCE COM.
  4.  01  OBJ-FORMAT       OBJECT REFERENCE COM.
  5.  01  OBJ-LABEL        OBJECT REFERENCE COM.
  6.  
  7.  01  wcateg           pic 9 value 1.
  8.  
  9. .........
  10.  
  11.            move "Diagram" of "Item"(wserie) of "Series" of "Content" of Grafico        to COB-DIAG
  12.            call "POWERCONVTOCOM" using COB-DIAG returning OBJ-DIAG
  13.            invoke OBJ-DIAG   "get-AxisY"        returning OBJ-AXIS  
  14.            invoke OBJ-AXIS   "get-Label"        returning OBJ-LABEL
  15.            invoke OBJ-LABEL  "get-Format"       returning OBJ-FORMAT  
  16.            invoke OBJ-FORMAT "set-Category" using wcateg

y voilá. Funciona a la perfeccion.

Gracias Caritos (genio total)

Saludos.

Fito...

Kuk 13 de marzo de 2024 17:12

@Fito, me alegro amigo!!!

Qué versión estás usando? Yo tengo la 15.0.1 y lo de move 1 to "Category" of "Format" ... no me deja. Y por el Chart Builder me parece que me da otra cosa....

No sé, lo mismo tengo que trastearlo. En todo caso lo importante es que ha funcionado. :bien:

Fito 13 de marzo de 2024 22:01

Hola @Kuk,

La Versión que tengo es la 20.3.0

Ahora me queda ver si puedo manipular el ancho de la barra...

Saludos

Fito...

Kuk 14 de marzo de 2024 11:17

@Fito, ah vale, es una bastante superior a la que tengo yo.

Te aconsejo a que vayas mirando este tipo de cosas en el Char Builder primero, ahí te salen todas la opciones. ;)

Fito 2 de mayo de 2024 19:00

Hoa Amigos:

Ya me funciona perfecto el gráfico, Ahora viene el momento de imprimirlo. Puedo hacer tres cosas, grabarlo como bmp, imprimirlo directamente o mostrar una vista preliminar. Las tres funciones andan, pero tengo un inconveniente. Siempre toma la parte del gráfico que se ve en la ventana. Mi gráfico ocupa más que la ventana que se muestra, hace scroll (gracias a la ayuda de @Kuk, ).

Mientras escribo esto, se me ocurre cambiar el tamaño de la ventana justo antes de immprimir, lo voy a probar, pero no creo que sea la solución que estoy buscando.

Me gustaría poder manejar más los parámetros de impresión, por ejemplo apaisarla, darle un tamaño que se vean bien los datos y lo que falte lo vaya pasando a otra hoja.

Me parece que estoy pidiendo mucho.

Saludos

Fito...

Kuk 3 de mayo de 2024 12:59

@Fito, me parece que lo más fácil será guardarlo como BMP (en temporales por ejemplo) y luego imprimirlo vía SO.


La franja horaria es GMT +2. Ahora son las 14:46.

Powered by: vBulletin, Versión 3.8.7
Derechos de Autor ©2000 - 2026, Jelsoft Enterprises Ltd.