Page 1 of 1

C STRUCTURE

Posted: Tue Mar 19, 2013 6:55 pm
by aferra
buenas tardes



en xHarbour lo hago y funciona muy bien

#include "FiveWin.Ch"
#include "cstruct.ch"

typedef struct { CTYPE_DOUBLE nDouble[200] } DataStructD12

function testes()

LOCAL oData1 IS DataStructD12

etc.....

return nil

Harbour ahora da este error en el archivo cstruct.ch

#xcommand END C STRUCTURE [<!stru!>] => ; ;
__ClsSetModule( __ActiveStructure() ); ;
RETURN
Error: Unresolved external '_HB_FUN___CLSSETMODULE'

Alguien sabe cómo cambiar para que funcione correctamente?

Alguien sabe cómo cambiar para que funcione correctamente?

gracias

Re: C STRUCTURE

Posted: Tue Mar 19, 2013 7:41 pm
by Antonio Linares
Lo acabo de reportar en la lista de desarrollo de Harbour, a ver cual sería la forma correcta de reemplazar esa función:

https://groups.google.com/forum/?fromgr ... iUBBXPAOpc

Re: C STRUCTURE

Posted: Tue Mar 19, 2013 10:17 pm
by Antonio Linares
Problema solucionado:

No puedes usar cstruct.ch de xHarbour, sino el que proporciona Harbour:

https://github.com/harbour/core/blob/ma ... cstruct.ch

Con ese, funciona bien :-)

Re: C STRUCTURE

Posted: Wed Mar 20, 2013 11:47 am
by aferra
Gracias Antonio, casi todo está funcionando, sólo la parte que no muestra los gráficos, creo que se debe a tActivex, al Harbour que se debe usar?

Utilizo RmChart para visualizar las gráficas.

Saludos

Re: C STRUCTURE

Posted: Wed Mar 20, 2013 11:50 am
by Antonio Linares
Puedes proporcionar un PRG de ejemplo de como usas RmChart, para que podamos probarlo y ver que le ocurre ? gracias :-)

Re: C STRUCTURE

Posted: Wed Mar 20, 2013 12:38 pm
by aferra
Gracias, sigue el ejemplo que funciona con xHarbour

Code: Select all

#include "FiveWin.Ch"
#include "cstruct.ch"
#include "RMCHART.Ch"

#define DLL_OSAPI 0x20

typedef struct { CTYPE_DOUBLE nDouble[12] } DataStructD12

FUNCTION TesteGrafico()
LOCAL aDados := { { 225.25, 100.00, 100.00, 150.00, 250.00, 300.00, 25.00, 75.00, 300.00, 200.00, 325.00, 300.00 } , { 220.00, 100.00, 125.00, 300.00, 150.00, 125.00, 85.00, 50.00, 285.00, 275.00, 295.00, 280.00 }, { 125.25, 100.00, 100.00, 150.00, 250.00, 300.00, 25.00, 75.00, 300.00, 200.00, 325.00, 300.00 } }
LOCAL cLegenda := "Entradas*Saidas*Mais Um"
LOCAL cLabels := "Janeiro*Fevereiro*Março*Abril*Maio*Junho*Julho*Agosto*Setembro*Outubro*Novembro*Dezembro"
LOCAL cTitulo := "Grafico de Teste Grafico"
PRIVATE hDll := DllLoad("rmchart.dll")

    DEFINE DIALOG oDlgGra1 FROM 0,0 TO 400,770 PIXEL FONT oClassVar:oFntB COLOR oClassVar:nCorDlgT,oClassVar:nCorDlgJ
        oDlgGra1:lHelpIcon := .F.

        oChart := TActiveX():New( oDlgGra1, "RMChart.RMChartX", 0, 0, 0, 0 )

   ACTIVATE DIALOG oDlgGra1 CENTER ON INIT GeraRmc( oDlgGra1, oChart, aDados, cTitulo, cLabels, cLegenda )

    DllUnload( hDLL )

