RMChart
Moderador: Moderadores
- JoséQuintas
- Administrador

- Mensagens: 20267
- Registrado em: 26 Fev 2007 11:59
- Localização: São Paulo-SP
RMChart
Vamos fazer este gráfico sem usar RMChart pra ver quanto tempo demora?
Só vou mexer amanhã no final do dia, mas parece fácil.
Só vou mexer amanhã no final do dia, mas parece fácil.
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/
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/
- JoséQuintas
- Administrador

- Mensagens: 20267
- Registrado em: 26 Fev 2007 11:59
- Localização: São Paulo-SP
RMChart
Como deve lembrar, a rotina do DOS imprimia um caractere por vez no gráfico.
Tive que alterar os cálculos, mas ainda não estão certos.
Vou ter que verificar como colocar um controle encima do outro, pra poder aparecer o zebrado de fundo.
E a cor gradiente, com várias tonalidades, também tenho que checar, é um recurso do Windows.
O primeiro rascunho, com cálculos errados. (capturei as mesmas cores do RMChart)
Não se engane, aí não tem nenhum SAY. Até alterei o fonte pra ficar um pouquinho diferente.
Já dá pra perceber que a questão é só ajustar cálculos e alguns detalhes.
Comparado com a briga pra fazer o RMChart funcionar.... rs
Tive que alterar os cálculos, mas ainda não estão certos.
Vou ter que verificar como colocar um controle encima do outro, pra poder aparecer o zebrado de fundo.
E a cor gradiente, com várias tonalidades, também tenho que checar, é um recurso do Windows.
O primeiro rascunho, com cálculos errados. (capturei as mesmas cores do RMChart)
Não se engane, aí não tem nenhum SAY. Até alterei o fonte pra ficar um pouquinho diferente.
Já dá pra perceber que a questão é só ajustar cálculos e alguns detalhes.
Comparado com a briga pra fazer o RMChart funcionar.... rs
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/
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/
- JoséQuintas
- Administrador

- Mensagens: 20267
- Registrado em: 26 Fev 2007 11:59
- Localização: São Paulo-SP
RMChart
No final, talvez os retângulos até simplifiquem os cálculos pra montar o gráfico.
Digamos que os retângulos serão a largura da tela / 12
O gráfico pode usar os retângulos de referência, então os internos seriam largura do retângulo / 3
E a posição, seria a mesma do retângulo + coluna
Isso descontando o espaço nas laterais.
Ainda não pensei quando misturar valor negativo e positivo.
Mas pra altura das barras, também simples: pegar o maior valor pra referência, multiplicar por 1.2 pra ter margem de reserva no gráfico.
A altura da barra pode ser calculada por: ValorMaximo / altura da tela * ValorDaColuna
Tanto faz calcular por linhas/colunas ou coordenadas, no Harbour 3.4 já aceita decimais.
Digamos que os retângulos serão a largura da tela / 12
O gráfico pode usar os retângulos de referência, então os internos seriam largura do retângulo / 3
E a posição, seria a mesma do retângulo + coluna
Isso descontando o espaço nas laterais.
Ainda não pensei quando misturar valor negativo e positivo.
Mas pra altura das barras, também simples: pegar o maior valor pra referência, multiplicar por 1.2 pra ter margem de reserva no gráfico.
A altura da barra pode ser calculada por: ValorMaximo / altura da tela * ValorDaColuna
Tanto faz calcular por linhas/colunas ou coordenadas, no Harbour 3.4 já aceita decimais.
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/
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/
- JoséQuintas
- Administrador

