Clipper On Line • Ver Tópico - Testando mais com RMChart

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

 

Testando mais com RMChart

Mensagempor JoséQuintas » 23 Nov 2020 20:55

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.

   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, multithread, dbfcdx, ADO+MySql, PNotepad
"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 de usuário

JoséQuintas
Membro Master

Membro Master
 
Mensagens: 18010
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 15 vezes
Mens.Curtidas: 1206 vezes

Testando mais com RMChart

Mensagempor JoséQuintas » 23 Nov 2020 21:10

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

   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, multithread, dbfcdx, ADO+MySql, PNotepad
"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 de usuário

JoséQuintas
Membro Master

Membro Master
 
Mensagens: 18010
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 15 vezes
Mens.Curtidas: 1206 vezes

Testando mais com RMChart

Mensagempor JoséQuintas » 23 Nov 2020 21:53

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, multithread, dbfcdx, ADO+MySql, PNotepad
"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 de usuário

JoséQuintas
Membro Master

Membro Master
 
Mensagens: 18010
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 15 vezes
Mens.Curtidas: 1206 vezes

Testando mais com RMChart

Mensagempor JoséQuintas » 23 Nov 2020 22:03

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:

   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, multithread, dbfcdx, ADO+MySql, PNotepad
"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 de usuário

JoséQuintas
Membro Master

Membro Master
 
Mensagens: 18010
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 15 vezes
Mens.Curtidas: 1206 vezes

Testando mais com RMChart

Mensagempor JoséQuintas » 23 Nov 2020 22:12

Também antes que perguntem.... rs

https://github.com/JoseQuintas/wvgtst/blob/master/rmchart/printscreen2.png

https://github.com/JoseQuintas/wvgtst/tree/master/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, multithread, dbfcdx, ADO+MySql, PNotepad
"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 de usuário

JoséQuintas
Membro Master

Membro Master
 
Mensagens: 18010
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 15 vezes
Mens.Curtidas: 1206 vezes

Testando mais com RMChart

Mensagempor JoséQuintas » 23 Nov 2020 22:22

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

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


E no uso:

   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, multithread, dbfcdx, ADO+MySql, PNotepad
"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 de usuário

JoséQuintas
Membro Master

Membro Master
 
Mensagens: 18010
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 15 vezes
Mens.Curtidas: 1206 vezes

Testando mais com RMChart

Mensagempor Itamar M. Lins Jr. » 23 Nov 2020 22:32

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.
Avatar de usuário

Itamar M. Lins Jr.
Colaborador

Colaborador
 
Mensagens: 6927
Data de registro: 30 Mai 2007 11:31
Cidade/Estado: Ilheus Bahia
Curtiu: 309 vezes
Mens.Curtidas: 503 vezes

Testando mais com RMChart

Mensagempor JoséQuintas » 23 Nov 2020 22:38

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:

METHOD GetChartID() CLASS RMChartClass

   ::ChartId += 1

   RETURN ::ChartID


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

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.

{ || ::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, multithread, dbfcdx, ADO+MySql, PNotepad
"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 de usuário

JoséQuintas
Membro Master

Membro Master
 
Mensagens: 18010
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 15 vezes
Mens.Curtidas: 1206 vezes

Testando mais com RMChart

Mensagempor JoséQuintas » 24 Nov 2020 21:13

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, multithread, dbfcdx, ADO+MySql, PNotepad
"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 de usuário

JoséQuintas
Membro Master

Membro Master
 
Mensagens: 18010
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 15 vezes
Mens.Curtidas: 1206 vezes

Testando mais com RMChart

Mensagempor asimoes » 01 Dez 2020 19:30

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 de usuário

asimoes
Colaborador

Colaborador
 
Mensagens: 4919
Data de registro: 26 Abr 2007 16:48
Cidade/Estado: RIO DE JANEIRO-RJ
Curtiu: 341 vezes
Mens.Curtidas: 258 vezes

Testando mais com RMChart

Mensagempor JoséQuintas » 01 Dez 2020 20:46

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/tree/master/rmchart
José M. C. Quintas
Harbour 3.2, mingw, gtwvg, multithread, dbfcdx, ADO+MySql, PNotepad
"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 de usuário

JoséQuintas
Membro Master

Membro Master
 
Mensagens: 18010
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 15 vezes
Mens.Curtidas: 1206 vezes

Testando mais com RMChart

Mensagempor asimoes » 01 Dez 2020 21:53

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 de usuário

asimoes
Colaborador

Colaborador
 
Mensagens: 4919
Data de registro: 26 Abr 2007 16:48
Cidade/Estado: RIO DE JANEIRO-RJ
Curtiu: 341 vezes
Mens.Curtidas: 258 vezes

Testando mais com RMChart

Mensagempor JoséQuintas » 02 Dez 2020 10:38

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, multithread, dbfcdx, ADO+MySql, PNotepad
"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 de usuário

JoséQuintas
Membro Master

Membro Master
 
Mensagens: 18010
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 15 vezes
Mens.Curtidas: 1206 vezes




Retornar para Contribuições, Dicas e Tutoriais

Quem está online

Usuários vendo este fórum: Nenhum usuário registrado online e 11 visitantes


Ola Amigo, espero que meu site e forum tem lhe beneficiado, com exemplos e dicas de programacao.
Entao divulgue o link da Doacao abaixo para seus amigos e redes sociais ou faça uma doacao para o site forum...
MUITO OBRIGADO PELA SUA DOACAO!
Faça uma doação para o forum
cron
v
Olá visitante, seja bem-vindo ao Fórum Clipper On Line!
Efetue o seu login ou faça o seu Registro