Testando mais com RMChart

Aqui você poderá oferecer suas Contribuições, Dicas e Tutoriais (Texto ou Vídeo) que sejam de interesse de todos.

Moderador: Moderadores

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

Testando mais com RMChart

Mensagem por JoséQuintas »

rmchart.png
Estou fazendo testes aqui pra melhorar um pouco o uso de RMChart.
Só podia abrir uma janela com RMChart por vez, agora testando mais janelas.

À primeira vista ok, mas por enquanto foi só um teste básico, sem alterar a classe.

Código: Selecionar todos

   CLASSVAR hDLL
   VAR ID  INIT 1
   METHOD Init()                           INLINE ::hDLL := iif( ::hDLL == Nil, hb_libLoad( "RMChart.dll" ), ::hDLL )
O segredo parece ser usar uma ID pra cada gráfico, e nunca repetir.

Fiquei na dúvida sobre o detalhe de carregar/liberar a DLL.
Supondo que duas janelas usem ao mesmo tempo, o libload()/libfree() vai ser em cada uma, ou tem que ser um geral?
CLASSVAR seria pra carregar uma única vez, mas não sei se precisaria o libfree() ou se outros detalhes.
Também não sei se o ideal seria criar um controle com RMChart embutido, pra destruir os gráficos na saída, mas aparentemente não precisou disso.

Alguém fez testes mais detalhados, com uso maior do que uma simples janela?

Nota: como o RMChart "lembra" a janela/ID do gráfico, tudo indica que continua carregado enquanto existir janela com gráfico.
Nota2: Acabei de fazer esse teste com mais de uma janela, antes deste teste não funcionava.
Nota3: A tarja preta é pra não mostrar dados de cliente
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

Testando mais com RMChart

Mensagem por JoséQuintas »

Com certeza vai ficar totalmente incompatível com usos anteriores.

Código: Selecionar todos

   oRMChart:CreateChart( oCrt:hWnd, ID_RMC1, ... )
   oRMChart:AddRegion( ID_RMC1, ... )
   oRMChart:AddGrid( ID_RMC1, ... )
   oRMChart:AddDataAxis( ID_RMC1, ... )
   oRMChart:AddLabelAxis( ID_RMC1, ... )
   oRMChart:AddLegend( ID_RMC1, 1, ... )   
   oRMChart:AddBarSeries( ID_RMC1, ... )
   oRMChart:AddBarSeries( ID_RMC1, ... )
   oRMChart:AddBarSeries( ID_RMC1, ... )
   oRMChart:SetWatermark( RMC_USERWM, RMC_USERWMCOLOR, RMC_USERWMLUCENT, RMC_USERWMALIGN, RMC_USERFONTSIZE )
   oRMChart:Draw( ID_RMC1 )
   ID_RMC1 += 1
Nesse teste, alterei o programa pra somar 1 em ID_RMC1.
Se isso for feito na classe, vários métodos precisarão ser alterados pra usar o ID_RMC1, por isso vai ficar incompatível com usos anteriores.
Ou .... deixar como está e desprezar o ID_RMC1 que vém por parâmetro, pra continuar compatível, ou até pra comparar com outros fontes que possam aparecer usando RMChart.DLL, e que vão conter essa ID como parâmetro.

Simplificando: se numa janela usar 1, 2, 3, na outra deve usar 4,5,6, e assim por diante, só não pode ser um mesmo número.
Se controlar na própria classe... resolvido.
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

Testando mais com RMChart

Mensagem por JoséQuintas »

rmchart.png
Pronto, simplifiquei a alteração.
Uma função que retorna a próxima ID.
Limitei em 1000 gráficos simultâneos, mas nem sei se precisaria disso, porque vai ser difícil o usuário chegar nesse limite.
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

Testando mais com RMChart

Mensagem por JoséQuintas »

Antes que perguntem... NÃO PODE ser THREAD STATIC.
Mesmo em threads diferentes, o RMChart lembra do que está em uso.
Como é só leitura, nem precisa tratamento especial com mutex.
Já testei aqui e funcionou, sem precisar alterar mais nada.

Da vez anterior comentei disto:

Código: Selecionar todos

   oRMChart:Draw( nIdChart )
   //ORMChart:Reset( nIdChart )
Com o Reset() o RMChart corta o vínculo com o gráfico, e não dá erro.
Tudo bem, funciona, mas.... a partir daí, se abrir um novo gráfico 1, por exemplo, o 1 da janela anterior some.
Também seria solução se apresentar apenas um gráfico de cada vez.

Melhor ilimitado.... nunca se sabe...
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

Testando mais com RMChart

Mensagem por JoséQuintas »

Também antes que perguntem.... rs

https://github.com/JoseQuintas/wvgtst/b ... creen2.png

https://github.com/JoseQuintas/wvgtst/t ... er/rmchart