- Mensagens: 20267
- Registrado em: 26 Fev 2007 11:59
- Localização: São Paulo-SP
RMChart
Não vai acreditar:
Problema parecido com o do RMChart.
Ao que parece, a janela da GTWVG não trata cada controle como deveria.
Ao montar a tela
E ao mover a janela, os controles que deveriam ficar na frente ficam aparecendo/sumindo.
Tudo indica que a janela console atualiza sempre tudo.
Na prática, deveria atualizar somente os controles dentro dela, e os controles dentro dela atualizarem os que estão dentro deles.
É provável que tenha atualização desativada, pra evitar algo como "sobrecarga" de atualizações de tela.
Isso pode ser uma boa notícia, porque se isso for resolvido, já resolve o activex também.
Problema parecido com o do RMChart.
Ao que parece, a janela da GTWVG não trata cada controle como deveria.
Ao montar a tela
E ao mover a janela, os controles que deveriam ficar na frente ficam aparecendo/sumindo.
Tudo indica que a janela console atualiza sempre tudo.
Na prática, deveria atualizar somente os controles dentro dela, e os controles dentro dela atualizarem os que estão dentro deles.
É provável que tenha atualização desativada, pra evitar algo como "sobrecarga" de atualizações de tela.
Isso pode ser uma boa notícia, porque se isso for resolvido, já resolve o activex também.
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/
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/
RMChart
Valeu Quintas,
Se você poder contribuir algo mais simples que rmchart, facilita muito.
Se você poder contribuir algo mais simples que rmchart, facilita muito.
►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)
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)
- JoséQuintas
- Administrador

- Mensagens: 20267
- Registrado em: 26 Fev 2007 11:59
- Localização: São Paulo-SP
RMChart
Estou tentando achar uma fórmula legal pra não ficar mostrando números quebrados na lateral mas ainda não cheguei numa ideal.
Exemplo, para os números:
mas para os números:
Os parâmetros passados são estes:
Não queria ficar mostrando números muito "quebrados". nessa barra.
No segundo gráfico sobrou muito espaço.
Nota: no RMChart o próprio usuário define um valor, e sai "quebrado".
Exemplo, para os números:
Código: Selecionar todos
FOR nCont = 1 TO 12
AAdd( oGrafico:aValues[ 1 ], 125 )
AAdd( oGrafico:aValues[ 2 ], 240 )
AAdd( oGrafico:aValues[ 3 ], 215 )
NEXT
Código: Selecionar todos
FOR nCont = 1 TO 12
AAdd( oGrafico:aValues[ 1 ], 125 )
AAdd( oGrafico:aValues[ 2 ], 240 )
AAdd( oGrafico:aValues[ 3 ], 300 )
NEXT
Código: Selecionar todos
PROCEDURE Test
LOCAL nCont, oGrafico
SetMode(40,80)
CLS
oGrafico := BarChart():New()
oGrafico:cTxtTitle := "TESTE DE GRAFICO 2016"
oGrafico:aTxtBarList := { "JANEIRO", "FEVEREIRO", "MARCO", "ABRIL", "MAIO", "JUNHO", "JULHO", "AGOSTO", "SETEMBRO", "OUTUBRO", "NOVEMBRO", "DEZEMBRO" }
oGrafico:aTxtSubList := { "ENTRADA", "SAIDA", "OUTRA" }
oGrafico:aValues := { {}, {}, {} }
FOR nCont = 1 TO 12
AAdd( oGrafico:aValues[ 1 ], 125 )
AAdd( oGrafico:aValues[ 2 ], 240 )
AAdd( oGrafico:aValues[ 3 ], 300 )
NEXT
oGrafico:Show()
Inkey(0)
RETURN
No segundo gráfico sobrou muito espaço.
Nota: no RMChart o próprio usuário define um valor, e sai "quebrado".
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/
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/
- JoséQuintas
- Administrador

- Mensagens: 20267
- Registrado em: 26 Fev 2007 11:59
- Localização: São Paulo-SP
RMChart
Por enquanto, após muito trabalho tentando eliminar partes inúteis e que não tem nada a ver com o RMChart, cheguei a uma versão que....
que.... digamos que "funciona"..... tem o mesmo bug do demo completo.
coisa à toa... rs... 6 threads durante o uso do programa, e SETE threads ao fechar tudo, sendo necessário o gerenciador de tarefas pra fechar essas threads.
Ainda tentando reduzir mais.
Por exemplo... ao retirar a toolbar da tela, trava tudo.
Que raios tem a ver a toolbar com o restante?
Se tem a ver, porque -w3 -es2 não acusou o uso dessa variável em outro lugar?
Nota:
O demowvg faz uso intensivo de funções wvt* e wvg_* (com traço).
Sempre achei essas coisas esquisitas, e nunca usei.
que.... digamos que "funciona"..... tem o mesmo bug do demo completo.
coisa à toa... rs... 6 threads durante o uso do programa, e SETE threads ao fechar tudo, sendo necessário o gerenciador de tarefas pra fechar essas threads.
Ainda tentando reduzir mais.
Por exemplo... ao retirar a toolbar da tela, trava tudo.
Que raios tem a ver a toolbar com o restante?
Se tem a ver, porque -w3 -es2 não acusou o uso dessa variável em outro lugar?
Nota:
O demowvg faz uso intensivo de funções wvt* e wvg_* (com traço).
Sempre achei essas coisas esquisitas, e nunca usei.
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/
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/
- JoséQuintas
- Administrador

