TGraph 2.0 de Alfredo Arteaga
- cuatecatl82
- Posts: 614
- Joined: Wed Mar 14, 2007 6:49 pm
- Location: San Cristobal de las Casas, Chiapas México
- Contact:
TGraph 2.0 de Alfredo Arteaga
Uso la excelente Clase TGraph 2.0 y tengo la siguiente duda,
tengo una funcion en mi sistema que se encarga de mostrar una
grafica en la cual despliego el importe de ventas de cada uno
de los días del més, mi duda es..
Como puedo optimizar el uso del espacio a los lados de la grafica
para poder ver las barras un poco más amplias, es decir, al dibujar
todas las barras que representan la grafica quedan espacios vacios a
la izquierda y ala derecha, con lo cual, entre más barras se agregen,
más delgadas y más amontonadas se ven...
http://img525.imageshack.us/img525/152/tgraphmc8.jpg
La función pera las graficas es la siguiente..
#Include "FIVEWIN.CH"
#Include "TGRAPH.CH"
STATIC oGraph, oGlfGraph, aSerie, nTotal
STATIC aSers, aPers, nGraph, aValues, aVals
STATIC cFile, aItem, lInit, nRangoG
//----------------------------------------------------------------------------//
FUNCTION GrafVent()
nRangoG:= DAY(UltimoDia(DATE())) -> Para saber cuantos días tiene el mes
aVals:= ARRAY(nRangoG)
AFILL(aVals,0)
DEFINE DIALOG oGlfGraph RESOURCE "GRAFICA" TITLE "Estadisticas de Ventas del Mes"
REDEFINE GRAPH oGraph ID 100 OF oGlfGraph
oGraph:aYVals := {}
oGraph:cPicture := "$ 999"
oGraph:cTitX := "Importe de Ventas"
oGraph:cTitY := "Procesos"
oGraph:cTitle := "GRAFICA DE PRUEBA"
oGraph:cSubTit := "Subtitulo"
oGraph:lLegends := .T.
oGraph:lViewVal := .T.
oGraph:l3D := .T.
oGraph:lXVal := .T.
oGraph:lYVal := .T.
oGraph:lXGrid := .T.
oGraph:lYGrid := .T.
oGraph:lPopUp := .T.
oGraph:lDotted := .T.
oGraph:lTitle := .T.
oGraph:lcTitle := .T.
oGraph:lBorders := .T.
oGraph:lBordLeg := .T.
nGraph:= 1
oGraph:nPenWidth:= 2
oGraph:nXRanges := 25
oGraph:nBarD := 15
oGraph:nBarSep := 1
oGraph:nClrPane := CLR_WHITE
oGraph:nClrBack := CLR_HGRAY
oGraph:nClrGrid := CLR_BLUE
oGraph:nType := GRAPH_TYPE_BAR
oGraph:nTRight := 2
FOR N:= 1 TO nRangoG
aVals[N] := ImpoVenta(STR(N))
oGraph:AddSerie({aVals[N]}, "Día "+ALLTRIM(STR(N)), RandomRGB())
NEXT
oGlfGraph:lHelpIcon:= .F.
ACTIVATE DIALOG oGlfGraph CENTERED ON PAINT (oGraph:Refresh(.T.))
RETURN nil
Agradeciendo por su pronta respuesta...
xharbour + Fivewin 2.6[/img]
tengo una funcion en mi sistema que se encarga de mostrar una
grafica en la cual despliego el importe de ventas de cada uno
de los días del més, mi duda es..
Como puedo optimizar el uso del espacio a los lados de la grafica
para poder ver las barras un poco más amplias, es decir, al dibujar
todas las barras que representan la grafica quedan espacios vacios a
la izquierda y ala derecha, con lo cual, entre más barras se agregen,
más delgadas y más amontonadas se ven...
http://img525.imageshack.us/img525/152/tgraphmc8.jpg
La función pera las graficas es la siguiente..
#Include "FIVEWIN.CH"
#Include "TGRAPH.CH"
STATIC oGraph, oGlfGraph, aSerie, nTotal
STATIC aSers, aPers, nGraph, aValues, aVals
STATIC cFile, aItem, lInit, nRangoG
//----------------------------------------------------------------------------//
FUNCTION GrafVent()
nRangoG:= DAY(UltimoDia(DATE())) -> Para saber cuantos días tiene el mes
aVals:= ARRAY(nRangoG)
AFILL(aVals,0)
DEFINE DIALOG oGlfGraph RESOURCE "GRAFICA" TITLE "Estadisticas de Ventas del Mes"
REDEFINE GRAPH oGraph ID 100 OF oGlfGraph
oGraph:aYVals := {}
oGraph:cPicture := "$ 999"
oGraph:cTitX := "Importe de Ventas"
oGraph:cTitY := "Procesos"
oGraph:cTitle := "GRAFICA DE PRUEBA"
oGraph:cSubTit := "Subtitulo"
oGraph:lLegends := .T.
oGraph:lViewVal := .T.
oGraph:l3D := .T.
oGraph:lXVal := .T.
oGraph:lYVal := .T.
oGraph:lXGrid := .T.
oGraph:lYGrid := .T.
oGraph:lPopUp := .T.
oGraph:lDotted := .T.
oGraph:lTitle := .T.
oGraph:lcTitle := .T.
oGraph:lBorders := .T.
oGraph:lBordLeg := .T.
nGraph:= 1
oGraph:nPenWidth:= 2
oGraph:nXRanges := 25
oGraph:nBarD := 15
oGraph:nBarSep := 1
oGraph:nClrPane := CLR_WHITE
oGraph:nClrBack := CLR_HGRAY
oGraph:nClrGrid := CLR_BLUE
oGraph:nType := GRAPH_TYPE_BAR
oGraph:nTRight := 2
FOR N:= 1 TO nRangoG
aVals[N] := ImpoVenta(STR(N))
oGraph:AddSerie({aVals[N]}, "Día "+ALLTRIM(STR(N)), RandomRGB())
NEXT
oGlfGraph:lHelpIcon:= .F.
ACTIVATE DIALOG oGlfGraph CENTERED ON PAINT (oGraph:Refresh(.T.))
RETURN nil
Agradeciendo por su pronta respuesta...
xharbour + Fivewin 2.6[/img]
-
- Posts: 845
- Joined: Sun Oct 09, 2005 5:36 pm
- Location: la laguna, mexico.
- Alfredo Arteaga
- Posts: 326
- Joined: Sun Oct 09, 2005 5:22 pm
- Location: Mexico
- Contact:
Esa situación se presenta cuando las series solo tienen un valor, he aqui el ajuste:
http://www.despachoarteaga.com.mx/TGraph.Prg
http://www.despachoarteaga.com.mx/TGraph.Prg
- cuatecatl82
- Posts: 614
- Joined: Wed Mar 14, 2007 6:49 pm
- Location: San Cristobal de las Casas, Chiapas México
- Contact:
Probando nueva fuente..
Este es un 2 X 1
Estimado Fransico Horta:
Te comento que intente mover algunas cosas dentro del codigo fuente logrando solo descomponer el diseño de las graficas, así que opte por comentarle al autor y dicha modificacion que mando es la que deseaba.. pruebala... quedo excelente.. muy buen trabajo..
Estimado Alfredo Arteaga:
Excelente ajuste, ahora si ya quedo.. de ante mano muy adradecido, seria buena idea agregar esta modificacion a las libs de fivewin de esta fabulosa clase ya que se aprovecha al máximo todo el espacio en pantalla para ver multiples barras..
Muchas gracias a los por sus mensajes y por tomar un ratito de su tiempo
para resolver mi duda..
Saludos desde San cristobal de las Casas, Chiapas
Estimado Fransico Horta:
Te comento que intente mover algunas cosas dentro del codigo fuente logrando solo descomponer el diseño de las graficas, así que opte por comentarle al autor y dicha modificacion que mando es la que deseaba.. pruebala... quedo excelente.. muy buen trabajo..
Estimado Alfredo Arteaga:
Excelente ajuste, ahora si ya quedo.. de ante mano muy adradecido, seria buena idea agregar esta modificacion a las libs de fivewin de esta fabulosa clase ya que se aprovecha al máximo todo el espacio en pantalla para ver multiples barras..
Muchas gracias a los por sus mensajes y por tomar un ratito de su tiempo
para resolver mi duda..
Saludos desde San cristobal de las Casas, Chiapas
- cuatecatl82
- Posts: 614
- Joined: Wed Mar 14, 2007 6:49 pm
- Location: San Cristobal de las Casas, Chiapas México
- Contact:
Se me olvidaba..
Para Alfredo Arteaga..
Sería mucho pedir que nos pudieras regalar un manual completo de como poder explotar al máximo su clase. me refiero a algo un poco más avanzado, de como interactuar las funciones internas, como agregar mas series desde arreglos, diferentes colores para cada uno de las barras (esto me costo un poco), dibuar lineas y puntos desde varios valores (todavia no me sale)... en fin hay mucho por descubrir y que nos cuesta como programadores tratar de encontrar si no tenemos algo que nos guie..
De ante mano muchas gracias..
Sería mucho pedir que nos pudieras regalar un manual completo de como poder explotar al máximo su clase. me refiero a algo un poco más avanzado, de como interactuar las funciones internas, como agregar mas series desde arreglos, diferentes colores para cada uno de las barras (esto me costo un poco), dibuar lineas y puntos desde varios valores (todavia no me sale)... en fin hay mucho por descubrir y que nos cuesta como programadores tratar de encontrar si no tenemos algo que nos guie..
De ante mano muchas gracias..
Hola Foro,
Primeramente gracias a Alfredo Arteaga por facilitarnos esta clase.
Ahora mi pregunta:
Algun Compañero que este usando tGraph con xHarbour favor de verifcar si el metodo Save2BMP() le esta funcionando. A mi lo que me graba es un pequeño cuadrado blanco con una X roja en el medio.
Saludos,
George
Primeramente gracias a Alfredo Arteaga por facilitarnos esta clase.
Ahora mi pregunta:
Algun Compañero que este usando tGraph con xHarbour favor de verifcar si el metodo Save2BMP() le esta funcionando. A mi lo que me graba es un pequeño cuadrado blanco con una X roja en el medio.
Saludos,
George
- cuatecatl82
- Posts: 614
- Joined: Wed Mar 14, 2007 6:49 pm
- Location: San Cristobal de las Casas, Chiapas México
- Contact:
La Funcion de Guardar imagenes..
Esrtimado George:
Te comento que uso xHarbour build 0.45 flex con fivewin 2.6 y funciona bien, es más, la propia clase tiene una opcion que dice copiar al portapapeles o clipboard, le das click y puedes pegar la imagen en Word, Excell y hasta dentro del propio paint y funciona bien. sin problemas.. garantizado....
Que versión de xharbour y de fivewin usas, talvez tenga que ver que uses una version ya resagada, me han comentado que con las ultimas actualizaciones tambien funciona sin problemas..
Si tienes dudas comunicate conmigo
este es mi cuenta de msn danyleon82@hotmail.com
Saludos desde Chiapas
Te comento que uso xHarbour build 0.45 flex con fivewin 2.6 y funciona bien, es más, la propia clase tiene una opcion que dice copiar al portapapeles o clipboard, le das click y puedes pegar la imagen en Word, Excell y hasta dentro del propio paint y funciona bien. sin problemas.. garantizado....
Que versión de xharbour y de fivewin usas, talvez tenga que ver que uses una version ya resagada, me han comentado que con las ultimas actualizaciones tambien funciona sin problemas..
Si tienes dudas comunicate conmigo
este es mi cuenta de msn danyleon82@hotmail.com
Saludos desde Chiapas
Hola Cuate,
Estoy usando xHarbour Builder Version Jan 2007 (esta es la version profesional de paga) + FWH Sep 2006 y no tengo ningun otro problema.
Lo del clipboard y Tgraph me funciona perfecto.
El *PROBLEMA* viene cuando salvo el grafico al Hard Drive. Aqui lo unico que se salva es un pequeño cuadrado blanco con un X rooja en el medio.
Pienso que talvez el problema esta en la funcion C dibwrite() de FWH. Quizas esta funcion tambien existe en xHarbour Builder y ahi se genera el problema. Solo Antonio Linares y los del Tem Xharbour me pueden aclarar esto.
Le he preguntado en varios emails a Alfredo Arteaga pero nunca he recibido respuesta de parte de el.
Es lo unico que me falta por resolver de Tgraph.
Saludos,
George
Estoy usando xHarbour Builder Version Jan 2007 (esta es la version profesional de paga) + FWH Sep 2006 y no tengo ningun otro problema.
Lo del clipboard y Tgraph me funciona perfecto.
El *PROBLEMA* viene cuando salvo el grafico al Hard Drive. Aqui lo unico que se salva es un pequeño cuadrado blanco con un X rooja en el medio.
Pienso que talvez el problema esta en la funcion C dibwrite() de FWH. Quizas esta funcion tambien existe en xHarbour Builder y ahi se genera el problema. Solo Antonio Linares y los del Tem Xharbour me pueden aclarar esto.
Le he preguntado en varios emails a Alfredo Arteaga pero nunca he recibido respuesta de parte de el.
Es lo unico que me falta por resolver de Tgraph.
Saludos,
George
- Alfredo Arteaga
- Posts: 326
- Joined: Sun Oct 09, 2005 5:22 pm
- Location: Mexico
- Contact:
No he recibido tus emails George, solo he visto los mensajes que haz publicado en este foro.
No tengo una respuesta satisfactoria por no contar con los elementos para hacer las pruebas, sé que la clase funciona en 16 y 32 bits, parece que eres elúnico a quien se le está presentando esta situación, espero que alguien más pueda apoyarte.
No tengo una respuesta satisfactoria por no contar con los elementos para hacer las pruebas, sé que la clase funciona en 16 y 32 bits, parece que eres elúnico a quien se le está presentando esta situación, espero que alguien más pueda apoyarte.
Alfredo,
Algunas veces el anti-spam se comen los email
La verdad es que tu clase Tgraph es excelente y facil de usar. Gracias de nuevo por tu aporte.
No se porque me pasa ese problema al salvar el grafico, pero estoy casi seguro que no tiene nada que ver con tu clase sino con alguna funcion en C, talvez con la funcion Dibwrite. Quizas Antonio nos pueda aclarar un poco mas este asunto.
Saludos,
George
Algunas veces el anti-spam se comen los email
La verdad es que tu clase Tgraph es excelente y facil de usar. Gracias de nuevo por tu aporte.
No se porque me pasa ese problema al salvar el grafico, pero estoy casi seguro que no tiene nada que ver con tu clase sino con alguna funcion en C, talvez con la funcion Dibwrite. Quizas Antonio nos pueda aclarar un poco mas este asunto.
Saludos,
George
- Antonio Linares
- Site Admin
- Posts: 37481
- Joined: Thu Oct 06, 2005 5:47 pm
- Location: Spain
- Contact:
-
- Posts: 845
- Joined: Sun Oct 09, 2005 5:36 pm
- Location: la laguna, mexico.
George,
yo estoy usando sin problemas el guardar las graficas, ya sea de barras,pie,lineas y puntos, acabo de hacer mis pruebas en estos momentos y si me genera bien los archivos, asi lo tengo:
cFile:="Cmp"+oVarSys:Ano+".Bmp"
oGra:Save2Bmp(cFile)
y me va bien, adjunto el metodo de como lo uso
METHOD Save2Bmp( cFile ) CLASS TGraph
LOCAL hBmp, hDib, cDir := "\"+CurDir()
DEFAULT cFile := "TGraph.Bmp"
IF !lIsDir("\"+CurDir()+"\Graficas")
lMkDir("\"+CurDir()+"\Graficas")
ENDIF
lChDir("\"+CurDir()+"\Graficas")
hBmp := WndBitmap( Self:hWnd )
hDib := DibFromBitmap( hBmp )
DibWrite( cFile, hDib )
GloBalFree( hDib )
DeleteObject( hBmp )
IF ::nLanguage=2
MsgInfo("La imagen ha sido grabada.","Información")
ELSE
MsgInfo("Graph image save.","Info")
ENDIF
lChDir(cDir)
RETURN ( FILE( cFile ) )
salu2
paco
yo estoy usando sin problemas el guardar las graficas, ya sea de barras,pie,lineas y puntos, acabo de hacer mis pruebas en estos momentos y si me genera bien los archivos, asi lo tengo:
cFile:="Cmp"+oVarSys:Ano+".Bmp"
oGra:Save2Bmp(cFile)
y me va bien, adjunto el metodo de como lo uso
METHOD Save2Bmp( cFile ) CLASS TGraph
LOCAL hBmp, hDib, cDir := "\"+CurDir()
DEFAULT cFile := "TGraph.Bmp"
IF !lIsDir("\"+CurDir()+"\Graficas")
lMkDir("\"+CurDir()+"\Graficas")
ENDIF
lChDir("\"+CurDir()+"\Graficas")
hBmp := WndBitmap( Self:hWnd )
hDib := DibFromBitmap( hBmp )
DibWrite( cFile, hDib )
GloBalFree( hDib )
DeleteObject( hBmp )
IF ::nLanguage=2
MsgInfo("La imagen ha sido grabada.","Información")
ELSE
MsgInfo("Graph image save.","Info")
ENDIF
lChDir(cDir)
RETURN ( FILE( cFile ) )
salu2
paco
Continuando con el problema......
He renombrado la funcion "dibwrite" en "dib.c", pero ahora este fichero no compila. Recibo los siguientes errores.
Parece el que el fichero "clipapi.h" no es compatible con xHarbour Builder
Algun comentario al respecto?
Saludos,
George
He renombrado la funcion "dibwrite" en "dib.c", pero ahora este fichero no compila. Recibo los siguientes errores.
Code: Select all
xHarbour Compiler build 0.99.70 (SimpLex)
Copyright 1999-2006, http://www.xharbour.org http://www.harbour-project.org/
Generating object output to 'FUNC2.obj'...
Type: C >>>xcc.exe -Fo"dib.obj" -Ot -I"C:\xHBJan07\include" -I"C:\xHBJan07\c_include" -I"C:\xHBJan07\c_include\win" -I"C:\xHBJan07\c_include\msvc" "C:\_AML_SOFT\dib.c"<<<
C:\xHBJan07\include\ClipApi.h(71): error: Expecting an enumerator identifier.
C:\xHBJan07\include\ClipApi.h(71): error: Syntax error; found '0' expecting '}'.
C:\xHBJan07\include\ClipApi.h(463): error: Redeclaration of 'strlen' previously declared at C:\xHBJan07\c_include\string.h(30): found 'unsigned short __cdecl function(char *)' expected 'unsigned int __cdecl function(const char *)'.
C:\xHBJan07\include\ClipApi.h(464): error: Redeclaration of 'strcpy' previously declared at C:\xHBJan07\c_include\string.h(27): found 'void __cdecl function(unsigned char *, unsigned char *)' expected 'char * __cdecl function(restrict char *, restrict const char *)'.
C:\xHBJan07\include\ClipApi.h(465): error: Redeclaration of 'strcmp' previously declared at C:\xHBJan07\c_include\string.h(25): found 'int __cdecl function(char *, char *)' expected 'int __cdecl function(const char *, const char *)'.
C:\xHBJan07\include\ClipApi.h(466): error: Redeclaration of 'strcat' previously declared at C:\xHBJan07\c_include\string.h(23): found 'unsigned char * __cdecl function(unsigned char *, unsigned char *)' expected 'char * __cdecl function(restrict char *, restrict const char *)'.
C:\xHBJan07\include\ClipApi.h(511): warning: Missing type specifier.
C:\_AML_SOFT\dib.c(18): warning: Missing type specifier.
C:\_AML_SOFT\dib.c(68): error: Undeclared identifier 'READ'.
C:\_AML_SOFT\dib.c(90): warning: Local 'dwClrUsed' is not referenced.
C:\_AML_SOFT\dib.c(198): warning: Local 'hBmpOld' is not referenced.
C:\_AML_SOFT\dib.c(261): warning: Conversion from 'void *' to 'unsigned int' is undefined.
C:\_AML_SOFT\dib.c(297): error: Undefined size for 'huge' with type 'void'.
C:\_AML_SOFT\dib.c(297): error: Syntax error; found '*' expecting ';'.
C:\_AML_SOFT\dib.c(297): error: Undeclared identifier 'Bits'.
C:\_AML_SOFT\dib.c(297): error: Type error: pointer expected.
C:\_AML_SOFT\dib.c(297): error: Syntax error; found 'huge' expecting ')'.
C:\_AML_SOFT\dib.c(297): error: Illegal expression.
C:\_AML_SOFT\dib.c(297): error: Found 'int' expected a function.
C:\_AML_SOFT\dib.c(298): error: Operands of * have illegal types 'void' and 'void'.
C:\_AML_SOFT\dib.c(303): warning: Excess characters in multibyte character literal ignored.
C:\_AML_SOFT\dib.c(338): error: Redefinition of 'FWHdibwrite' previously defined at C:\_AML_SOFT\dib.c(294).
C:\_AML_SOFT\dib.c(338): error: Redeclaration of 'FWHdibwrite' previously declared at C:\_AML_SOFT\dib.c(294): found 'void __stdcall function(void)' expected 'int __cdecl function(char *, void *)'.
C:\_AML_SOFT\dib.c(339): error: Too many arguments to 'FWHdibwrite'.
C:\_AML_SOFT\dib.c(339): error: Too many arguments to 'FWHdibwrite'.
C:\_AML_SOFT\dib.c(339): error: Type error in argument 1 to '_retl'; found 'void' expected 'int'.
Type: C >>>Couldn't build: dib.obj<<<
Type: C >>>TMAKEOBJECT<<<
Type: C >>>TMAKEOBJECT:REFRESH<<<
Type: N >>> 1278<<<
Algun comentario al respecto?
Saludos,
George