C STRUCTURE

C STRUCTURE

Postby aferra » Tue Mar 19, 2013 6:55 pm

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
aferra
 
Posts: 88
Joined: Wed Apr 28, 2010 6:34 pm

Re: C STRUCTURE

Postby Antonio Linares » Tue Mar 19, 2013 7:41 pm

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/?fromgroups=#!topic/harbour-devel/IiUBBXPAOpc
regards, saludos

Antonio Linares
www.fivetechsoft.com
User avatar
Antonio Linares
Site Admin
 
Posts: 42074
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain

Re: C STRUCTURE

Postby Antonio Linares » Tue Mar 19, 2013 10:17 pm

Problema solucionado:

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

https://github.com/harbour/core/blob/master/contrib/xhb/cstruct.ch

Con ese, funciona bien :-)
regards, saludos

Antonio Linares
www.fivetechsoft.com
User avatar
Antonio Linares
Site Admin
 
Posts: 42074
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain

Re: C STRUCTURE

Postby aferra » Wed Mar 20, 2013 11:47 am

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
aferra
 
Posts: 88
Joined: Wed Apr 28, 2010 6:34 pm

Re: C STRUCTURE

Postby Antonio Linares » Wed Mar 20, 2013 11:50 am

Puedes proporcionar un PRG de ejemplo de como usas RmChart, para que podamos probarlo y ver que le ocurre ? gracias :-)
regards, saludos

Antonio Linares
www.fivetechsoft.com
User avatar
Antonio Linares
Site Admin
 
Posts: 42074
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain

Re: C STRUCTURE

Postby aferra » Wed Mar 20, 2013 12:38 pm

Gracias, sigue el ejemplo que funciona con xHarbour

Code: Select all  Expand view

#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
 
aferra
 
Posts: 88
Joined: Wed Apr 28, 2010 6:34 pm

Re: C STRUCTURE

Postby Antonio Linares » Wed Mar 20, 2013 2:20 pm

Existe una versión demo de "rmchart.dll" ?
regards, saludos

Antonio Linares
www.fivetechsoft.com
User avatar
Antonio Linares
Site Admin
 
Posts: 42074
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain

Re: C STRUCTURE

Postby aferra » Wed Mar 20, 2013 2:40 pm

Last edited by aferra on Wed Mar 20, 2013 8:09 pm, edited 2 times in total.
aferra
 
Posts: 88
Joined: Wed Apr 28, 2010 6:34 pm

Re: C STRUCTURE

Postby Antonio Linares » Wed Mar 20, 2013 7:43 pm

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...
regards, saludos

Antonio Linares
www.fivetechsoft.com
User avatar
Antonio Linares
Site Admin
 
Posts: 42074
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain

Re: C STRUCTURE

Postby Antonio Linares » Wed Mar 20, 2013 8:58 pm

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
regards, saludos

Antonio Linares
www.fivetechsoft.com
User avatar
Antonio Linares
Site Admin
 
Posts: 42074
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain

Re: C STRUCTURE

Postby aferra » Thu Mar 21, 2013 11:34 am

aferra
 
Posts: 88
Joined: Wed Apr 28, 2010 6:34 pm

Re: C STRUCTURE

Postby asimoes » Tue May 10, 2016 9:07 pm

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.
asimoes
 
Posts: 5
Joined: Mon Sep 29, 2014 10:58 am


Return to FiveWin para Harbour/xHarbour

Who is online

Users browsing this forum: No registered users and 75 guests