- Mensagens: 20267
- Registrado em: 26 Fev 2007 11:59
- Localização: São Paulo-SP
RMChart
A toolbar é o único controle que causa a "pausa", impede que o dialog contendo o gráfico seja fechado.
E uma messagebox() não vinculada à janela permite que ela seja movida ou redimensionada.
Por enquanto foi o que deu.
Dá pra dizer que está melhor que o original, porque agora basta clicar no Ok, sem precisar do gerenciador de tarefas pra fechar a força.
A título de curiosidade, existem cinco tipos de "tela" na GTWVG:
sem janela, que é o default, nenhuma janela até que ocorra alguma operação de tela.
WVG - a janela estilo console, que é a default após alguma alteração de tela, e que não tem controle total sobre componentes gráficos
WGU - a janela usada pra dialog, que não tem teclado/tela estilo console, portanto nem Inkey(0) tem
WVT - a janela dos controles WVT.
janela normal Windows - a janela usada para os controles WVG
Esse exemplo mistura "sem janela" com "WGU" e janela comum Windows, apesar de não parecer.
E uma messagebox() não vinculada à janela permite que ela seja movida ou redimensionada.
Por enquanto foi o que deu.
Dá pra dizer que está melhor que o original, porque agora basta clicar no Ok, sem precisar do gerenciador de tarefas pra fechar a força.
Código: Selecionar todos
#include "inkey.ch"
#include "setcurs.ch"
#include "hbgtinfo.ch"
#include "hbver.ch"
#define RMC_CTRLSTYLEFLAT 0
#define RMC_PIE_GRADIENT 52
#define RMC_FULL 1
#define RMC_EXPLODE_NONE 0
#define RMC_VLABEL_ABSOLUTE 6
#define RMC_HATCHBRUSH_OFF 0
PROCEDURE Main()
LOCAL oCrt, oTBar, oRMChart, oDA, oRegion, oChart, oCaption
oCrt := WvgDialog():new( , , { 30, 30 }, { 800, 600 }, , .T. )
oCrt:closable := .T.
oCrt:create()
oDA := oCrt:drawingArea
oTBar := BuildWvgToolBar( oDA )
oDA:resize := {|| ResizeDialog( oCrt, oTBar, oRMChart ) }
oRMChart := WvgActiveXControl():New( oDA, , { 0, 0 }, { 100, 100 }, , .T. )
hb_gtInfo( HB_GTI_WINTITLE, "RM Chart [ <F12> Attributes <F11> Next Charts ]" )
oRMChart:CLSID := "RMChart.RMChartX"
oRMChart:create()
oCrt:sendMessage( WIN_WM_SIZE, 0, 0 )
oCrt:show()
oRmChart:Font := "Tahoma"
oRmChart:RMCStyle := RMC_CTRLSTYLEFLAT
oRmChart:AddRegion()
oRegion := oRmChart:Region( 1 )
oRegion:Footer := hb_Version( HB_VERSION_URL_BASE )
oRegion:AddCaption()
oCaption := oRegion:Caption()
oCaption:Titel := "RMChart Demo"
oCaption:FontSize := 10
oCaption:Bold := .T.
oRegion:AddGridlessSeries()
oChart := oRegion:GridLessSeries
oChart:SeriesStyle := RMC_PIE_GRADIENT
oChart:Alignment := RMC_FULL
oChart:Explodemode := RMC_EXPLODE_NONE
oChart:Lucent := .F.
oChart:ValueLabelOn := RMC_VLABEL_ABSOLUTE
oChart:HatchMode := RMC_HATCHBRUSH_OFF
oChart:StartAngle := 0
oChart:DataString := "10*5*20*25"
wapi_MessageBox( , "fechar Grafico", "Fechar Grafico", WIN_MB_ICONASTERISK )
oCrt:Destroy()
RETURN
STATIC FUNCTION ResizeDialog( oCrt, oTBar, oRMChart )
LOCAL aCrt := oCrt:currentSize()
LOCAL aTBar := oTBar:currentSize()
LOCAL nT := aTBar[ 2 ]
LOCAL nH := aCrt[ 2 ] - aTBar[ 2 ]
oRMChart:setPosAndSize( { 0, nT }, { aCrt[ 1 ], nH }, .T. )
RETURN 1
FUNCTION BuildWvgToolBar( oDA )
LOCAL oTBar := WvgToolBar():new( oDA, , { 0, 0 }, { oDA:currentSize()[ 1 ], 30 }, , .T. )
oTBar:style := WVGTOOLBAR_STYLE_FLAT
oTBar:borderStyle := WVGFRAME_RECT
oTBar:buttonWidth := 40 // 28
oTBar:buttonHeight := 26
oTBar:imageWidth := 26
oTBar:imageHeight := 24
oTBar:showToolTips := .T.
oTBar:create()
RETURN oTBar
PROCEDURE hb_GTSYS()
REQUEST HB_GT_WVG_DEFAULT
REQUEST HB_GT_WGU
RETURN
sem janela, que é o default, nenhuma janela até que ocorra alguma operação de tela.
WVG - a janela estilo console, que é a default após alguma alteração de tela, e que não tem controle total sobre componentes gráficos
WGU - a janela usada pra dialog, que não tem teclado/tela estilo console, portanto nem Inkey(0) tem
WVT - a janela dos controles WVT.
janela normal Windows - a janela usada para os controles WVG
Esse exemplo mistura "sem janela" com "WGU" e janela comum Windows, apesar de não parecer.
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/
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/
- JoséQuintas
- Administrador

