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í.


La franja horaria es GMT +2. Ahora son las 17:16.

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