Funciona que é uma beleza.
Exemplo básico de como chamar.
Podemos definir o tamanho da dialog ao carregar, etc...
Muito mais simples e versátil que outros exemplos e só precisa da dll da rmchart.
O exemplo abaixo usa o grafico de barras.
O Macete está em gerar a váriavel "sTemp" na sequência
Tem vários efeito 3D, flat, etc,etc e é claro etc...
Saudações
Itamar M. Lins Jr.
Código: Selecionar todos
************************
Function GraficoVendedor
************************
*
*
Local lOk:=.f., sTemp := ""
Private inicio := bom(date())
Private fim := eom(date())
PREPARE FONT oFont NAME "MS Sans Serif" WIDTH 0 HEIGHT -10
INIT DIALOG oDlg CLIPPER TITLE "Gráfico Por Vendedor" Font oFont AT 0,0 SIZE 300,180 STYLE DS_CENTER
@ 005,035 say 'Data Inicial:' size 100,20
@ 120,030 get oInicio Var inicio picture '@D' size 60,20
@ 005,065 say 'Data Final:' size 100,20
@ 120,060 get oFim Var Fim picture '@D' size 60,20
@ 200,020 Button oBt Caption 'Cancelar' Size 70,30 ON CLICK {||EndDialog()}
@ 200,070 Button oBt Caption 'Confirmar' Size 70,30 ON CLICK {||lOk:=.t.,EndDialog()}
Add status to oDlg parts 300
oDlg:Activate()
if cmonth(inicio) <> cmonth(fim)
MsgStop('Um Mes de Cada Vez !',2)
lOk := .f.
endif
if lOk
ano := str(year(inicio),4)
dAno := ano + iif(lLinux,'/','\')
nome_mes := substr(mes(month(inicio)),1,3)+'_'+ano+'.dbf'
if file(dDados+dAno+nome_mes)
AbreDb(dAno+Nome_Mes,'vm',.t.)
else
return nil
endif
vm->(OrdSetFocus(10))
vArray := {{},{}}
Stor 0 to nVendedor,xTotal
Do While vm->(!eof())
nVendedor ++
nCV := vm->cod_vended
Stor 0 to nTotal
Do While vm->Cod_Vended = nCV
nTotal += Soma_Valor('vm')
xTotal += Soma_Valor('vm')
vm->(DbSkip())
EndDo
aadd( vArray[1],nCV )
aadd( vArray[2],transf(nTotal,'9999999999.99') )
EndDo
sTemp = sTemp + "00003750|00004450|000051|000061|000072|00008-984833|00009401|00011Tahoma|100011|"
sTemp = sTemp + "100035|100045|10005-5|10006-5|1000910|100101|100111|100122|100181|100200|10021"
sTemp = sTemp + alltrim(transf(xTotal,'99999999.99')) +'|'
sTemp = sTemp + "1002212|100238|100272|100331|100341|1003512|100378|100481|100491|10051-13408615|"
sTemp = sTemp + "10052-2448096|100541|100558|10056-9868951|10057-11861886|10060-2987746|10061-983041|"
sTemp = sTemp + "100626|10063-1|100652|"
sTemp = sTemp + "10187"
For n := 1 to nVendedor
Stemp = sTemp + vArray[1,n]
if n = nVendedor
else
sTemp = sTemp + "*"
endif
Next
//Janeiro*Fevereiro*Março*Abril*Maio*Junho*Julho*Agosto*Setembro*Outubro*"Novembro*Dezembro
sTemp = sTemp + "|110011|110021|110049|110061|110081|110121|110131|1102111|110221|"
sTemp = sTemp + "1102312|110281|11053"
For n := 1 to nVendedor
Stemp = sTemp + vArray[2,n]
if n = nVendedor
else
sTemp = sTemp + "*"
endif
Next
Grafico(sTemp)
endif
Return nil
*********************
Function Chart(sTemp)
*********************
*
*
local nRetVal:=0, dll
nRetVal := dllcall(hDll,DC_CALL_STD,"RMC_CREATECHARTFROMFILE",omainwindow:handle,1001,10,10,0,sTemp)
nRetVal := dllcall(hDll,DC_CALL_STD,"RMC_DRAW",1001)
return ""
******************
Function endwindow
******************
*
*
nRetVal = dllcall(hDll,DC_CALL_STD,"RMC_RESET",1001)
omainwindow:close()
return Nil
************************
Function Grafico(sTemp)
************************
*
*
Private oMainWindow, oFont
private hDll
hDll:=loadlibrary("rmchart.dll")
PREPARE FONT oFont NAME "Times New Roman" WIDTH 0 HEIGHT -17 CHARSET 4
INIT DIALOG oMainWindow TITLE "GRÁFICO" Font oFont AT 0,0 SIZE 795,500 STYLE DS_CENTER ;
On Init {|| Chart(sTemp) }
oMainWindow:Activate()
Return nil