- Mensagens: 20267
- Registrado em: 26 Fev 2007 11:59
- Localização: São Paulo-SP
RMChart
Como é que eu sei dessas janelas, é de tanto ficar pesquisando os fontes:
Criação de wvgCrt:
criação de wvgDialog:
criação dos demais controles:
Criação de wvgCrt:
Código: Selecionar todos
hb_gtReload( "WVG" )
Código: Selecionar todos
hb_gtReload( "WGU" )
Código: Selecionar todos
hWnd := wapi_CreateWindowEx( ;
::exStyle, ;
::className(), ;
"", ; /* window name */
::style, ;
aPosSz[ 1 ], aPosSz[ 2 ], ;
aPosSz[ 3 ], aPosSz[ 4 ], ;
::oParent:hWnd, ;
::nID, ; /* hMenu */
NIL, ; /* hInstance */
NIL ) /* lParam */
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/
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/
RMChart
Quintas,
Então temos duas situações com relação ao rmchart:
Usando a dll não temos o problema de mover e redimensionar a tela, mas não conseguimos resolver o problema da AddBarSeries, provavelmente com outros métodos.
Com activex
Temos o problema de movimento de tela
Então temos duas situações com relação ao rmchart:
Usando a dll não temos o problema de mover e redimensionar a tela, mas não conseguimos resolver o problema da AddBarSeries, provavelmente com outros métodos.
Com activex
Temos o problema de movimento de tela
►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)
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)
- JoséQuintas
- Administrador

