RMChart

Projeto [x]Harbour - Compilador de código aberto compatível com o Clipper.

Moderador: Moderadores

Avatar do usuário
fladimir
Colaborador
Colaborador
Mensagens: 2445
Registrado em: 15 Nov 2006 20:21

RMChart

Mensagem por fladimir »

no sistema q quero testar é CONSOLE, mas coloquei as linhas abaixo pq ao inserir o codigo do teste no meu sistema verifiquei a necessidade, mas se tiver como somente CONSOLE neste caso especifico prefiro...

Analisando a função q gera o gráfico ela faz chamada a propriedade handle q no console desconheço como passar esta informação, daí o motivo da dúvida.

Como fazer somente console?
Sun Tzu há mais de três mil anos cita nas epígrafes de seu livro “A Arte da Guerra“:

“Concentre-se nos pontos fortes, reconheça as fraquezas, agarre as oportunidades e proteja-se contra as ameaças”.
“Se não é vantajoso, nunca envie suas tropas; se não lhe rende ganhos, nunca utilize seus homens; se não é uma situação perigosa, nunca lute uma batalha precipitada”
.


Até 2017    Desktop Console [ Legado ] Harbour | MinGW | DBF | CDX | FastReport | MySQL


Novos Projetos:

   Desktop Visual           Windev Desktop
   Celular Android/iOS   Windev Mobile
   WEB                            Windev Web


Sejamos gratos a Deus.
Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

RMChart

Mensagem por JoséQuintas »

De qualquer jeito vai precisar da janela Windows para o gráfico.
Mas... porque não usar GTWVG de uma vez?
Só acrescentar gtwvg.hbc na compilação.
E uma rotina de erros que não desapareça junto com a janela.
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/
Avatar do usuário
fladimir
Colaborador
Colaborador
Mensagens: 2445
Registrado em: 15 Nov 2006 20:21

RMChart

Mensagem por fladimir »

Então eu adicionei pra testar e compilou normal e não mostrou nada...

Ai pra desencargo peguei teu exemplo (projeto baixado) e rodei o C.BAT e acusou falta de 2 defines...

#define WIN_WM_SIZE 5
#define EVENT_UNHANDLED 1

Ai depois passou... MAS SE EU COMPILO AKI O TEU EXEMPLO/PROJETO ele aparece o menu MAS não aparecem os gráficos...

Acredito q possa ser algo relativo a eu usar o harbour 3.2 pois pelo q vi tem questões do WVG q foram melhoradas/corrigidas/implementadas no ultimo harbour 3.4

Será q seria isto José?
Sun Tzu há mais de três mil anos cita nas epígrafes de seu livro “A Arte da Guerra“:

“Concentre-se nos pontos fortes, reconheça as fraquezas, agarre as oportunidades e proteja-se contra as ameaças”.
“Se não é vantajoso, nunca envie suas tropas; se não lhe rende ganhos, nunca utilize seus homens; se não é uma situação perigosa, nunca lute uma batalha precipitada”
.


Até 2017    Desktop Console [ Legado ] Harbour | MinGW | DBF | CDX | FastReport | MySQL


Novos Projetos:

   Desktop Visual           Windev Desktop
   Celular Android/iOS   Windev Mobile
   WEB                            Windev Web


Sejamos gratos a Deus.
Avatar do usuário
fladimir
Colaborador
Colaborador
Mensagens: 2445
Registrado em: 15 Nov 2006 20:21

RMChart

Mensagem por fladimir »

Para não ter q baixar o Source do 3.4 e recompilar alguém teria um link de um já pronto pra MinGW (uso o TDM-GCC)
Sun Tzu há mais de três mil anos cita nas epígrafes de seu livro “A Arte da Guerra“:

“Concentre-se nos pontos fortes, reconheça as fraquezas, agarre as oportunidades e proteja-se contra as ameaças”.
“Se não é vantajoso, nunca envie suas tropas; se não lhe rende ganhos, nunca utilize seus homens; se não é uma situação perigosa, nunca lute uma batalha precipitada”
.


Até 2017    Desktop Console [ Legado ] Harbour | MinGW | DBF | CDX | FastReport | MySQL


Novos Projetos:

   Desktop Visual           Windev Desktop
   Celular Android/iOS   Windev Mobile
   WEB                            Windev Web


Sejamos gratos a Deus.
Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

RMChart

Mensagem por JoséQuintas »

Você tem razão, no Harbour 3.2 não está funcionando justamente o retângulo.

