TGraph 2.0 de Alfredo Arteaga

TGraph 2.0 de Alfredo Arteaga

Postby cuatecatl82 » Sat Jun 30, 2007 3: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]
User avatar
cuatecatl82
 
Posts: 625
Joined: Wed Mar 14, 2007 6:49 pm
Location: San Cristobal de las Casas, Chiapas México

Postby Francisco Horta » Sun Jul 01, 2007 2:54 am

creo que ahi tienes que modificar la clase directamente, no he visto alguna variable para modificar eso,
salu2
paco
Francisco Horta
 
Posts: 845
Joined: Sun Oct 09, 2005 5:36 pm
Location: la laguna, mexico.

Postby Alfredo Arteaga » Mon Jul 02, 2007 3: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
User avatar
Alfredo Arteaga
 
Posts: 326
Joined: Sun Oct 09, 2005 5:22 pm
Location: Mexico

Postby George » Mon Jul 02, 2007 4:31 am

Alfredo,

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

Saludos,

George
George
 
Posts: 724
Joined: Tue Oct 18, 2005 6:49 pm

Probando nueva fuente..

Postby cuatecatl82 » Tue Jul 03, 2007 5: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
User avatar
cuatecatl82
 
Posts: 625
Joined: Wed Mar 14, 2007 6:49 pm
Location: San Cristobal de las Casas, Chiapas México

Se me olvidaba..

Postby cuatecatl82 » Tue Jul 03, 2007 5: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:
User avatar
cuatecatl82
 
Posts: 625
Joined: Wed Mar 14, 2007 6:49 pm
Location: San Cristobal de las Casas, Chiapas México

Postby sysctrl2 » Tue Jul 03, 2007 6:04 pm

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

saludos.
Cesar Cortes Cruz
SysCtrl Software
Mexico

' Sin +- FWH es mejor "
User avatar
sysctrl2
 
Posts: 960
Joined: Mon Feb 05, 2007 7:15 pm

Postby George » Tue Jul 03, 2007 6: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
George
 
Posts: 724
Joined: Tue Oct 18, 2005 6:49 pm

La Funcion de Guardar imagenes..

Postby cuatecatl82 » Wed Jul 04, 2007 5: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
User avatar
cuatecatl82
 
Posts: 625
Joined: Wed Mar 14, 2007 6:49 pm
Location: San Cristobal de las Casas, Chiapas México

Postby George » Thu Jul 05, 2007 1: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
George
 
Posts: 724
Joined: Tue Oct 18, 2005 6:49 pm

Postby Alfredo Arteaga » Thu Jul 05, 2007 6: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.
User avatar
Alfredo Arteaga
 
Posts: 326
Joined: Sun Oct 09, 2005 5:22 pm
Location: Mexico

Postby George » Thu Jul 05, 2007 3: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
George
 
Posts: 724
Joined: Tue Oct 18, 2005 6:49 pm

Postby Antonio Linares » Thu Jul 05, 2007 4: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
User avatar
Antonio Linares
Site Admin
 
Posts: 41366
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain

Postby Francisco Horta » Thu Jul 05, 2007 5: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
Francisco Horta
 
Posts: 845
Joined: Sun Oct 09, 2005 5:36 pm
Location: la laguna, mexico.

Postby George » Sun Jul 15, 2007 5:51 pm

Continuando con el problema......

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

Code: Select all  Expand view
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
George
 
Posts: 724
Joined: Tue Oct 18, 2005 6:49 pm

Next

Return to FiveWin para Harbour/xHarbour

Who is online

Users browsing this forum: No registered users and 56 guests