- Mensagens: 20267
- Registrado em: 26 Fev 2007 11:59
- Localização: São Paulo-SP
RMChart
Este último funciona 100%
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/
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/
RMChart
Quintas,
Não dá pra entender esse parâmetro nFirstDataValue, diz que tem que ser o primeiro valor de um array de uma dimensão
? já tentei vários e nada, inclusive aquele com typedef struct { CTYPE_DOUBLE nDouble[12] } DataStructD12
Isso só funciona com fivewin? que meleca.
The first element of an one-dimensional array, which holds the series data.
Não dá pra entender esse parâmetro nFirstDataValue, diz que tem que ser o primeiro valor de um array de uma dimensão
Isso só funciona com fivewin? que meleca.
The first element of an one-dimensional array, which holds the series data.
RMC_AddBarSeries function.
Add a bar chart series to a region of an existing chart
--------------------------------------------------------------------------------
Syntax
nResult (LONG) = RMC_AddBarSeries(
ByVal nCtrlId (LONG),
ByVal nRegion (LONG),
Optional ByRef nFirstDataValue (DOUBLE),
Optional ByVal nDataValuesCount (LONG),
Optional ByVal nType (LONG),
Optional ByVal nStyle (LONG),
Optional ByVal nIsLucent (LONG),
Optional Byval nColor (LONG),
Optional ByVal nIsHorizontal (LONG),
Optional ByVal nWhichDataAxis (LONG),
Optional ByVal nValueLabelOn (LONG),
Optional ByVal nPointsPerColumn (LONG),
Optional ByVal nHatchMode (LONG)
)
Parameter
nCtrlId (LONG)
Unique ID of the chart control, to which the series belongs.
nRegion (LONG)
Region to which the series belongs.
nFirstDataValue (DOUBLE)
The first element of an one-dimensional array, which holds the series data. If you want to add the data later with RMC_SetSeriesData(), simply pass 0.
Please note one anomaly: If the type of the series is RMC_FLOATINGBAR or RMC_FLOATINGBARGROUP, you must pass for each single bar a pair of two data values, where the first value holds the starting point of the bar and the second value holds the data which determines the length of the bar. Example: Imagine the data axis has a range from 1 to 10 and you want to draw a floating bar which starts at 2 and ends at 9. In this case you must pass the data pair 2,7 for this bar.
►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)
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)
RMChart
Agora eu não entendi mais nada, passei uma string pro campo, aceitou e fez uma barra maluca
aData[1]:="10.5"
oChart:AddBarSeries( ID_CHART, 1, aData[1], 5, RMC_BARSINGLE, RMC_BAR_FLAT_GRADIENT2, .F., 0, .F., 1, RMC_VLABEL_NONE, 1, RMC_HATCHBRUSH_OFF )
aData[1]:="10.5"
oChart:AddBarSeries( ID_CHART, 1, aData[1], 5, RMC_BARSINGLE, RMC_BAR_FLAT_GRADIENT2, .F., 0, .F., 1, RMC_VLABEL_NONE, 1, RMC_HATCHBRUSH_OFF )
►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)
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)
- JoséQuintas
- Administrador

