Page 1 of 1

ejemplo como hacer graficos en dialogo de fw

Posted: Thu Sep 28, 2023 1:48 pm
by JoseAlvarez
Estimados compañeros.

¿alguien tiene un ejemplo de como hacer un grafico y presentarlo en un dialogo? o donde puedo conseguir información al respecto?

Tengo 2 cantidades: Total de dinero otorgado en créditos y Total de dinero recogido en cobranzas.

quedo atento, gracias.

Re: ejemplo como hacer graficos en dialogo de fw

Posted: Thu Sep 28, 2023 2:38 pm
by leandro
samples/graph.prg

Code: Select all | Expand

#include "Fivewin.ch"
#include "TGraph.ch"

#Define GRAPH_3D_SI .T.
#Define GRAPH_3D_NO .F.

FUNCTION MAIN()

    LOCAL oDlg, oGraph, oBtn

   #ifdef __CLIPPER__
      SET RESOURCES TO "Test.Dll"
   #else
      SET RESOURCES TO "Test32.Dll"
   #endif

    DEFINE DIALOG oDlg;
           SIZE 600, 500

    @ 3, 1 GRAPH oGraph;
           SIZE 250, 200;
           TYPE GRAPH_TYPE_BAR;
           YVALUES 3D XGRID YGRID XVALUES LEGENDS

//    oGraph:aSeries = { { "Serie 1", CLR_CYAN } }

//                    { cLegend, nColor, nType, l3D }

    oGraph:aSeries = { { "Serie 1", CLR_CYAN , , },;//BAR y 3D por defecto
                       { "Serie 2", CLR_HBLUE, GRAPH_TYPE_LINE, GRAPH_3D_SI },;
                       { "Serie 3", CLR_HRED, GRAPH_TYPE_POINT, GRAPH_3D_NO,.T.,.T.,.T.,"Rojo" } }

    oGraph:aYVals = { "Jan", "Feb", "Mar", "Apr", "May" }

//    oGraph:aData = { { 14280, 20420, 12870, 25347, 7640 } }

    oGraph:aData = { { 14280, 20420, 12870, 25347, 7640 },;
                     { 8350, 10315, 15870, 5347, 12340 },;
                     { 12345, -8945, 10560, 15600, 17610 } }

    oGraph:nClrX = CLR_GREEN
    oGraph:nClrY = CLR_RED
    oGraph:nPoint= 2   //Cross
    oGraph:lLine = .T. //muestra la linea amarilla en BAR
    oGraph:lViewSRLegend = .T.

    oGraph:cToolTip = {|oGph,nSerie,nPos,nVal| oGph:aSeries[nSerie][1]+CRLF+oGraph:aYVals[nPos]+": "+cValToChar(nVal)}

    @ 0, 0 BTNBMP oBtn RESOURCE "Bars" ACTION ( oGraph:nType := 1, oGraph:Refresh() )
    @ oBtn:nTop, oBtn:nRight+1 BTNBMP oBtn RESOURCE "Lines" PIXEL ACTION ( oGraph:nType := 2, oGraph:Refresh() )
    @ oBtn:nTop, oBtn:nRight+1 BTNBMP oBtn RESOURCE "Points" PIXEL ACTION ( oGraph:nType := 3, oGraph:Refresh() )
    @ oBtn:nTop, oBtn:nRight+1 BTNBMP oBtn RESOURCE "Pie" PIXEL ACTION ( oGraph:nType := 4, oGraph:Refresh() )
    @ oBtn:nTop, oBtn:nRight+1 BTNBMP oBtn RESOURCE "3D" PIXEL ACTION (oGraph:l3D  :=!oGraph:l3D     ,oGraph:Refresh())
    @ oBtn:nTop, oBtn:nRight+1 BTNBMP oBtn RESOURCE "xGrid" PIXEL ACTION (oGraph:lxGrid  :=!oGraph:lxGrid     ,oGraph:Refresh())
    @ oBtn:nTop, oBtn:nRight+1 BTNBMP oBtn RESOURCE "yGrid" PIXEL ACTION (oGraph:lyGrid  :=!oGraph:lyGrid     ,oGraph:Refresh())


    ACTIVATE DIALOG oDlg;
             CENTER

   SET RESOURCES TO

   RETURN NIL

 