RETURN NIL

FUNCTION GeraRmc( oDlgGra, oChart, aDados, cTitulo, cLabels, cLegenda )
LOCAL nRetVal := nMax := 0
LOCAL cImagem := "" //"C:\SIG32new\Bitmaps\Paper.jpg"
LOCAL cUnidade := "R$ "
LOCAL cTextoVert := ""
LOCAL aDadosGraf:={}
LOCAL oData1 IS DataStructD12
LOCAL oData2 IS DataStructD12
LOCAL oData3 IS DataStructD12

FOR cTrGra1:=1 TO LEN( aDados )

    nMax := MAX( nMax, Amax( aDados[cTrGra1] ) )

    FOR cTrGra2:=1 TO LEN( aDados[cTrGra1] )

        IF cTrGra1 == 1
            oData1:nDouble[cTrGra2] := aDados[cTrGra1,cTrGra2]
        ELSEIF cTrGra1 == 2
            oData2:nDouble[cTrGra2] := aDados[cTrGra1,cTrGra2]
        ELSEIF cTrGra1 == 3
            oData3:nDouble[cTrGra2] := aDados[cTrGra1,cTrGra2]
        ENDIF

    NEXT

    IF cTrGra1 == 1
        AADD( aDadosGraf, oData1[1] )
    ELSEIF cTrGra1 == 2
        AADD( aDadosGraf, oData2[1] )
    ELSEIF cTrGra1 == 3
        AADD( aDadosGraf, oData3[1] )
    ENDIF

NEXT

nMax := ROUND( ( INT( nMax/10 ) * 10 ) + 10 , 2 )

nRetVal := DllCall(hDll,DLL_OSAPI,"RMC_CREATECHART", oDlgGra:hWnd, 1001, 0, 0, 770, 400, ColorAzure, RMC_CTRLSTYLE3DLIGHT, .F., cImagem, "", 0, 0 )
nRetVal := DllCall(hDll,DLL_OSAPI,"RMC_ADDREGION", 1001, 0, 0, 760, 400, "Sig SoftWare", .F. )
nRetVal := DllCall(hDll,DLL_OSAPI,"RMC_ADDCAPTION", 1001, 1, cTitulo, ColorTransparent, ColorRed, 9, .T. )
nRetVal := DllCall(hDll,DLL_OSAPI,"RMC_ADDGRID", 1001, 1, ColorLightBlue, .F., 20, 20, 685, 330, RMC_BICOLOR_LABELAXIS )
nRetVal := DllCall(hDll,DLL_OSAPI,"RMC_ADDLABELAXIS", 1001, 1, cLabels, 1, LEN( aDados[1] ), RMC_LABELAXISBOTTOM, 8, ColorBlack, RMC_TEXTCENTER, ColorBlack, RMC_LINESTYLENONE, "" )
nRetVal := DllCall(hDll,DLL_OSAPI,"RMC_ADDDATAAXIS", 1001, 1, RMC_DATAAXISRIGHT, 0.0, nMax, LEN( aDados[1] ), 8, ColorBlack, ColorBlack, RMC_LINESTYLESOLID, 0, cUnidade, cTextoVert, "", RMC_TEXTCENTER )

FOR x:=1 TO LEN(aDadosGraf)
    nRetVal := DllCall(hDll,DLL_OSAPI,"RMC_ADDBARSERIES", 1001, 1, aDadosGraf[x], 12, RMC_BARGROUP, RMC_BAR_FLAT_GRADIENT2, .F., 0, .F., 1, RMC_VLABEL_NONE, x, RMC_HATCHBRUSH_ONPRINTING )
NEXT

nRetVal := DllCall(hDll,DLL_OSAPI,"RMC_ADDLEGEND", 1001, 1, cLegenda, RMC_LEGEND_BOTTOM, ColorTransparent, RMC_LEGENDNORECT, ColorRed, 8, .T. )
nRetVal := DllCall(hDll,DLL_OSAPI,"RMC_DRAW", 1001 )

