RMChart
Moderador: Moderadores
RMChart
Quintas,
Não funcionou, porque deu um monte de erro:
Qual é o ch que traduz esse declare?
Não funcionou, porque deu um monte de erro:
Qual é o ch que traduz esse declare?
►Harbour 3.x | Minigui xx-x | HwGui◄
Pense nas possibilidades abstraia as dificuldades.
Não corrigir nossas falhas é o mesmo que cometer novos erros.
A imaginação é mais importante que o conhecimento. (Albert Einstein)
Pense nas possibilidades abstraia as dificuldades.
Não corrigir nossas falhas é o mesmo que cometer novos erros.
A imaginação é mais importante que o conhecimento. (Albert Einstein)
RMChart
Assim Quintas usando a dll o problema da tela fica resolvido, só resta resolver o problema da RMC_ADDBARSERIES
►Harbour 3.x | Minigui xx-x | HwGui◄
Pense nas possibilidades abstraia as dificuldades.
Não corrigir nossas falhas é o mesmo que cometer novos erros.
A imaginação é mais importante que o conhecimento. (Albert Einstein)
Pense nas possibilidades abstraia as dificuldades.
Não corrigir nossas falhas é o mesmo que cometer novos erros.
A imaginação é mais importante que o conhecimento. (Albert Einstein)
RMChart
Quintas,
Você matou a charada, valor por referência.
@aDadosGraf[1]
Só falta acertar os valores
Você matou a charada, valor por referência.
@aDadosGraf[1]
Só falta acertar os valores
Código: Selecionar todos
FOR x:=1 TO LEN(aDadosGraf)
nRetVal := hb_dynCall( {"RMC_ADDBARSERIES", nHandleDLL, HB_DYN_CALLCONV_STDCALL },;
ID_CHART, 1, @aDadosGraf[1], 12, RMC_BARGROUP, RMC_BAR_FLAT_GRADIENT2, .F., 0, .F., 1, RMC_VLABEL_ABSOLUTE, x, RMC_HATCHBRUSH_OFF )
NEXT
►Harbour 3.x | Minigui xx-x | HwGui◄
Pense nas possibilidades abstraia as dificuldades.
Não corrigir nossas falhas é o mesmo que cometer novos erros.
A imaginação é mais importante que o conhecimento. (Albert Einstein)
Pense nas possibilidades abstraia as dificuldades.
Não corrigir nossas falhas é o mesmo que cometer novos erros.
A imaginação é mais importante que o conhecimento. (Albert Einstein)
RMChart
RmChart usando somente a dll sem sData
►Harbour 3.x | Minigui xx-x | HwGui◄
Pense nas possibilidades abstraia as dificuldades.
Não corrigir nossas falhas é o mesmo que cometer novos erros.
A imaginação é mais importante que o conhecimento. (Albert Einstein)
Pense nas possibilidades abstraia as dificuldades.
Não corrigir nossas falhas é o mesmo que cometer novos erros.
A imaginação é mais importante que o conhecimento. (Albert Einstein)
- JoséQuintas
- Administrador