Re: ejemplo como hacer graficos en dialogo de fw

Posted: Thu Sep 28, 2023 7:22 pm
by sysctrl2
FWH Harbour Power

grap en EXCEL
Image

Re: ejemplo como hacer graficos en dialogo de fw

Posted: Sat Sep 30, 2023 6:00 am
by JoseAlvarez
Hola a todos,

Gracias a los compañeros del foro que me orientaron con la elaboración de gráficos.

Ya comencé con algo muy simple, solo deseo graficar _: El dinero que se otorgó en nuevos créditos y el dinero que se recogió con la cobranza en los últimos 3 meses, cada mes.

Creo que ya lo tengo casi listo, pero por alguna razón no logro que se muestre el último mes en la gráfica.

Acá les dejo la imagen y el código:

Image

Code: Select all | Expand

    LOCAL oDlg, oGraph, oBtn

    DEFINE DIALOG oDlg SIZE 650, 450
           oDlg:lHelpIcon:=.f.

       @ .5, 1 GRAPH oGraph SIZE 300, 200 TYPE GRAPH_TYPE_BAR YVALUES XGRID YGRID XVALUES LEGENDS

         oGraph:aSeries = { { "Créditos" , CLR_CYAN  },;//BAR y 3D por defecto
                            { "Cobranzas", CLR_HBLUE }}

         oGraph:aYVals := { "Enero", "Febrero", "Marzo" }

         oGraph:aData  := { { 14280, 20420 },;
                            { 8350 , 10315 },;
                            { 10000, 6000  }}

         oGraph:nClrX         := CLR_GREEN
         oGraph:nClrY         := CLR_HBLUE
         oGraph:lViewSRLegend := .T.
        oGraph:cToolTip       := {|oGph,nSerie,nPos,nVal| oGph:aSeries[nSerie][1]+CRLF+oGraph:aYVals[nPos]+": "+cValToChar(nVal)}

    ACTIVATE DIALOG oDlg   CENTER

return .t.
 

También quiero que aparezca sobre cada columna la cantidad exacta, probé con lviewval:=.t. pero me da este error.


Time from start: 0 hours 0 mins 0 secs
Error occurred at: 30/09/2023, 01:58:50
Error description: Error BASE/1066 Argument error: conditional
Args:
[ 1] = U

Stack Calls
===========
Called from: .\source\classes\TGRAPH.PRG => TGRAPH:PAINT( 1270 )
Called from: .\source\classes\TGRAPH.PRG => (b)TGRAPH( 136 )
Called from: .\source\classes\TGRAPH.PRG => TGRAPH:DISPLAY( 0 )


¿que me esta faltando por hacer?

Re: ejemplo como hacer graficos en dialogo de fw

Posted: Sat Sep 30, 2023 1:54 pm
by Enrico Maria Giordano
I just add

Code: Select all | Expand

oGraph:lViewVal := .T.
to your example and it worked fine for me. No errors. This is the full working example:

Code: Select all | Expand

#include "Fivewin.ch"
#include "TGraph.ch"


FUNCTION MAIN()

   LOCAL oDlg, oGraph

    DEFINE DIALOG oDlg SIZE 650, 450
           oDlg:lHelpIcon:=.f.

       @ .5, 1 GRAPH oGraph SIZE 300, 200 TYPE GRAPH_TYPE_BAR YVALUES XGRID YGRID XVALUES LEGENDS

         oGraph:aSeries = { { "Créditos" , CLR_CYAN  },;//BAR y 3D por defecto
                            { "Cobranzas", CLR_HBLUE }}

         oGraph:aYVals := { "Enero", "Febrero", "Marzo" }

         oGraph:aData  := { { 14280, 20420 },;
                            { 8350 , 10315 },;
                            { 10000, 6000  }}

         oGraph:nClrX         := CLR_GREEN
         oGraph:nClrY         := CLR_HBLUE
         oGraph:lViewSRLegend := .T.
         oGraph:lViewVal      := .T.
        oGraph:cToolTip       := {|oGph,nSerie,nPos,nVal| oGph:aSeries[nSerie][1]+CRLF+oGraph:aYVals[nPos]+": "+cValToChar(nVal)}

    ACTIVATE DIALOG oDlg   CENTER

   return .t.

