Hola Patricio.
Es bastante sencillo,
Hay 2 formas de implementar RMChart
1. Usando ActiveX y el fichero .ocx que viene con RMChart
2. Usando la librería RMChart.dll y usando las funciones de la misma y creando las gráficas con código.
Yo he elegido lo primero y es lo que te describo a continuación:
La ventaja que tiene usar el ocx es que puedes crear la gráfica usando el diseñador “RMCdesigner.exe”. Es mucho más rápido y fácil que crear las gráficas desde código. Una vez que la tienes diseñada creas un fichero de extensión *.rmc que tienes que distribuir con tu aplicación. Desde la aplicación llamas al fichero .rmc y puedes cambiar en tiempo de ejecución los valores, los títulos y si quieres, las etiquetas, los colores y prácticamente todo.
Para instalar el rmcdesigner baja el programa RMChart de Rainer Morgen (yo he encontrado la aversión 4.12 aquí
http://rmchart.findmysoft.com/La página original del programa ha desaparecido. Si alguien sabe la nueva dirección, o tiene una versión superior a la 4.12, por favor, que me lo diga.
Luego tienes que bajar el fichero “rmc4xhb.zip” de este foro.
De todo lo que viene, si usas la opción ocx sólo necesitas:
RMChartX.ch
Main.prg // ejemplo para usar la clase
TRmChart.prg // la clase original
RMChart.dll
RMChart.ocx
En tu proyecto necesitas añadir la clase TRmChart.prg
A tu cliente sólo le tienes que dar los ficheros *.rmc que hayas creado y además en el directorio de la aplicación tienes que crear una carpeta “RMChart” y meter allí os ficheros RMChart.dll y RMChart.ocx (también puedes meter allí los *.rmc). Si usas otra carpeta tienes que modificar la clase. (busca cOrigen := ".\RMChart\RMChart.dll")
En la clase he modificado esta línea
IF IsActiveX( "RMChart.RMChartX" ).and.file(GetSysDir() +"\RMChart.ocx").and.file(GetSysDir() + "\RMChart.dll")
Porque si se borran los ficheros Rmchart.ocx o rmchart.dll da un error, así se instalan de nuevo.
Y esta:
DEFAULT lAutoInstall := .t.
También conviene que compruebes que el fichero *.rmc existe antes de activar el control, ya si no da un error de Harbour.
Por último, si colocas la gráfica en un recurso, por algún motivo el tamaño lo pone mal, pero se corrige si haces:
oChart:oControl:nWidth := oChart:oControl:nWidth +1
oChart:oControl:nWidth := oChart:oControl:nWidth -1
después de activar el control
Yo he modificado la function ConfiguraChart() así
IF lAdjust
oChart:oControl:nWidth := oChart:oControl:nWidth +1
oChart:oControl:nWidth := oChart:oControl:nWidth -1
ENDIF
Y la llamo con lAdjust = .t.
No sé si habrá otra forma de solucionarlo.
Por último, imprimir una gráfica es
oChart:oControl:do("Draw2printer")
y crear un jpg es
oChart:oControl:do("Draw2file","prueba.jpg")
Un saludo,
Alvaro