- Mensagens: 20267
- Registrado em: 26 Fev 2007 11:59
- Localização: São Paulo-SP
RMChart
Aquela declaração que mostrei é do Visual Basic 6.
Tá numa das primeiras mensagens sobre a DLL.
Então talvez compense fazer uma classe só para o RMChart naquele estilo que mostrei.
Já evita problemas futuros.
Pode ter a mesma funcionalidade do controle, é só criar a classe igual.
Ou melhor ainda, criar um controle que use a DLL do RMChart !!!.
Tá numa das primeiras mensagens sobre a DLL.
Então talvez compense fazer uma classe só para o RMChart naquele estilo que mostrei.
Já evita problemas futuros.
Pode ter a mesma funcionalidade do controle, é só criar a classe igual.
Ou melhor ainda, criar um controle que use a DLL do RMChart !!!.
José M. C. Quintas
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"
https://github.com/JoseQuintas/
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"
https://github.com/JoseQuintas/
RMChart
Taí o código para quem quiser testar.
Eu só não consegui montar o exemplo das barras mostrando os dados nos 12 meses, quem descobrir, ganha os aplausos.
Eu só não consegui montar o exemplo das barras mostrando os dados nos 12 meses, quem descobrir, ganha os aplausos.
Código: Selecionar todos
STATIC FUNCTION RmChart
nHandleDLL:=hb_LibLoad("rmchart.dll")
oCrt := WvgCrt():New( , , { -1, -1 }, { 25, 85 }, , .T. )
oCrt:lModal := .T.
oCrt:icon := "demo.ico"
oCrt:create()
oCrt:resizable := .F.
HB_gtInfo(HB_GTI_WINTITLE, "Grafico com RmChart - Dll")
cLegenda := "Entradas*Saidas*Mais Um"
cLabels := "Janeiro*Fevereiro*Março*Abril*Maio*Junho*Julho*Agosto*Setembro*Outubro*Novembro*Dezembro"
cTitulo := "Gráfico de Teste"
aDados := { { 225.25, 100.00, 100.00, 150.00, 250.00, 300.00, 25.00, 75.00, 300.00, 200.00, 325.00, 300.00 } , { 220.00, 100.00, 125.00, 300.00, 150.00, 125.00, 85.00, 50.00, 285.00, 275.00, 295.00, 280.00 }, { 125.25, 100.00, 100.00, 150.00, 250.00, 300.00, 25.00, 75.00, 300.00, 200.00, 325.00, 300.00 } }
aDadosGraf:={}
cImagem := ""
cUnidade := "R$ "
cTextoVert := ""
nMax := 0
DECLARE oData1[12]
DECLARE oData2[12]
DECLARE oData3[12]
FOR cTrGra1:=1 TO LEN( aDados )
nMax := MAX( nMax, aMax( aDados[cTrGra1] ) )
FOR cTrGra2:=1 TO LEN( aDados[cTrGra1] )
IF cTrGra1 == 1
oData1[cTrGra2] := aDados[cTrGra1, cTrGra2]
ELSEIF cTrGra1 == 2
oData2[cTrGra2] := aDados[cTrGra1, cTrGra2]
ELSEIF cTrGra1 == 3
oData3[cTrGra2] := aDados[cTrGra1, cTrGra2]
ENDIF
NEXT
IF cTrGra1 == 1
AADD( aDadosGraf, oData1[1] )
ELSEIF cTrGra1 == 2
AADD( aDadosGraf, oData2[1] )
ELSEIF cTrGra1 == 3
AADD( aDadosGraf, oData3[1] )
ENDIF
NEXT
nMax := ROUND( ( INT( nMax/10 ) * 10 ) + 10 , 2 )
nRetVal := hb_dynCall( { "RMC_CREATECHART", nHandleDLL, HB_DYN_CALLCONV_STDCALL },;
hb_gtInfo( HB_GTI_WINHANDLE ), ID_CHART, 0, 0, 770, 400, Azure, RMC_CTRLSTYLE3DLIGHT, .F., cImagem, "", 0, 0 )
nRetVal := hb_dynCall( {"RMC_ADDREGION", nHandleDLL, HB_DYN_CALLCONV_STDCALL },;
ID_CHART, 0, 0, 760, 400, "RmChart", .F. )
nRetVal := hb_dynCall( {"RMC_ADDCAPTION", nHandleDLL, HB_DYN_CALLCONV_STDCALL },;
ID_CHART, 1, cTitulo, Transparent, Red, 9, .T. )
nRetVal := hb_dynCall( {"RMC_ADDGRID", nHandleDLL, HB_DYN_CALLCONV_STDCALL },;
ID_CHART, 1, LightBlue, .F., 20, 20, 685, 330, RMC_BICOLOR_LABELAXIS )
nRetVal := hb_dynCall( {"RMC_ADDLABELAXIS", nHandleDLL, HB_DYN_CALLCONV_STDCALL },;
ID_CHART, 1, cLabels, 1, Len( aDados[1] ), RMC_LABELAXISBOTTOM, 8, Black, RMC_TEXTCENTER, Black, RMC_LINESTYLENONE, "" )
//Len( aDados[1] )
nRetVal := hb_dynCall( {"RMC_ADDDATAAXIS", nHandleDLL, HB_DYN_CALLCONV_STDCALL },;
ID_CHART, 1, RMC_DATAAXISRIGHT, 0.0, nMax, Len( aDados[1] ), 8, Black, Black, RMC_LINESTYLESOLID, 0, cUnidade, cTextoVert, "", RMC_TEXTCENTER )
nRetVal := hb_dynCall( {"RMC_ADDLEGEND", nHandleDLL, HB_DYN_CALLCONV_STDCALL },;
ID_CHART, 1, cLegenda, RMC_LEGEND_BOTTOM, Transparent, RMC_LEGENDNORECT, Red, 8, .T. )
FOR x:=1 TO LEN(aDadosGraf)
cValue:=aDadosGraf[x]
nRetVal := hb_dynCall( {"RMC_ADDBARSERIES", nHandleDLL, HB_DYN_CALLCONV_STDCALL },;
ID_CHART, 1, @cValue, 12, RMC_BARGROUP , RMC_BAR_FLAT_GRADIENT2, .F., 0, .F., 1, RMC_VLABEL_NONE, X, RMC_HATCHBRUSH_ONPRINTING )
NEXT
nRetVal:=hb_dynCall( { "RMC_DRAW", nHandleDLL, HB_DYN_CALLCONV_STDCALL },;
ID_CHART)
Inkey(0)
oCrt:destroy()
hb_LibFree(nHandleDLL)
RETURN Nil
►Harbour 3.x | Minigui xx-x | HwGui◄
Pense nas possibilidades abstraia as dificuldades.
Não corrigir nossas falhas é o mesmo que cometer novos erros.
A imaginação é mais importante que o conhecimento. (Albert Einstein)
Pense nas possibilidades abstraia as dificuldades.
Não corrigir nossas falhas é o mesmo que cometer novos erros.
A imaginação é mais importante que o conhecimento. (Albert Einstein)
- JoséQuintas
- Administrador