Aproveitando:
Acompanhou a dificuldade em deixar os parâmetros compatíveis com rmchart? numéricos double, decimal, long
Pode ser comparado com as mudanças que o Viktor fez na GTWVG.
Enquanto no Harbour 3.4 os parâmetros/retornos da API Windows são compatíveis com Harbour, no Harbour 3.2 não.

Mas pelo que entendi o ASimões está usando Harbour 3.2.
Talvez ele tenha usado alguma coisa já existente e não o tstRetangle.
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/
Avatar do usuário
asimoes
Colaborador
Colaborador
Mensagens: 4919
Registrado em: 26 Abr 2007 16:48
Localização: RIO DE JANEIRO-RJ

RMChart

Mensagem por asimoes »

Quintas,

Eu uso o 3.4 com mingw
►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)
Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

RMChart

Mensagem por JoséQuintas »

Vi em algum post seu algo sobre Harbour 3.2, por isso me confundi.

Fladimir, deixer passar algo: disse da falta de uma definição SIZE/RESIZE 5.
O último que postei é mais simples, contém todos os gráficos, até outros novos, mas mostra um de cada vez.
E deixei só o fonte do Rectangle, pra não encher de coisas.

http://www.jpatecnologia.com.br/arquivo ... mchart.zip

ou se preferir, agora está aqui, na pasta rmchart.

https://github.com/JoseQuintas/AllInOne
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/
Avatar do usuário
fladimir
Colaborador
Colaborador
Mensagens: 2445
Registrado em: 15 Nov 2006 20:21

RMChart

Mensagem por fladimir »

Vlw vou testar... se não der vou tirar um tempinho pra migrar pro 3.4

[]´s
Sun Tzu há mais de três mil anos cita nas epígrafes de seu livro “A Arte da Guerra“:

“Concentre-se nos pontos fortes, reconheça as fraquezas, agarre as oportunidades e proteja-se contra as ameaças”.
“Se não é vantajoso, nunca envie suas tropas; se não lhe rende ganhos, nunca utilize seus homens; se não é uma situação perigosa, nunca lute uma batalha precipitada”
.


Até 2017    Desktop Console [ Legado ] Harbour | MinGW | DBF | CDX | FastReport | MySQL


Novos Projetos:

   Desktop Visual           Windev Desktop
   Celular Android/iOS   Windev Mobile
   WEB                            Windev Web


Sejamos gratos a Deus.
Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

RMChart

Mensagem por JoséQuintas »

Não sei se dá pra usar GTWVW no 3.2, pelo menos pro gráfico.

Janelas Windows disponíveis no Harbour:

- GTWVG
- GTWVT (faz parte da GTWVG)
- GTWGU (faz parte da GTWVG)
- GTWVW - no Harbour 3.2 fica em extras

Curiosidade, a criação dos controles da GTWVG

Harbour 3.2: Wvg_CreateWindowEx()
Harbour 3.4: wapi_CreateWindowEx()

Não é problema no Harbour ou na GTWVG.
A GTWVG do 3.2 está funcionando pra tudo que tem na GTWVG.
Eu é que comecei a testar coisas adicionais, e as alterações na GTWVG do 3.4 permitem.
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/
Avatar do usuário
fladimir
Colaborador
Colaborador
Mensagens: 2445
Registrado em: 15 Nov 2006 20:21

RMChart

Mensagem por fladimir »

