RMchart (gráficos comerciais profissionais)

Projeto HwGui - Biblioteca visual para Harbour/xHarbour

Moderador: Moderadores

Avatar do usuário
Itamar M. Lins Jr.
Administrador
Administrador
Mensagens: 7928
Registrado em: 30 Mai 2007 11:31
Localização: Ilheus Bahia
Curtiu: 1 vez

RMchart (gráficos comerciais profissionais)

Mensagem por Itamar M. Lins Jr. »

Ola!

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
marcos.gurupi
Usuário Nível 4
Usuário Nível 4
Mensagens: 939
Registrado em: 06 Jul 2004 11:53
Localização: Gurupi-TO

Mensagem por marcos.gurupi »

Onde encontro a DLL para linkar e qual lib linko no projeto para aceitar a dllcall()

Obrigado!!
Marcos Roberto
Avatar do usuário
Itamar M. Lins Jr.
Administrador
Administrador
Mensagens: 7928
Registrado em: 30 Mai 2007 11:31
Localização: Ilheus Bahia
Curtiu: 1 vez

Mensagem por Itamar M. Lins Jr. »

marcos.gurupi escreveu:Onde encontro a DLL para linkar e qual lib linko no projeto para aceitar a dllcall()

Obrigado!!
Marcos Roberto
http://www.rmchart.com/

Para dllcall não tem lib especifica.

Saudações
Itamar M. Lins Jr.
marcos.gurupi
Usuário Nível 4
Usuário Nível 4
Mensagens: 939
Registrado em: 06 Jul 2004 11:53
Localização: Gurupi-TO

Mensagem por marcos.gurupi »

Eu tive a informacao do Luiz Culik q ela soh funcionaria com o xhb comercial. Vc usa com que xhb?

Marcos Roberto.
Avatar do usuário
software_facil
Usuário Nível 3
Usuário Nível 3
Mensagens: 211
Registrado em: 23 Fev 2005 12:19
Localização: Curitiba/PR
Contato:

Mensagem por software_facil »

A afirmação do Culik não procede, pois eu mesmo fiz os testes, pegando os exemplos em ooHG e usando o Harbour opensource que acompanha a MiniGUI para gerar os exemplos, e funciona, tanto que se vc olhar o exemplo da pasta rmchart na distribuição da MiniGUI Extended, verá o meu nome no cabeçalho.

Abraços

PS : Não acredite em tudo o que lhe dizem, principalmente nessa história de que só o xHarbour comercial faz tudo, não é bem assim.
messenger : software_facil@hotmail.com
Avatar do usuário
Maligno
Membro Master
Membro Master
Mensagens: 6398
Registrado em: 06 Jul 2004 01:40
Localização: Londrina/PR

Mensagem por Maligno »

PS : Não acredite em tudo o que lhe dizem, principalmente nessa história de que só o xHarbour comercial faz tudo, não é bem assim.
O Culik ganha dinheiro com o XHarbour. Logo, é suspeito pra falar certas coisas. O melhor é não botar fé log de cara. :)
[]'s
Maligno
---
Não respondo questões técnicas através de MP ou eMail. Não insista.
As dúvidas devem ser postadas no fórum. Desta forma, todos poderão
se beneficiar das respostas.

---
Se um dia precisar de uma transfusão de sangue você perceberá como
é importante a figura do doador. Procure o hemocentro de sua cidade e
se informe sobre a doação de sangue, plaquetas e medula óssea. Doe!
Avatar do usuário
Itamar M. Lins Jr.
Administrador
Administrador
Mensagens: 7928
Registrado em: 30 Mai 2007 11:31
Localização: Ilheus Bahia
Curtiu: 1 vez

Mensagem por Itamar M. Lins Jr. »

marcos.gurupi escreveu:Eu tive a informacao do Luiz Culik q ela soh funcionaria com o xhb comercial. Vc usa com que xhb?

Marcos Roberto.
Não tem nada haver.

Funciona com xharbour.org

Rafael me ajudou e ajuda em muitas coisas, mas pisa muito na bola de vez em quando.

Ps. Alias não tem nem exemplos para o xharbour comercial.

Saudações
Itamar M. Lins Jr.
marcos.gurupi
Usuário Nível 4
Usuário Nível 4
Mensagens: 939
Registrado em: 06 Jul 2004 11:53
Localização: Gurupi-TO

Mensagem por marcos.gurupi »

Eu jah desconfiada disso, mas para funcionar no xhb (open) alem da dll tem outra lib q devo linkar? Qual eh o minimo da versaum do xhb?

Marcos Roberto.
Avatar do usuário
Itamar M. Lins Jr.
Administrador
Administrador
Mensagens: 7928
Registrado em: 30 Mai 2007 11:31
Localização: Ilheus Bahia
Curtiu: 1 vez