- Mensagens: 20267
- Registrado em: 26 Fev 2007 11:59
- Localização: São Paulo-SP
RMChart
Acho que falta sua última correção pra funcionar.
Código: Selecionar todos
CREATE CLASS RmChart
VAR nHandle
METHOD CreateChart( ... ) INLINE hb_DynCall( { "RMC_CREATECHART", ::nHandle, HB_DYN_CALLCONV_STDCALL }, ... )
METHOD AddRegion( ... ) INLINE hb_DynCall( { "RMC_ADDREGION", ::nHandle, HB_DYN_CALLCONV_STDCALL }, ... )
METHOD AddCaption( ... ) INLINE hb_DynCall( { "RMC_ADDCAPTION", ::nHandle, HB_DYN_CALLCONV_STDCALL }, ... )
METHOD AddGrid( ... ) INLINE hb_DynCall( { "RMC_ADDGRID", ::nHandle, HB_DYN_CALLCONV_STDCALL }, ... )
METHOD AddLabelAxis( ... ) INLINE hb_DynCall( { "RMC_ADDLABELAXIS", ::nHandle, HB_DYN_CALLCONV_STDCALL }, ... )
METHOD AddDataAxis( ... ) INLINE hb_DynCall( { "RMC_ADDDATAAXIS", ::nHandle, HB_DYN_CALLCONV_STDCALL }, ... )
METHOD AddLegend( ... ) INLINE hb_DynCall( { "RMC_ADDLEGEND", ::nHandle, HB_DYN_CALLCONV_STDCALL }, ... )
METHOD AddBarSeries( ... ) INLINE hb_DynCall( { "RMC_ADDBARSERIES", ::nHandle, HB_DYN_CALLCONV_STDCALL }, ... )
METHOD Draw( ... ) INLINE hb_DynCall( { "RMC_DRAW", ::nHandle, hb_BIToR( HB_DYN_CTYPE_LONG, HB_DYN_CALLCONV_STDCALL ) }, ... )
METHOD New()
METHOD Destroy()
ENDCLASS
METHOD New()
::nHandle := hb_LibLoad( "RMChart.dll" )
RETURN SELF
METHOD Destroy()
hb_LibFree( ::nHandle )
RETURN NIL
José M. C. Quintas
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"
https://github.com/JoseQuintas/
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"
https://github.com/JoseQuintas/
- JoséQuintas
- Administrador

