FiveTech Support Forums

FiveWin / Harbour / xBase community
Board index FiveWin para Harbour/xHarbour TGraph 2.0 de Alfredo Arteaga
Posts: 625
Joined: Wed Mar 14, 2007 06:49 PM
TGraph 2.0 de Alfredo Arteaga
Posted: Sat Jun 30, 2007 03:14 PM

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]

Soluciones y Diseño de Software
Damos Soluciones...

I.S.C. Victor Daniel Cuatecatl Leon
Director y Diseñador de Proyectos

http://www.soldisoft.unlugar.com
http://www.sisa.unlugar.com
danyleon82@hotmail.com
www.facebook.com/victordaniel.cuatecatlleon
Posts: 845
Joined: Sun Oct 09, 2005 05:36 PM
TGraph 2.0 de Alfredo Arteaga
Posted: Sun Jul 01, 2007 02:54 AM

creo que ahi tienes que modificar la clase directamente, no he visto alguna variable para modificar eso,
salu2
paco

____________________

Paco
Posts: 326
Joined: Sun Oct 09, 2005 05:22 PM
TGraph 2.0 de Alfredo Arteaga
Posted: Mon Jul 02, 2007 03:25 AM

Esa situación se presenta cuando las series solo tienen un valor, he aqui el ajuste:

http://www.despachoarteaga.com.mx/TGraph.Prg

Posts: 729
Joined: Tue Oct 18, 2005 06:49 PM
TGraph 2.0 de Alfredo Arteaga
Posted: Mon Jul 02, 2007 04:31 AM

Alfredo,

Tu has podido duplicar el problema que se me presenta al usar tGraph + xHarbour de que no funciona Save2Bmp() ?

Saludos,

George

Posts: 625
Joined: Wed Mar 14, 2007 06:49 PM
Probando nueva fuente..
Posted: Tue Jul 03, 2007 05:09 PM
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
Soluciones y Diseño de Software
Damos Soluciones...

I.S.C. Victor Daniel Cuatecatl Leon
Director y Diseñador de Proyectos

http://www.soldisoft.unlugar.com
http://www.sisa.unlugar.com
danyleon82@hotmail.com
www.facebook.com/victordaniel.cuatecatlleon
Posts: 625
Joined: Wed Mar 14, 2007 06:49 PM
Se me olvidaba..
Posted: Tue Jul 03, 2007 05:25 PM

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.. :lol:

Soluciones y Diseño de Software
Damos Soluciones...

I.S.C. Victor Daniel Cuatecatl Leon
Director y Diseñador de Proyectos

http://www.soldisoft.unlugar.com
http://www.sisa.unlugar.com
danyleon82@hotmail.com
www.facebook.com/victordaniel.cuatecatlleon
Posts: 1144
Joined: Mon Feb 05, 2007 07:15 PM
TGraph 2.0 de Alfredo Arteaga
Posted: Tue Jul 03, 2007 06:04 PM

Yo creo que no hay mejor manual que el codigo fuente,,

saludos.

Cesar Cortes Cruz

SysCtrl Software

Mexico



' Sin +- FWH es mejor "
Posts: 729
Joined: Tue Oct 18, 2005 06:49 PM
TGraph 2.0 de Alfredo Arteaga
Posted: Tue Jul 03, 2007 06:33 PM

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

Posts: 625
Joined: Wed Mar 14, 2007 06:49 PM
La Funcion de Guardar imagenes..
Posted: Wed Jul 04, 2007 05:34 PM

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

Soluciones y Diseño de Software
Damos Soluciones...

I.S.C. Victor Daniel Cuatecatl Leon
Director y Diseñador de Proyectos

http://www.soldisoft.unlugar.com
http://www.sisa.unlugar.com
danyleon82@hotmail.com
www.facebook.com/victordaniel.cuatecatlleon
Posts: 729
Joined: Tue Oct 18, 2005 06:49 PM
TGraph 2.0 de Alfredo Arteaga
Posted: Thu Jul 05, 2007 01:32 AM

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

Posts: 326
Joined: Sun Oct 09, 2005 05:22 PM
TGraph 2.0 de Alfredo Arteaga
Posted: Thu Jul 05, 2007 06:39 AM

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.

Posts: 729
Joined: Tue Oct 18, 2005 06:49 PM
TGraph 2.0 de Alfredo Arteaga
Posted: Thu Jul 05, 2007 03:54 PM

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

Posts: 44158
Joined: Thu Oct 06, 2005 05:47 PM
TGraph 2.0 de Alfredo Arteaga
Posted: Thu Jul 05, 2007 04:51 PM

George,

La solución ante la duda de que se pueda estar usando una función DibWrite() distinta a la de FWH es renombrar la de FWH por FWDibWrite(), por ejemplo.

El código fuente de DibWrite() está en source/winapi/dib.c

regards, saludos

Antonio Linares
www.fivetechsoft.com
Posts: 845
Joined: Sun Oct 09, 2005 05:36 PM
TGraph 2.0 de Alfredo Arteaga
Posted: Thu Jul 05, 2007 05:44 PM

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

____________________

Paco
Posts: 729
Joined: Tue Oct 18, 2005 06:49 PM
TGraph 2.0 de Alfredo Arteaga
Posted: Sun Jul 15, 2007 05:51 PM
Continuando con el problema......

He renombrado la funcion "dibwrite" en "dib.c", pero ahora este fichero no compila. Recibo los siguientes errores.

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


Parece el que el fichero "clipapi.h" no es compatible con xHarbour Builder

Algun comentario al respecto?

Saludos,

George