Mensagem por Itamar M. Lins Jr. »

marcos.gurupi escreveu:Eu jah desconfiada disso, mas para funcionar no xhb (open) alem da dll tem outra lib q devo linkar? Qual eh o minimo da versaum do xhb?

Marcos Roberto.
Essa do xharbour.org já funciona.
Parece que nem testou ainda. Para facilitar deveria de informar a versão do xharbour que estas a usar no momento.

Saudações
Itamar M. Lins Jr.
Avatar do usuário
sygecom
Administrador
Administrador
Mensagens: 7131
Registrado em: 21 Jul 2006 10:12
Localização: Alvorada-RS
Contato:

Mensagem por sygecom »

marcos, é só copiar o codigo que o colega postou , compilar e testar.
fiz um teste com 1.0.0 e funcionou.
Leonardo Machado
xHarbour.org + Hwgui + PostgreSql
Avatar do usuário
Luciano Bonfim
Usuário Nível 3
Usuário Nível 3
Mensagens: 414
Registrado em: 23 Ago 2007 09:34
Localização: Rio de Janeiro / São Paulo
Contato:

Mensagem por Luciano Bonfim »

testei e está dando o seguinte erro ao executar:

variavel DC_CALL_STD nao exeiste....

tem algum include específico?

Muito Obrigado
Muito Obrigado,

Luciano Bonfim de Azevedo
www.bonfim.com.br
luciano@bonfim.com.br
www.linkedin.com/in/lucianobonfim
Skype : lucianobonfim
Avatar do usuário
Itamar M. Lins Jr.
Administrador
Administrador
Mensagens: 7928
Registrado em: 30 Mai 2007 11:31
Localização: Ilheus Bahia
Curtiu: 1 vez

Mensagem por Itamar M. Lins Jr. »

Luciano Bonfim escreveu:testei e está dando o seguinte erro ao executar:

variavel DC_CALL_STD nao exeiste....

tem algum include específico?

Muito Obrigado

Código: Selecionar todos

#define DC_CALL_STD 0x0020
Ola!

Estava esperando alguem falar sobre isso :-)

Esse foi o primeiro exemplo de como usar.
É só copiar colar e compilar, não precisa de mais nada.

Test this prg.

Código: Selecionar todos

#include "windows.ch"
#include "guilib.ch"

#define DC_CALL_STD 0x0020

Function Main
Private oMainWindow, oFont
private hDll

   hDll:=loadlibrary("rmchart.dll")

   PREPARE FONT oFont NAME "Times New Roman" WIDTH 0 HEIGHT -17 CHARSET 4

   INIT WINDOW oMainWindow MAIN TITLE "Example RMCHART"  ;
     COLOR COLOR_3DLIGHT+1                       ;
     AT 0,0 SIZE 800,600                       ;
     FONT oFont                                  ;
     ON EXIT {||MsgYesNo("Really want to quit ?")}

   @ 100,500 BUTTON "Close"  SIZE 150,30  ON CLICK {||EndWindow()}
   @ 300,500 BUTTON "RMCHART"  SIZE 150,30  ON CLICK {||Chart()}

   ACTIVATE WINDOW oMainWindow

Return nil

function chart
  local  sTemp:=""
  local  nRetVal:=0, dll

    sTemp = sTemp +
"00003650|00004450|000051|000061|000071|00008-6697831|00009412|00011Tahoma|100011"
    sTemp = sTemp +
"|1000310|1000410|10005-5|10006-5|1000910|100101|100111|100121|100131|100181|1002"
    sTemp = sTemp +
"00|100217|1002215|100238|100272|100331|100341|100358|100378|100411|100482|100492"
    sTemp = sTemp +
"|10051-6751336|10052-15132304|10053-983041|100541|100558|10056-16777077|10057-16"
    sTemp = sTemp +
"777077|100586|10060-16777077|10061-1468806|100622|10180data source:
www.federalr"
    sTemp = sTemp + "eserve.gov + www.ecb.int|10181Prime Rates in USA und
Euroland|10183 %|101871999*"
    sTemp = sTemp +
"2000*2001*2002*2003*2004*2005*2006|110011|1100221|110035|1100434|110052|110063|1"
    sTemp = sTemp +
"10073|1100970|1101312|110171|11019-16744448|1102115|110221|1102396|110262|110521"
    sTemp = sTemp +
"2|110534.75*4.75*4.75*4.75*4.75*5*5*5.25*5.25*5.25*5.5*5.5*5.5*5.75*6*6*6.5*6.5*"
    sTemp = sTemp +