- Mensagens: 20267
- Registrado em: 26 Fev 2007 11:59
- Localização: São Paulo-SP
RMChart
Simplificando um pouco o fonte:
Código: Selecionar todos
CREATE CLASS RmChart
VAR nHandle
METHOD CreateChart( ... ) INLINE ::CallDllStd( "RMC_CREATECHART", ... )
METHOD AddRegion( ... ) INLINE ::CallDllStd( "RMC_ADDREGION", ... )
METHOD AddCaption( ... ) INLINE ::CallDllStd( "RMC_ADDCAPTION", ... )
METHOD AddGrid( ... ) INLINE ::CallDllStd( "RMC_ADDGRID", ... )
METHOD AddLabelAxis( ... ) INLINE ::CallDllStd( "RMC_ADDLABELAXIS", ... )
METHOD AddDataAxis( ... ) INLINE ::CallDllStd( "RMC_ADDDATAAXIS", ... )
METHOD AddLegend( ... ) INLINE ::CallDllStd( "RMC_ADDLEGEND", ... )
METHOD AddBarSeries( ... ) INLINE ::CallDllStd( "RMC_ADDBARSERIES", ... )
METHOD Draw( ... ) INLINE ::CallDllOut( "RMC_DRAW", ... )
METHOD New() INLINE ::nHandle := hb_LibLoad( "RMChart.dll" ), SELF
METHOD Destroy() INLINE hb_LibFree( ::nHandle )
METHOD CallDllStd( cName, ... ) INLINE hb_DynCall( { cName, ::nHandle, HB_DYN_CALLCONV_STDCALL }, ... )
METHOD CallDllOut( cName, ... ) INLINE hb_DynCall( { cName, ::nHandle, hb_BitOr( HB_DYN_CTYPE_LONG, HB_DYN_CALLCONV_STDCALL ) }, ... )
ENDCLASS
José M. C. Quintas
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"
https://github.com/JoseQuintas/
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"
https://github.com/JoseQuintas/
- JoséQuintas
- Administrador

- Mensagens: 20267
- Registrado em: 26 Fev 2007 11:59
- Localização: São Paulo-SP
RMChart
erro com o último fonte.
- Anexos
-
- erro.png (2.91 KiB) Exibido 9808 vezes
José M. C. Quintas
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"
https://github.com/JoseQuintas/
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"
https://github.com/JoseQuintas/
RMChart
Agora usando a classe do J Quintas
#define ID_CHART 1001
#define RMC_DEFAULT 0
#define RMC_PORTRAIT 1
#define RMC_LANDSCAPE 2
#define ID_CHART 1001
#define RMC_DEFAULT 0
#define RMC_PORTRAIT 1
#define RMC_LANDSCAPE 2
Código: Selecionar todos
FUNCTION Grafico
oChart:=RmChart():New()
oCrt := WvgCrt():New( , , { -1, -1 }, { 25, 85 }, , .T. )
oCrt:lModal := .T.
oCrt:icon := "demo.ico"
oCrt:create()
oCrt:resizable := .F.
HB_gtInfo(HB_GTI_WINTITLE, "Grafico com RmChart - Dll")
cLegenda := "Entradas*Saidas*Mais Um"
cLabels := "Janeiro*Fevereiro*Março*Abril*Maio*Junho*Julho*Agosto*Setembro*Outubro*Novembro*Dezembro"
cTitulo := "Gráfico de Teste"
aDados := { { 225.25, 100.00, 100.00, 150.00, 250.00, 300.00, 25.00, 75.00, 300.00, 200.00, 325.00, 300.00 },;
{ 220.00, 100.00, 125.00, 300.00, 150.00, 125.00, 85.00, 50.00, 285.00, 275.00, 295.00, 280.00 },;
{ 125.25, 100.00, 100.00, 150.00, 250.00, 300.00, 25.00, 75.00, 300.00, 200.00, 325.00, 300.00 } }
aDadosGraf:={}
cImagem := ""
cUnidade := "R$ "
cTextoVert := ""
nMax := 0
DECLARE oData1[12]
DECLARE oData2[12]
DECLARE oData3[12]
FOR cTrGra1:=1 TO LEN( aDados )
nMax := MAX( nMax, aMax( aDados[cTrGra1] ) )
FOR cTrGra2:=1 TO LEN( aDados[cTrGra1] )
IF cTrGra1 == 1
oData1[cTrGra2] := aDados[cTrGra1, cTrGra2]
ELSEIF cTrGra1 == 2
oData2[cTrGra2] := aDados[cTrGra1, cTrGra2]
ELSEIF cTrGra1 == 3
oData3[cTrGra2] := aDados[cTrGra1, cTrGra2]
ENDIF
NEXT
IF cTrGra1 == 1
AADD( aDadosGraf, oData1[1] )
ELSEIF cTrGra1 == 2
AADD( aDadosGraf, oData2[1] )
ELSEIF cTrGra1 == 3
AADD( aDadosGraf, oData3[1] )
ENDIF
NEXT
nMax := ROUND( ( INT( nMax/10 ) * 10 ) + 10 , 2 )
oChart:CreateChart(hb_gtInfo( HB_GTI_WINHANDLE ), ID_CHART, 0, 0, 770, 400, Azure, RMC_CTRLSTYLE3DLIGHT, .F., cImagem, "", 0, 0 )
oChart:AddRegion(ID_CHART, 0, 0, 760, 400, "RmChart", .F. )
oChart:AddCaption(ID_CHART, 1, cTitulo, Transparent, Red, 9, .T. )
oChart:AddGrid(ID_CHART, 1, LightBlue, .F., 20, 20, 685, 330, RMC_BICOLOR_LABELAXIS )
oChart:AddLabelAxis(ID_CHART, 1, cLabels, 1, Len( aDados[1] ), RMC_LABELAXISBOTTOM, 8, Black, RMC_TEXTCENTER, Black, RMC_LINESTYLENONE, "" )
oChart:AddDataAxis(ID_CHART, 1, RMC_DATAAXISRIGHT, 0.0, nMax, Len( aDados[1] ), 8, Black, Black, RMC_LINESTYLESOLID, 0, cUnidade, cTextoVert, "", RMC_TEXTCENTER )
oChart:AddLegend(ID_CHART, 1, cLegenda, RMC_LEGEND_BOTTOM, Transparent, RMC_LEGENDNORECT, Red, 8, .T. )
FOR x:=1 TO LEN(aDadosGraf)
cValue:= aDadosGraf[x]
oChart:AddBarSeries(ID_CHART, 1, @cValue, 12, RMC_BARGROUP , RMC_BAR_FLAT_GRADIENT2, .F., 0, .F., 1, RMC_VLABEL_NONE, X, RMC_HATCHBRUSH_ONPRINTING )
NEXT
oChart:Draw(ID_CHART)
Inkey(0)
oCrt:destroy()
oChart:Destroy()
RETURN Nil
►Harbour 3.x | Minigui xx-x | HwGui◄
Pense nas possibilidades abstraia as dificuldades.
Não corrigir nossas falhas é o mesmo que cometer novos erros.
A imaginação é mais importante que o conhecimento. (Albert Einstein)
Pense nas possibilidades abstraia as dificuldades.
Não corrigir nossas falhas é o mesmo que cometer novos erros.
A imaginação é mais importante que o conhecimento. (Albert Einstein)
- JoséQuintas
- Administrador