- Mensagens: 20267
- Registrado em: 26 Fev 2007 11:59
- Localização: São Paulo-SP
RMChart
Se pesquisar array double em C, os valores são armazenados na memória em sequencial.
Então a partir da posição do primeiro elemento já encontra todos.
O double deve ser composto de determinada quantidade de bytes, e talvez tenha gerado isso sem querer... rs
Então a partir da posição do primeiro elemento já encontra todos.
O double deve ser composto de determinada quantidade de bytes, e talvez tenha gerado isso sem querer... rs
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/
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/
RMChart
É pessoal,
Foi bola na trave usando dll sem o sData
A solução por enquanto é utilizando sData
Foi bola na trave usando dll sem o sData
A solução por enquanto é utilizando sData
Código: Selecionar todos
sData:=""
sData += "00003600|00004450|000051|000061|000071|00008-984833|00009412|00011Tahoma|100011|"
sData += "100021|100035|100045|10005-5|10006-5|1000910|100101|100111|100131|100181|1002010|"
sData += "10021100|1002211|100238|100331|100341|1003520|100378|100482|100491|10051-8388652|"
sData += "10052-16777216|10053-657956|100541|100558|10056-16777216|10057-16777216|10060-"
sData += "16777216|10061-16777216|10063-1|100651|10181 *** Gráfico Teste ***|10184Em Milhões de Reais|102010.00*10."
sData += "00*20.00*30.00*40.00*50.00*60.00*70.00*80.00*90.00*100.00|110011|1100221|110035|"
sData += "1100424|110051|110062|110071|110091|110121|110131|1101421|110152|110171|11019-16"
sData += "776961|1102115|110221|110235|110261|11053"
sData += "15*25*30*22*75"
sData += "|120011|1200221|1200424|120062|120121|1201421|12019-65536|1202115|120221|120235|120261|12053"
sData += "10*15*40*20*31"
nWidth :=600
nHeight:=450
RmChart22( "Grafico", sData, nWidth, nHeight )
[code]
#include "windows.ch"
#include "hwgui.ch"
#include "common.ch"
#include "guilib.ch"
#include "rmchart.ch"
#include "hbdyn.ch"
#define ID_CHART 1001
#define RMC_DEFAULT 0
#define RMC_PORTRAIT 1
#define RMC_LANDSCAPE 2
FUNCTION RmChart22( cTitulo, sData, nWidth, nHeight )
LOCAL nHandleDLL
LOCAL oIcon := HIcon():AddResource("ICON_A")
hb_Default(@cTitulo, "Gráfico")
nHandleDLL:=hb_LibLoad("rmchart.dll")
oFont := HFont():Add( "Courier New", 9)
nStyle := DS_CENTER + WS_SYSMENU + WS_VISIBLE
INIT DIALOG oModDlg TITLE cTitulo ;
ICON oIcon ;
AT 0, 0 ;
SIZE nWidth + 30, nHeight + 100 ;
STYLE nStyle ;
FONT oFont ;
CLIPPER ;
ON INIT { | oDlg | oDlg:nInitFocus := oSair, ViewChart(oDlg, nHandleDLL, sData) }
x1 := Int( oModDlg:nWidth/2 ) - 110
y1 := Int( oModDlg:nHeight) - 70
@ x1, y1 OWNERBUTTON oOk SIZE 100, 30 ;
TEXT "Imprimir" COORDINATES 35, 0, 0, 0 ;
FONT HFont():Add( "Arial", 0, -13,550 ) ;
BITMAP "IMG\IOK.BMP" COORDINATES 5, 0, 0, 0 TRANSPARENT ;
ON CLICK { || ChartPrint(nHandleDLL), oModDlg:lResult := .T. } ;
TOOLTIP "Ir para a página selecionada." ;
THEMED
@ x1 + 115, y1 OWNERBUTTON oSair SIZE 100, 30 ;
TEXT "RmChart" COORDINATES 35, 0, 0, 0 ;
FONT HFont():Add( "Arial", 0, -13, 550 ) ;
BITMAP "IMG\IEXIT.BMP" COORDINATES 5, 0, 0, 0 TRANSPARENT ;
ON CLICK { || ViewChart(oModDlg, nHandleDLL, sData) } ;
TOOLTIP "Abandonar a seleção." ;
THEMED
oModDlg:Activate(.F.) // .T. = NOMODAL, .F. ou () = MODAL
RETURN oModDlg
FUNCTION ViewChart(oDlg, nHandleDLL, sData)
nRetVal:=hb_dynCall( { "RMC_CREATECHARTFROMFILE", nHandleDLL, hb_bitOr( HB_DYN_CTYPE_LONG , HB_DYN_CALLCONV_STDCALL ) }, oDlg:handle, ID_CHART, 10, 10, 0, sData)
nRetVal:=hb_dynCall( { "RMC_DRAW", nHandleDLL, hb_bitOr( HB_DYN_CTYPE_LONG , HB_DYN_CALLCONV_STDCALL ) }, ID_CHART)
nRetVal:=hb_dynCall( { "RMC_DRAW2CLIPBOARD", nHandleDLL, hb_bitOr( HB_DYN_CTYPE_LONG , HB_DYN_CALLCONV_STDCALL ) }, ID_CHART, RMC_BMP )
RETURN Nil
FUNCTION ChartPrint(nHandleDLL)
// Para imprimir:
nRetVal:=hb_dynCall( { "RMC_DRAW2PRINTER", nHandleDLL, hb_bitOr( HB_DYN_CTYPE_LONG , HB_DYN_CALLCONV_STDCALL ) }, ID_CHART, RMC_LANDSCAPE, 10, 10, 250, 150, RMC_EMF )
RETURN nRetVal
►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)
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)