Deu certo aki... migrei para harbour 3.4 (tive q mudar alguns nomes de funções como hb_sendmail() virou tip_mailsend(), HB_OEMTOANSI virou WIN_OEMTOANSI... coisas do tipo...

tb no meu HBP mudei as chamadas das libs q antes fazia:

Código: Selecionar todos

-lhbct
para

Código: Selecionar todos

hbct.hbc
Enfim foi isto... ai gerou o exemplo e deu certo...

Obrigado galera.
Sun Tzu há mais de três mil anos cita nas epígrafes de seu livro “A Arte da Guerra“:

“Concentre-se nos pontos fortes, reconheça as fraquezas, agarre as oportunidades e proteja-se contra as ameaças”.
“Se não é vantajoso, nunca envie suas tropas; se não lhe rende ganhos, nunca utilize seus homens; se não é uma situação perigosa, nunca lute uma batalha precipitada”
.


Até 2017    Desktop Console [ Legado ] Harbour | MinGW | DBF | CDX | FastReport | MySQL


Novos Projetos:

   Desktop Visual           Windev Desktop
   Celular Android/iOS   Windev Mobile
   WEB                            Windev Web


Sejamos gratos a Deus.
Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

RMChart

Mensagem por JoséQuintas »

Nem queiram saber o que acabei de fazer.... e está funcionando...
Feito por quem não conhece linguagem C, e apenas está "fuçando" nessa área...
trackbar.png
Seleção de gráficos do RMChart através do trackbar !!!! (também chamado de slider).
Não, não existe esse controle na GTWVG!!!
Sim, é só movimentar esse controle deslizante e os gráficos vão sendo trocados conforme a posição do controle deslizante.

Quem conhece dessas coisas diz que não dá pra fazer...
Como não conheço... foi.... rs

É só teste, não é um fonte final, mas o módulo principal ficou assim:

Código: Selecionar todos

FUNCTION TstRmChart()

   LOCAL oRmChart, oCrt1, oControl

   SetMode(40,100)
   SET WRAP ON
   SetColor( "W/B" )
   CLS
   oRmChart := RMChart():New()
   oCrt1 := TstRectangle():New( , , { -5, -1 }, { -MaxRow(), -MaxCol() } )
   oCrt1:Create()

   oControl := TstTrackbar():New()
   oControl:Create( , , { -1, -1 }, { -2, -90 }, , .F. )
   oControl:SetValues( 1, 1, 10 )
   oControl:Show()
   oControl:bChanged := { | nOpc | MoStraGrafico( nOpc, oCrt1, oRmChart ) }
   Inkey(0)
   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/
Avatar do usuário
fladimir
Colaborador
Colaborador
Mensagens: 2445
Registrado em: 15 Nov 2006 20:21

RMChart

Mensagem por fladimir »

Kkkkk q louco... parabéns Zé...

Agora colocando mais tempeiro no feijão... fuçando nas minhas pastas eu lembrava q tinha algo de RMChart e achei um PRG (acho q é HWGUI não verifiquei) q cria o gráfico a partir da Dll tb e com 1 método q não vi na classe chamando CreateChartFromFile... ai pensei (não testei ainda vou fazer na sequencia) se usarmos o RMDesigner lá tem pra copiar o código fonte do gráfico de várias formas e 1 delas se assemelha muito a forma utilizada no código abaixo... Se possível analisem e deem vossas opiniões pra ver se é isso mesmo o raciocínio ou viajei...

[]´s

Código: Selecionar todos

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

#define ID_CHART 5001
#define ID_CHART2 5002

Function Main

 hDll:= hb_LibLoad("rmchart.dll")

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

 INIT WINDOW oMainWindow MAIN MDI TITLE "Example RMCHART";
  AT 0,0 SIZE 1300,650 ;
  FONT oFont 

   MENU OF oMainWindow
    MENU TITLE "Charts"
      MENUITEM "Charts"                 ID 1100 ACTION Chart()
    ENDMENU
   ENDMENU

 oMainWindow:activate()
 
   hb_LibFree( hDll )

Return nil

function chart

  cLabel1 := "Coluna 1"
  cLabel2 := "Coluna 2"
  cLabel3 := "Coluna 3"
  cLabel4 := "Coluna 4"
  cLabel5 := "Coluna 5"

  sTemp1 := "00003600|00004450|000051|000061|00008-984833|00009310|00011Tahoma|100011|100035|100045|";
      +"10005-5|10006-5|1000911|100101|100111|100131|100181|100200|10021100|1002211|100238|100331|";
      +"100341|100355|100378|100481|100491|10051-16776961|10052-256|10053-1|100541|100558|";
      +"10056-16777216|10057-16777216|10060-16777216|10061-16777216|100626|10181This is the chart's caption|";
      +"10187Label 1*Label 2*Label 3*Label 4*Label 5|110011|110021|110031|110043|110053|11006-1|";
      +"110091|110131|11014-1|110171|1102111|110221|110235|1105350*70*40*60*30"
  nSize1X := VAL( SUBS( sTemp1, AT("00003",sTemp1)+5 , 3 ) )
  nSize1Y := VAL( SUBS( sTemp1, AT("00004",sTemp1)+5 , 3 ) )

  sTemp1 := STRTRAN( sTemp1, "Label 1", cLabel1 )
  sTemp1 := STRTRAN( sTemp1, "Label 2", cLabel2 )
  sTemp1 := STRTRAN( sTemp1, "Label 3", cLabel3 )
  sTemp1 := STRTRAN( sTemp1, "Label 4", cLabel4 )
  sTemp1 := STRTRAN( sTemp1, "Label 5", cLabel5 )

  sTemp2 := "00003650|00004450|000051|000061|000071|00008-6697831|00009412|00011Tahoma|100011";
      + "|1000310|1000410|10005-5|10006-5|1000910|100101|100111|100121|100131|100181|1002";
      + "00|100217|1002215|100238|100272|100331|100341|100358|100378|100411|100482|100492";
      + "|10051-6751336|10052-15132304|10053-983041|100541|100558|10056-16777077|10057-16";
      + "777077|100586|10060-16777077|10061-1468806|100622|10180data source: www.federalr";
      + "eserve.gov + www.ecb.int|10181Prime Rates in USA und Euroland|10183 %|101871999*";
      + "2000*2001*2002*2003*2004*2005*2006|110011|1100221|110035|1100434|110052|110063|1";
      + "10073|1100970|1101312|110171|11019-16744448|1102115|110221|1102396|110262|110521";
      + "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*";
      + "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";
      + "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*";
      + "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";
      + "*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";
      + "21|120035|1200434|120052|120063|120073|1200950|1201312|120171|12019-2448096|1202";
      + "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";
      + ".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";
      + ".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.";
      + "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*";
      + "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";
      + "100721|01014-16744448|010222|01024216*287|01025109*109|010272|010283|010012|0100";
      + "51|01010295|01011102|010191|01026USA (Federal Funds Rate)|010013|010054|0100721|";
      + "01014-10496|010222|01024260*287|01025192*192|010272|010283|010014|010051|0101029";
      + "5|01011185|010191|01026Euroland (Prime Rate)"
  nSize2X := VAL( SUBS( sTemp2, AT("00003",sTemp2)+5 , 3 ) )
  nSize2Y := VAL( SUBS( sTemp2, AT("00004",sTemp2)+5 , 3 ) )


 INIT WINDOW oFormChart1 MDICHILD ;
     TITLE "teste 1" ;
     STYLE WS_VISIBLE + WS_OVERLAPPEDWINDOW;
     AT 0,0;
     SIZE nSize1X+20,nSize1Y+30;
     FONT oFont;
     ON INIT {|o| initForm_Chart1(o) };

 oFormChart1:Activate(.T.)


 INIT WINDOW oFormChart2 MDICHILD ;
     TITLE "teste 2" ;
     STYLE WS_VISIBLE + WS_OVERLAPPEDWINDOW;
     AT nSize2X,0;
     SIZE nSize2X+20,nSize2Y+30;
     FONT oFont;
     ON INIT {|o| initForm_Chart2(o) };
     ON EXIT {|o| exitForm_Chart2(o) }

 oFormChart2:Activate(.T.)

return .T.

function initForm_Chart1(o)
  nRetVal := HB_DYNCALL( {"RMC_CREATECHARTFROMFILE", hDll, HB_DYN_CALLCONV_STDCALL },o:handle,ID_CHART,0,0,0,sTemp1)
  nRetVal := HB_DYNCALL( {"RMC_DRAW", hDll, HB_DYN_CALLCONV_STDCALL },ID_CHART)
return(.t.)
function exitForm_Chart1(o)
  nRetVal = HB_DYNCALL( {"RMC_DELETECHART", hDll, HB_DYN_CALLCONV_STDCALL },ID_CHART)
return(.t.)

function initForm_Chart2(o)
  nRetVal := HB_DYNCALL( {"RMC_CREATECHARTFROMFILE", hDll, HB_DYN_CALLCONV_STDCALL },o:handle,ID_CHART2,0,0,0,sTemp2)
  nRetVal := HB_DYNCALL( {"RMC_DRAW", hDll, HB_DYN_CALLCONV_STDCALL },ID_CHART2)
return(.t.)
function exitForm_Chart2(o)
  nRetVal = HB_DYNCALL( {"RMC_DELETECHART", hDll, HB_DYN_CALLCONV_STDCALL },ID_CHART2)
return(.t.)


/*
************************
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
*/
Sun Tzu há mais de três mil anos cita nas epígrafes de seu livro “A Arte da Guerra“:

“Concentre-se nos pontos fortes, reconheça as fraquezas, agarre as oportunidades e proteja-se contra as ameaças”.
“Se não é vantajoso, nunca envie suas tropas; se não lhe rende ganhos, nunca utilize seus homens; se não é uma situação perigosa, nunca lute uma batalha precipitada”
.


Até 2017    Desktop Console [ Legado ] Harbour | MinGW | DBF | CDX | FastReport | MySQL


Novos Projetos:

   Desktop Visual           Windev Desktop
   Celular Android/iOS   Windev Mobile
   WEB                            Windev Web


Sejamos gratos a Deus.
Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

RMChart

Mensagem por JoséQuintas »

Se acompanhou o post, acrescentei muito mais métodos.
Também passei como acrescentar mais coisas que faltarem.
Como exemplo desse método, caso ainda não tenha:

Código: Selecionar todos

METHOD CreateChartFromFile( ... )  INLINE ::CallDllStd( "RMC_CREATECHARTFROMFILE", ... )
E se precisar alguma conversão, indicar parâmetros que precisam conversão (com todos os anteriores).
Exemplo:

Código: Selecionar todos

METHOD NovaFuncao(a,b,c,...) INLINE ::CallDllStd( "RMC_NOVAFUNCAO", a, ::ToDouble(b), ::ToDouble(c), ... )
Isso serve de base pra tudo que ainda não foi resolvido.

Mas pra ficar compatível com os exemplos mesmo, pra evitar qualquer GPF por causa de coisa errada, precisaria preencher o default quando o programa não preencher valor nos parâmetros.
Por exemplo:

Código: Selecionar todos

METHOD NovaFuncao(a,b,c,d,e,f)
...
METHOD NovaFuncao(a,b,c,d,e,f)
   hb_Default( @a, 0 )
   hb_Default( @b, 0 )
   hb_Default( @c, 0 )
   hb_Default( @d, 0 )
   hb_Default( @e, 0 )
   hb_Default( @f, 0 )
   RETURN ::CallDllStd( "RMC_NOVAFUNCAO", a,b,c,d,e,f)
É que no VB, ao declarar como OPTIONAL nNumero AS DOUBLE, por exemplo, isso equivale a ter usado o hb_Default() pra colocar 0 na variável.
No exemplo do VB nem precisa do parâmetro. Então se tentar no Harbour vai dar GPF por faltar o parâmetro.

Como eu disse, são mais de 200 funções, leva meses pra ajustar todas, e nem precisa usar todas durante o uso.
Então se por acaso, algum dia, precisar usar alguma dessas, é usar a referência deste post pra resolver.

Em outras palavras: com as explicações do post, a classe vai sobreviver sozinha, cada um vai poder resolver o que precisar, sem ter que esperar que alguém resolva.
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/
Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

RMChart

Mensagem por JoséQuintas »

Por falar nisso... pensei num jeito simples de converter aquele .BAS contendo TODAS as declarações.
Simples.... mas ainda assim trabalhoso.

Código: Selecionar todos

Declare Function RMC_CreateChartFromFileOnDC Lib "RMCHART.DLL" Alias "RMC_CREATECHARTFROMFILEONDC" ( _
                            ByVal nParentDC As Long, _
                            ByVal nCtrlId As Long, _
                            ByVal nX As Long, _
                            ByVal nY As Long, _
                            ByVal nExportOnly As Long, _
                            ByVal sRMCFile As String _
                             ) As RMCError
Os pontos importantes são o nome interno da dll, que fica entre aspas, a quantidade de parâmetros, e o tipo de cada um.
Isso ficaria assim:

Código: Selecionar todos

METHOD CreateChartFromFileOnDc( nParentDC, nCtrlId, nX, nY, nExportOnly, sRMCFile )
   RETURN ::CallDllStd( "RMC_CREATECHARTFROMFILEONDC", ::ToLong( nParentDC ), ::ToLong( nCtrlId ), ;
   ::ToLong( nX ), ::ToLong( nY ), ::ToLong( nExportOnly ), ::ToString( sRMCFile ) )
Isso garantiria o tratamento para o tipo compatível.
Depois só criar as rotinas de conversão, exemplo:

Código: Selecionar todos

METHOD ToString( xValue )
   RETURN iif( xValue == NIL, "", xValue )

METHOD ToDouble(xValue)
   RETURN iif( xValue == NIL, 0, xValue ) // ou conversões adicionais
Lembrando que verdadeiro/falso são boolean, mas em chamadas desse tipo são numéricos.
hb_DefaultValue() não serve pra esses casos onde o tipo não é o que parece ser.
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/
Avatar do usuário
fladimir
Colaborador
Colaborador
Mensagens: 2445
Registrado em: 15 Nov 2006 20:21

RMChart

Mensagem por fladimir »

:)Pos

obrigado
Sun Tzu há mais de três mil anos cita nas epígrafes de seu livro “A Arte da Guerra“:

“Concentre-se nos pontos fortes, reconheça as fraquezas, agarre as oportunidades e proteja-se contra as ameaças”.
“Se não é vantajoso, nunca envie suas tropas; se não lhe rende ganhos, nunca utilize seus homens; se não é uma situação perigosa, nunca lute uma batalha precipitada”
.


Até 2017    Desktop Console [ Legado ] Harbour | MinGW | DBF | CDX | FastReport | MySQL


Novos Projetos:

   Desktop Visual           Windev Desktop
   Celular Android/iOS   Windev Mobile
   WEB                            Windev Web


Sejamos gratos a Deus.
Responder