- Mensagens: 20267
- Registrado em: 26 Fev 2007 11:59
- Localização: São Paulo-SP
RMChart
Conclusão inicial:
O trem é doido, e seu fonte mais ainda.... rs
O trem é doido, e seu fonte mais ainda.... rs
José M. C. Quintas
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"
https://github.com/JoseQuintas/
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"
https://github.com/JoseQuintas/
- JoséQuintas
- Administrador

- Mensagens: 20267
- Registrado em: 26 Fev 2007 11:59
- Localização: São Paulo-SP
RMChart
Primeiro ponto, acho que vai ser problema:
No código acima (VB) é criado um array, e passado o primeiro elemento do array.
Segundo, seu fonte, que funcionou, reduzido, pra não perdermos.
O resultado é o mesmo, mas eliminada uma complicação anterior.
Ainda não usando a classe, porque primeiro precisava funcionar... rs
Código: Selecionar todos
ReDim aData(4)
aData(0) = 30#: aData(1) = 20#: aData(2) = 40#: aData(3) = 60#: aData(4) = 10#
nRetVal = RMC_AddBarSeries(ID_RMC1, 1, aData(0), 5, RMC_BARGROUP, RMC_BAR_HOVER, False, Gold, False, 1, RMC_VLABEL_NONE, 1, RMC_HATCHBRUSH_OFF)
Segundo, seu fonte, que funcionou, reduzido, pra não perdermos.
O resultado é o mesmo, mas eliminada uma complicação anterior.
Ainda não usando a classe, porque primeiro precisava funcionar... rs
Código: Selecionar todos
#include "hbclass.ch"
#include "rmchart.ch"
#include "hbgtinfo.ch"
#include "hbdyn.ch"
FUNCTION Main
LOCAL nHandleDll, oCrt, cLegenda, cLabels, cTitulo, aDados, cImagem, cUnidade, cTextoVert, nMax, id_Chart, ctrgra1
LOCAL oMeses, oCompara, oElemento
nHandleDLL := hb_libLoad( "rmchart.dll" )
oCrt := WvgCrt():New( , , { -1, -1 }, { 25, 85 }, , .T. )
oCrt:lModal := .T.
oCrt:icon := "demo.ico"
oCrt:create()
oCrt:resizable := .F.
hb_gtInfo( HB_GTI_WINTITLE, "Grafico com RmChart - Dll" )
cLegenda := "Entradas*Saidas*Mais Um"
cLabels := "Janeiro*Fevereiro*Março*Abril*Maio*Junho*Julho*Agosto*Setembro*Outubro*Novembro*Dezembro"
cTitulo := "Gráfico de Teste"
aDados := { { 225.25, 100.00, 100.00, 150.00, 250.00, 300.00, 25.00, 75.00, 300.00, 200.00, 325.00, 300.00 }, { 220.00, 100.00, 125.00, 300.00, 150.00, 125.00, 85.00, 50.00, 285.00, 275.00, 295.00, 280.00 }, { 125.25, 100.00, 100.00, 150.00, 250.00, 300.00, 25.00, 75.00, 300.00, 200.00, 325.00, 300.00 } }
aDadosGraf := {}
cImagem := ""
cUnidade := "R$ "
cTextoVert := ""
nMax := 0
id_Chart := 1
FOR cTrGra1 := 1 TO Len( aDados )
nMax := Max( nMax, aMax( aDados[ cTrGra1 ] ) )
NEXT
nMax := Round( ( Int( nMax / 10 ) * 10 ) + 10, 2 )
nRetVal := hb_DynCall( { "RMC_CREATECHART", nHandleDLL, HB_DYN_CALLCONV_STDCALL }, ;
hb_gtInfo( HB_GTI_WINHANDLE ), ID_CHART, 0, 0, 770, 400, Azure, RMC_CTRLSTYLE3DLIGHT, .F., cImagem, "", 0, 0 )
nRetVal := hb_DynCall( { "RMC_ADDREGION", nHandleDLL, HB_DYN_CALLCONV_STDCALL }, ;
ID_CHART, 0, 0, 760, 400, "RmChart", .F. )
nRetVal := hb_DynCall( { "RMC_ADDCAPTION", nHandleDLL, HB_DYN_CALLCONV_STDCALL }, ;
ID_CHART, 1, cTitulo, Transparent, Red, 9, .T. )
nRetVal := hb_DynCall( { "RMC_ADDGRID", nHandleDLL, HB_DYN_CALLCONV_STDCALL }, ;
ID_CHART, 1, LightBlue, .F., 20, 20, 685, 330, RMC_BICOLOR_LABELAXIS )
nRetVal := hb_DynCall( { "RMC_ADDLABELAXIS", nHandleDLL, HB_DYN_CALLCONV_STDCALL }, ;
ID_CHART, 1, cLabels, 1, Len( aDados[ 1 ] ), RMC_LABELAXISBOTTOM, 8, Black, RMC_TEXTCENTER, Black, RMC_LINESTYLENONE, "" )
// Len( aDados[1] )
nRetVal := hb_DynCall( { "RMC_ADDDATAAXIS", nHandleDLL, HB_DYN_CALLCONV_STDCALL }, ;
ID_CHART, 1, RMC_DATAAXISRIGHT, 0.0, nMax, Len( aDados[ 1 ] ), 8, Black, Black, RMC_LINESTYLESOLID, 0, cUnidade, cTextoVert, "", RMC_TEXTCENTER )
nRetVal := hb_DynCall( { "RMC_ADDLEGEND", nHandleDLL, HB_DYN_CALLCONV_STDCALL }, ;
ID_CHART, 1, cLegenda, RMC_LEGEND_BOTTOM, Transparent, RMC_LEGENDNORECT, Red, 8, .T. )
FOR EACH oElemento IN aDados
nRetVal := hb_DynCall( { "RMC_ADDBARSERIES", nHandleDLL, HB_DYN_CALLCONV_STDCALL }, ;
ID_CHART, 1, @oElemento[ 1 ], 12, RMC_BARGROUP, RMC_BAR_FLAT_GRADIENT2, .F., 0, .F., 1, RMC_VLABEL_NONE, 12, RMC_HATCHBRUSH_ONPRINTING )
NEXT
nRetVal := hb_DynCall( { "RMC_DRAW", nHandleDLL, HB_DYN_CALLCONV_STDCALL }, ;
ID_CHART )
Inkey( 0 )
oCrt:destroy()
hb_libFree( nHandleDLL )
RETURN NIL
CREATE CLASS RmChart
METHOD CreateChart( ... ) INLINE ::CallDllStd( "RMC_CREATECHART", ... )
METHOD AddRegion( ... ) INLINE ::CallDllStd( "RMC_ADDREGION", ... )
METHOD AddCaption( ... ) INLINE ::CallDllStd( "RMC_ADDCAPTION", ... )
METHOD AddGrid( ... ) INLINE ::CallDllStd( "RMC_ADDGRID", ... )
METHOD AddLabelAxis( ... ) INLINE ::CallDllStd( "RMC_ADDLABELAXIS", ... )
METHOD AddDataAxis( ... ) INLINE ::CallDllStd( "RMC_ADDDATAAXIS", ... )
METHOD AddLegend( ... ) INLINE ::CallDllStd( "RMC_ADDLEGEND", ... )
METHOD AddBarSeries( ... ) INLINE ::CallDllStd( "RMC_ADDBARSERIES", ... )
METHOD Draw( ... ) INLINE ::CallDllOut( "RMC_DRAW", ... )
METHOD CallDllStd( cName, ... ) INLINE hb_DynCall( { cName, "RMChart.dll", HB_DYN_CALLCONV_STDCALL }, ... )
METHOD CallDllOut( cName, ... ) INLINE hb_DynCall( { cName, "RMChart.dll", hb_bitOr( HB_DYN_CTYPE_LONG, HB_DYN_CALLCONV_STDCALL ) }, ... )
ENDCLASS
FUNCTION AMax( x )
LOCAL nVal, oElement
nVal := x[ 1 ]
FOR EACH oElement IN x
IF oElement > nVal
nVal := oElement
ENDIF
NEXT
RETURN nVal
José M. C. Quintas
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"
https://github.com/JoseQuintas/
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"
https://github.com/JoseQuintas/
- JoséQuintas
- Administrador