Re: ejemplo como hacer graficos en dialogo de fw

Posted: Sat Sep 30, 2023 3:26 pm
by JoseAlvarez
Enrico Maria Giordano wrote:I just add

Code: Select all | Expand

oGraph:lViewVal := .T.
to your example and it worked fine for me. No errors. This is the full working example:

Code: Select all | Expand

#include "Fivewin.ch"
#include "TGraph.ch"


FUNCTION MAIN()

   LOCAL oDlg, oGraph

    DEFINE DIALOG oDlg SIZE 650, 450
           oDlg:lHelpIcon:=.f.

       @ .5, 1 GRAPH oGraph SIZE 300, 200 TYPE GRAPH_TYPE_BAR YVALUES XGRID YGRID XVALUES LEGENDS

         oGraph:aSeries = { { "Créditos" , CLR_CYAN  },;//BAR y 3D por defecto
                            { "Cobranzas", CLR_HBLUE }}

         oGraph:aYVals := { "Enero", "Febrero", "Marzo" }

         oGraph:aData  := { { 14280, 20420 },;
                            { 8350 , 10315 },;
                            { 10000, 6000  }}

         oGraph:nClrX         := CLR_GREEN
         oGraph:nClrY         := CLR_HBLUE
         oGraph:lViewSRLegend := .T.
         oGraph:lViewVal      := .T.
        oGraph:cToolTip       := {|oGph,nSerie,nPos,nVal| oGph:aSeries[nSerie][1]+CRLF+oGraph:aYVals[nPos]+": "+cValToChar(nVal)}

    ACTIVATE DIALOG oDlg   CENTER

   return .t.
Hello Enrico,

Thaks for your reply

it not work in my PC

I keep continue looking for the problem,

Re: ejemplo como hacer graficos en dialogo de fw

Posted: Sat Sep 30, 2023 3:36 pm
by Enrico Maria Giordano
What is your FWH version? You may need to upgrade.

Re: ejemplo como hacer graficos en dialogo de fw

Posted: Sat Sep 30, 2023 4:10 pm
by JoseAlvarez
Enrico Maria Giordano wrote:What is your FWH version? You may need to upgrade.
fw 19.06

it is not the fw version. I checked the TGraph class and have the lViewval data.

it is another error from my side

Re: ejemplo como hacer graficos en dialogo de fw

Posted: Sat Sep 30, 2023 5:20 pm
by Enrico Maria Giordano
OK

Re: ejemplo como hacer graficos en dialogo de fw

Posted: Sat Sep 30, 2023 5:42 pm
by karinha

Re: ejemplo como hacer graficos en dialogo de fw

Posted: Sun Oct 01, 2023 2:21 am
by JoseAlvarez
Enrico Maria Giordano wrote:OK
Dear Enrico.

I already found the error.

I was defining the values ​​in a single array:

Code: Select all | Expand

aMontos := { { nTCredM3, nTCredM2 , nTCredM1 },;
             { nTPagM3 , nTPagM2  , nTPagM1  }}
 
and it must be in different and separate arrangements:

Code: Select all | Expand

aCreditos:= { nTCredM3, nTCredM2 , nTCredM1 }
aPagos   := { nTPagM3 , nTPagM2  , nTPagM1  }
We can now see the values ​​in the graph

Image

Thank you for your help and kindness.

Joao, thanks for the links that you showed me, there, I found the error.

Thanks to both.

Re: ejemplo como hacer graficos en dialogo de fw

Posted: Sun Oct 01, 2023 7:29 am
by Enrico Maria Giordano
Ok, great. But I don't understand why your sample worked fine for me...

Re: ejemplo como hacer graficos en dialogo de fw

Posted: Mon Oct 02, 2023 5:28 pm
by Marco Augusto
El ejemplo que puso SYSCTRL exportando datos y graficas a Excel
se ve fantástico
nos podrías compartir el código