O único problema que eu não consegui resolver foi no AddBarSeries se colocar RMC_ADDBARSERIES dá erro, se colocar RMC_AddBarSeries não dá erro mas também não mostra as barras.
Notem que todas as funções estão em caixa alta, porque é assim que está assinado na dll, mas se colocar RMC_ADDBARSERIES com caixa alta vem o erro,
Código: Selecionar todos
FUNCTION RmChart
nHandleDLL:=hb_LibLoad("rmchart.dll")
oCrt := WvgCrt():New( , , { -1, -1 }, { 50, MaxCol() - 6 }, , .T. )
oCrt:lModal := .T.
oCrt:icon := "demo.ico"
oCrt:create()
oCrt:resizable := .F.
cLegenda := "Entradas*Saidas*Mais Um"
cLabels := "Janeiro*Fevereiro*Março*Abril*Maio*Junho*Julho*Agosto*Setembro*Outubro*Novembro*Dezembro"
cTitulo := "Grafico 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 } }
aDadosGraf:={}
cImagem := "" //"Paper.jpg"
cUnidade := "R$ "
cTextoVert := ""
nMax := 0
FOR cTrGra1:=1 TO LEN( aDados )
nMax := MAX( nMax, aMax( aDados[cTrGra1] ) )
FOR cTrGra2:=1 TO LEN( aDados[cTrGra1] )
IF cTrGra1 == 1
AADD( aDadosGraf, aDados[cTrGra1, cTrGra2] )
oData1 := aDados[cTrGra1,cTrGra2]
ELSEIF cTrGra1 == 2
oData2 := aDados[cTrGra1,cTrGra2]
ELSEIF cTrGra1 == 3
oData3 := aDados[cTrGra1,cTrGra2]
ENDIF
NEXT
NEXT
nMax := ROUND( ( INT( nMax/10 ) * 10 ) + 10 , 2 )
altd()
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, "" )
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. )
//nResult (LONG) = RMC_AddBarSeries(
//ByVal nCtrlId (LONG),
//ByVal nRegion (LONG),
//Optional ByRef nFirstDataValue (DOUBLE),
//Optional ByVal nDataValuesCount (LONG),
//Optional ByVal nType (LONG),
//Optional ByVal nStyle (LONG),
//Optional ByVal nIsLucent (LONG),
//Optional Byval nColor (LONG),
//Optional ByVal nIsHorizontal (LONG),
//Optional ByVal nWhichDataAxis (LONG),
//Optional ByVal nValueLabelOn (LONG),
//Optional ByVal nPointsPerColumn (LONG),
//Optional ByVal nHatchMode (LONG)
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
nRetVal:=hb_dynCall( { "RMC_DRAW", nHandleDLL, hb_bitOr( HB_DYN_CTYPE_LONG , HB_DYN_CALLCONV_STDCALL ) },;
ID_CHART)
Inkey(0)
oCrt:destroy()
hb_LibFree(nHandleDLL)
RETURN Nil