- Mensagens: 20267
- Registrado em: 26 Fev 2007 11:59
- Localização: São Paulo-SP
RMChart
Ainda funcionando, mas só primeira coluna.
Código: Selecionar todos
#include "hbclass.ch"
#include "rmchart.ch"
#include "hbgtinfo.ch"
#include "hbdyn.ch"
FUNCTION Main
LOCAL oCrt, cLegenda, cLabels, cTitulo, aDados, cImagem, cUnidade, cTextoVert, nMax, id_Chart, ctrgra1
LOCAL oMeses, oCompara, oElemento, oGrafico := RMChart():New()
oCrt := WvgCrt():New( , , { -1, -1 }, { 25, 85 }, , .T. )
oCrt:lModal := .T.
oCrt:icon := "demo.ico"
oCrt:create()
oCrt:resizable := .F.
hb_gtInfo( HB_GTI_WINTITLE, "Grafico com RmChart - Dll" )
cLegenda := "Entradas*Saidas*Mais Um"
cLabels := "Janeiro*Fevereiro*Março*Abril*Maio*Junho*Julho*Agosto*Setembro*Outubro*Novembro*Dezembro"
cTitulo := "Gráfico de Teste"
aDados := { { 225.25, 100.00, 100.00, 150.00, 250.00, 300.00, 25.00, 75.00, 300.00, 200.00, 325.00, 300.00 }, { 220.00, 100.00, 125.00, 300.00, 150.00, 125.00, 85.00, 50.00, 285.00, 275.00, 295.00, 280.00 }, { 125.25, 100.00, 100.00, 150.00, 250.00, 300.00, 25.00, 75.00, 300.00, 200.00, 325.00, 300.00 } }
aDadosGraf := {}
cImagem := ""
cUnidade := "R$ "
cTextoVert := ""
nMax := 0
id_Chart := 1
FOR cTrGra1 := 1 TO Len( aDados )
nMax := Max( nMax, aMax( aDados[ cTrGra1 ] ) )
NEXT
nMax := Round( ( Int( nMax / 10 ) * 10 ) + 10, 2 )
oGrafico:CreateChart( hb_gtInfo( HB_GTI_WINHANDLE ), ID_CHART, 0, 0, 770, 400, Azure, RMC_CTRLSTYLE3DLIGHT, .F., cImagem, "", 0, 0 )
oGrafico:AddRegion( ID_CHART, 0, 0, 760, 400, "RmChart", .F. )
oGrafico:AddCaption( ID_CHART, 1, cTitulo, Transparent, Red, 9, .T. )
oGrafico:AddGrid( ID_CHART, 1, LightBlue, .F., 20, 20, 685, 330, RMC_BICOLOR_LABELAXIS )
oGrafico:AddLabelAxis( ID_CHART, 1, cLabels, 1, Len( aDados[ 1 ] ), RMC_LABELAXISBOTTOM, 8, Black, RMC_TEXTCENTER, Black, RMC_LINESTYLENONE, "" )
oGrafico:AddDataAxis( ID_CHART, 1, RMC_DATAAXISRIGHT, 0.0, nMax, Len( aDados[ 1 ] ), 8, Black, Black, RMC_LINESTYLESOLID, 0, cUnidade, cTextoVert, "", RMC_TEXTCENTER )
oGrafico:AddLegend( ID_CHART, 1, cLegenda, RMC_LEGEND_BOTTOM, Transparent, RMC_LEGENDNORECT, Red, 8, .T. )
FOR EACH oElemento IN aDados
oGrafico:AddBarSeries( ID_CHART, 1, @oElemento[ 1 ], 12, RMC_BARGROUP, RMC_BAR_FLAT_GRADIENT2, .F., 0, .F., 1, RMC_VLABEL_NONE, 12, RMC_HATCHBRUSH_ONPRINTING )
NEXT
oGrafico:Draw( ID_CHART )
Inkey( 0 )
oCrt:destroy()
oGrafico:Destroy()
RETURN NIL
CREATE CLASS RmChart
VAR nHandle
METHOD New() INLINE ::nHandle := hb_LibLoad( "RMChart.dll" ), SELF
METHOD Destroy() INLINE hb_LibFree( ::nHandle )
METHOD CreateChart( ... ) INLINE ::CallDllStd( "RMC_CREATECHART", ... )
METHOD AddRegion( ... ) INLINE ::CallDllStd( "RMC_ADDREGION", ... )
METHOD AddCaption( ... ) INLINE ::CallDllStd( "RMC_ADDCAPTION", ... )
METHOD AddGrid( ... ) INLINE ::CallDllStd( "RMC_ADDGRID", ... )
METHOD AddLabelAxis( ... ) INLINE ::CallDllStd( "RMC_ADDLABELAXIS", ... )
METHOD AddDataAxis( ... ) INLINE ::CallDllStd( "RMC_ADDDATAAXIS", ... )
METHOD AddLegend( ... ) INLINE ::CallDllStd( "RMC_ADDLEGEND", ... )
METHOD AddBarSeries( ... ) INLINE ::CallDllStd( "RMC_ADDBARSERIES", ... )
METHOD Draw( ... ) INLINE ::CallDllStd( "RMC_DRAW", ... )
METHOD CallDllStd( cName, ... ) INLINE hb_DynCall( { cName, ::nHandle, HB_DYN_CALLCONV_STDCALL }, ... )
ENDCLASS
FUNCTION AMax( x )
LOCAL nVal, oElement
nVal := x[ 1 ]
FOR EACH oElement IN x
IF oElement > nVal
nVal := oElement
ENDIF
NEXT
RETURN nVal
José M. C. Quintas
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"
https://github.com/JoseQuintas/
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"
https://github.com/JoseQuintas/
RMChart
Quintas,
Esse código eu peguei do fórum do fivewin e adaptei para o harbour
http://fivetechsupport.com/forums/viewt ... =6&t=25908
Eu já estava jogando a toalha quando vi o byRef :
Optional ByRef nFirstDataValue (DOUBLE)
Foi então que funcionou.
Esse código eu peguei do fórum do fivewin e adaptei para o harbour
http://fivetechsupport.com/forums/viewt ... =6&t=25908
Eu já estava jogando a toalha quando vi o byRef :
Optional ByRef nFirstDataValue (DOUBLE)
Foi então que funcionou.
►Harbour 3.x | Minigui xx-x | HwGui◄
Pense nas possibilidades abstraia as dificuldades.
Não corrigir nossas falhas é o mesmo que cometer novos erros.
A imaginação é mais importante que o conhecimento. (Albert Einstein)
Pense nas possibilidades abstraia as dificuldades.
Não corrigir nossas falhas é o mesmo que cometer novos erros.
A imaginação é mais importante que o conhecimento. (Albert Einstein)
RMChart
Quintas,
Você chegou no ponto que eu estou agora, só mostra os dados de janeiro, como mostrar os 12 meses é esse o dilema.
Você chegou no ponto que eu estou agora, só mostra os dados de janeiro, como mostrar os 12 meses é esse o dilema.
►Harbour 3.x | Minigui xx-x | HwGui◄
Pense nas possibilidades abstraia as dificuldades.
Não corrigir nossas falhas é o mesmo que cometer novos erros.
A imaginação é mais importante que o conhecimento. (Albert Einstein)
Pense nas possibilidades abstraia as dificuldades.
Não corrigir nossas falhas é o mesmo que cometer novos erros.
A imaginação é mais importante que o conhecimento. (Albert Einstein)