Ainda não subi a função que mencionei, apesar que cada um vai acabar criando com o nome que achar melhor.

Poderia ser um método da classe, mas não sei se o número pode zerar quando a classe ficar fora de uso.
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

Testando mais com RMChart

Mensagem por JoséQuintas »

Moleza... depois subo a alteração.

Código: Selecionar todos

   CLASSVAR ChartID INIT 0
   METHOD GetChartID()                     INLINE ::ChartID += 1, ::ChartID
E no uso:

Código: Selecionar todos

   nIdChart := oRMChart:GetChartID()
Já testei e deu certo, tanto abrir mais de um, quanto fechar as janelas e abrir uma nova.
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
Itamar M. Lins Jr.
Administrador
Administrador
Mensagens: 7928
Registrado em: 30 Mai 2007 11:31
Localização: Ilheus Bahia
Curtiu: 1 vez

Testando mais com RMChart

Mensagem por Itamar M. Lins Jr. »

Olá!
Podemos usar a DLL em OS 64Bit, e o aplicativo Harbour compilado com 64 ?
Fiquei na dúvida quanto a isso, pois acredito que não funciona.
Dai eu postar aquele exemplo usando o google chart

Saudações,
Itamar M. Lins Jr.
Saudações,
Itamar M. Lins Jr.
Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

Testando mais com RMChart

Mensagem por JoséQuintas »

Pra quem não conhece.... eu também não conhecia até pouco tempo atrás...

CLASSVAR indica uma variável que vai ser sempre a mesma, não importa quantas instâncias existem.
Isso é usado, por exemplo, na HWGUI, pra ter a lista das janelas em qualquer janela, ou dialogs em qualquer dialog CLASSVAR aWindows/aDialogs

INLINE é pra economizar... é o codeblock diretamente ao invés de criar METHOD com mais linhas
Quando chamar o GetChartID() vai somar 1 e retornar.

Seria o mesmo que fazer separado:

Código: Selecionar todos

METHOD GetChartID() CLASS RMChartClass

   ::ChartId += 1

   RETURN ::ChartID
Acaba sendo mais econômico colocar na própria declaração com INLINE.

Código: Selecionar todos

METHOD GetChardID() INLINE ::ChartId += 1, ::ChartId
Lembrando que num codeblock, os comandos são separados por vírgula, e o último vai ser o retorno.
Na compilação isso vira o codeblock.

Código: Selecionar todos

{ || ::ChartId += 1, ::ChartId }
É interessante saber, porque sempre aparece classe com isso, e... acabo de ter uma utilidade pro CLASSVAR kkkk
Itamar M. Lins Jr. escreveu:Podemos usar a DLL em OS 64Bit, e o aplicativo Harbour compilado com 64 ?
Eu vi na internet que dá pra usar DLL 32 bits em 64 bits
Agora não sei se precisaria um LoadLibrary() diferente.
Bem lembrado, porque não se sabe por quanto mais tempo teremos 32 bits.
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

Testando mais com RMChart

Mensagem por JoséQuintas »

Não consegui testar em 64 bits.
Instalei o GCC 10.2, e nele é separado pra instalar 32/64 bits
E mesmo assim, não deu certo gerar 64 bits.

Me pareceu tudo mais rápido com ele.

Nota:
Por enquanto em 32 bits só temos o limite de 4GB.
Vai depender se o sistema operacional precisar abandonar 32 bits pra evoluir.
Seria estranho criar compatibilidade com Linux, e abandonar compatibilidade com 32 bits, mas nunca se sabe.
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

Testando mais com RMChart

Mensagem por asimoes »

Quintas,

Onde eu baixo a sua classe para RmChart?
►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

Testando mais com RMChart

Mensagem por JoséQuintas »

na dúvida, no github é só procurar josequintas

tava evitando de criar muitos projetos, e como dependia da janela gtwvg, deixei junto.

https://github.com/JoseQuintas/wvgtst/t ... er/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/
Avatar do usuário
asimoes
Colaborador
Colaborador
Mensagens: 4919
Registrado em: 26 Abr 2007 16:48
Localização: RIO DE JANEIRO-RJ

Testando mais com RMChart

Mensagem por asimoes »

Quintas,

Como é que baixa a pasta?
►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

Testando mais com RMChart

Mensagem por JoséQuintas »

asimoes escreveu:Quintas,
Como é que baixa a pasta?
Só junto com wvgtst, porque precisava da janela pro exemplo funcionar.
Depois vou ver o que fazer.

Até que meu conjunto tá aumentando, nem percebi isso:
Tem sefazclass, pdfclass, rmchartclass, wvgtst

Vou ver o que fazer.
Talvez deixar separado, e mais um projeto indicando os outros como subprojetos.
Quem quiser baixa separado, ou o central com tudo junto.
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/
Responder