RETURN NIL
///////////////////////////////////////////////////////////////////////////////////////
//                                                                                   //
///////////////////////////////////////////////////////////////////////////////////////
FUNCTION ImprimeGrafico( oDlgGra )

nRetVal := DllCall(hDll,DLL_OSAPI,"RMC_DRAW2PRINTER", 1001, oDlgGra:hWnd, 0, 0, 0, 0, RMC_EMF )
?nRetVal

RETURN NIL

////////////////////////////DADOS DA FUNCAO////////////////////////////////////////////
// NOME       : aMax                                                                 //
// SINTESE    : Retornar o maior valor de um vetor                                   //
// PARAMETROS : <1> aVetor                                                           //
//              <2> nElemento (para vetores multimensionais)                         //
// RETORNO    : xMaior elemento do vetor                                             //
///////////////////////////////////////////////////////////////////////////////////////
function aMax( aVetor, nElem )

local aNovoVet
local xMaxElem

DEFAULT nElem:=0

aNovoVet:=aclone( aVetor )
if nElem=0
        aNovoVet:=asort( aNovoVet )
        xMaxElem:=aNovoVet[len(aNovoVet)]
else
        aNovoVet:=aasort( aNovoVet, nElem )
        xMaxElem:=aNovoVet[nElem, len(aNovoVet)]
endif

return xMaxElem

////////////////////////////DADOS DA FUNCAO////////////////////////////////////////////
// NOME       : AaSort                                                               //
// FINALIDADE : ordenar os elementos de um vetor muldimensional                      //
// PARAMETROS : <1> aVetor a ser ordenado                                            //
//              [2] nElemento do vetor a ser ordenado (default=1)                    //
//              [3] cOrdem Crescente ou Decrescente (default='C')                    //
// RETORNO    : aVetor ordenado                                                      //
///////////////////////////////////////////////////////////////////////////////////////
function AaSort( aVetor, nElem, cOrdem )

local aRetorno, x, y

DEFAULT nElem:=1
DEFAULT cOrdem:='C'
if cOrdem='C'
        aRetorno:= asort( aVetor,,, { |x, y| x[nElem] < y[nElem] } )
else
        aRetorno:= asort( aVetor,,, { |x, y| x[nElem] > y[nElem] } )
endif

return aRetorno
 

Re: C STRUCTURE

Posted: Wed Mar 20, 2013 2:20 pm
by Antonio Linares
Existe una versión demo de "rmchart.dll" ?

Re: C STRUCTURE

Posted: Wed Mar 20, 2013 2:40 pm
by aferra

Re: C STRUCTURE

Posted: Wed Mar 20, 2013 7:43 pm
by Antonio Linares
Lo siento, pero no te proporcionaré más soporte técnico hasta que no elimines los ficheros ilegales que tienes en tu cuenta de 4shared...

Sorry, but I will not provide you any further tech support until you remove all the illegal files that you keep on your 4shared account...

Re: C STRUCTURE

Posted: Wed Mar 20, 2013 8:58 pm
by Antonio Linares
Already reported to 4shared and removed accordingly:
Hello,

Thank you for letting us know. We have deactivated the links to the illegal files.

If you know any other illegal use of our service, please let us know. We will do
our best to remove the files as soon as possible.

We appreciate your desire to make our service better. Thank you.


Best regards,
Vadim
support@4shared.com

Re: C STRUCTURE

Posted: Thu Mar 21, 2013 11:34 am
by aferra

Re: C STRUCTURE

Posted: Tue May 10, 2016 9:07 pm
by asimoes
Olá,

Voltando ao assunto do rmchart, com base ao exemplo do aferra, a minha duvida é de como exibir todos os dados de todos os 12 meses?
Consegui portar o código para o harbour.