"6.5*6.5*6.5*6.5*6.5*6.5*5.5*5.5*5*4.5*4*3.75*3.75*3.5*3*2.5*2*1.75*1.75*1.75*1.7"
    sTemp = sTemp +
"5*1.75*1.75*1.75*1.75*1.75*1.75*1.75*1.25*1.25*1.25*1.25*1.25*1.25*1.25*1*1*1*1*"
    sTemp = sTemp +
"1*1*1*1*1*1*1*1*1*1*1.25*1.5*1.75*2*2.25*2.25*2.5*2.75*2.75*3*3.25*3.25*3.5*3.75"
    sTemp = sTemp +
"*3.75*4*4.25*4.5*4.5*4.75*4.75*5*5.25*5.25*5.25*5.25*5.25*5.25*5.25|120011|12002"
    sTemp = sTemp +
"21|120035|1200434|120052|120063|120073|1200950|1201312|120171|12019-2448096|1202"
    sTemp = sTemp +
"115|120221|1202396|120262|1205212|120533*3*3*2.5*2.5*2.5*2.5*2.5*2.5*2.5*3*3*3*3"
    sTemp = sTemp +
".25*3.5*3.75*3.75*4.25*4.25*4.5*4.5*4.75*4.75*4.75*4.75*4.75*4.75*4.75*4.5*4.5*4"
    sTemp = sTemp +
".5*4.25*3.75*3.75*3.25*3.25*3.25*3.25*3.25*3.25*3.25*3.25*3.25*3.25*3.25*3.25*3."
    sTemp = sTemp +
"25*2.75*2.75*2.75*2.5*2.5*2.5*2*2*2*2*2*2*2*2*2*2*2*2*2*2*2*2*2*2*2*2*2*2*2*2*2*"
    sTemp = sTemp +
"2*2*2*2*2*2.25*2.25*2.25*2.5*2.5*2.5*2.75*2.75*3*3*3.25*3.25*3.5|010011|010054|0"
    sTemp = sTemp +
"100721|01014-16744448|010222|01024216*287|01025109*109|010272|010283|010012|0100"
    sTemp = sTemp + "51|01010295|01011102|010191|01026USA (Federal Funds
Rate)|010013|010054|0100721|"
    sTemp = sTemp +
"01014-10496|010222|01024260*287|01025192*192|010272|010283|010014|010051|0101029"
    sTemp = sTemp + "5|01011185|010191|01026Euroland (Prime Rate)"

    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
Saudações
Itamar M. Lins Jr.
Avatar do usuário
Luciano Bonfim
Usuário Nível 3
Usuário Nível 3
Mensagens: 414
Registrado em: 23 Ago 2007 09:34
Localização: Rio de Janeiro / São Paulo
Contato:

Mensagem por Luciano Bonfim »

agora funcionou perfeitamente...

valeu... show de bola, e eu que já estava feliz com os gráficos da HWGUI agora estou nas nuvens...

valeu mesmo
Muito Obrigado,

Luciano Bonfim de Azevedo
www.bonfim.com.br
luciano@bonfim.com.br
www.linkedin.com/in/lucianobonfim
Skype : lucianobonfim
Avatar do usuário
Luciano Bonfim
Usuário Nível 3
Usuário Nível 3
Mensagens: 414
Registrado em: 23 Ago 2007 09:34
Localização: Rio de Janeiro / São Paulo
Contato:

Mensagem por Luciano Bonfim »

só näo consegui entender direito como é formada a variável stemp... o que quer dizer cada linha/coluna dela...

pode me dar uma luz?

muito obrigado
Muito Obrigado,

Luciano Bonfim de Azevedo
www.bonfim.com.br
luciano@bonfim.com.br
www.linkedin.com/in/lucianobonfim
Skype : lucianobonfim
Avatar do usuário
Itamar M. Lins Jr.
Administrador
Administrador
Mensagens: 7928
Registrado em: 30 Mai 2007 11:31
Localização: Ilheus Bahia
Curtiu: 1 vez

Mensagem por Itamar M. Lins Jr. »

Luciano Bonfim escreveu:só näo consegui entender direito como é formada a variável stemp... o que quer dizer cada linha/coluna dela...

pode me dar uma luz?

muito obrigado
Muito fácil... agora depois de alguns dias estudando.... :-)


Tem um programa que vem com a rmchart. Voce baixa o programa de nome setup.exe tem que renomear para rmchart.exe. Acabei de instala-lo no 2003 server não precisou renomea-lo.
rmcdesigner é o aplicativo... xiiii no 2003 server da pau...
Vem uns exemplos é só abrir cada um e ir estudando.

Estou no 2003, no note passo mais dicas...

Saudações
Itamar M. Lins Jr.
Responder