Page 1 of 2

ActiveX en Harbour + Visual Studio 2012 (SOLUCIONADO)

Posted: Thu Jul 04, 2013 4:45 pm
by fgondi
Estoy migrando mis aplicaciones desde xharbour+Bcc582 a Harbour+Visual Studio 2012

Tengo problemas con algunos ActiveX, en concreto con Crystal Report y con LeadTool.
El problema es que no visualiza nada. Abre la ventana mdichild pero no muestra nada.

Además me pasa en los equipos con Windows 7, Windows 8, Windows 2008 server.
El mismo ejecutable en XP o 2000 server. funciona correctamente.

La misma aplicación compilada con xHarbour+Bcc582 y con Harbour+Bcc582 funciona en todos los operativos.

También he probado a cambiar el código y usar THActiveX pero sucede lo mismo.

Code: Select all

 DEFINE Window oVentHija MDICHILD "Reporte" OF oWndPrincipal
 oActiveX := TActiveX():New( oVentHija, "CrystalReports11.ActivexReportViewer.1" )  
 oVentHija:oClient := oActiveX
 oActivex:SetProp( "ReportSource", oCRReport )
 oActiveX:SetProp( "EnableStopButton",     1  )
 oActiveX:SetProp( "EnableAnimationCtrl",  0  )
 oActiveX:SetProp( "EnableCloseButton",    1  ) 
 oActiveX:SetProp( "EnableExportButton",   1  )
 oActiveX:SetProp( "EnablePopupMenu",      0  )  // revisar, es interesante pero da error
 oActiveX:SetProp( "EnableRefreshButton",  0  )
 oActiveX:bOnEvent = { | event, aParams | EventInfo( event, aParams, oCRReport, oActivex  ) } 

 ACTIVATE WINDOW oVentHija  ON INIT ( oActiveX:Do( "Viewreport" )  )

function EventInfo( event, aParams, oCRReport, oActivex )
   local cMsg := cValToChar( event ) //+ CRLF
return cMsg 
 

Re: ActiveX en Harbour + Visual Studio 2012

Posted: Thu Jul 04, 2013 5:57 pm
by Antonio Linares
Fernando,

No te genera error ? No lo muestra y no da error ?

Prueba tambien a hacer:

oActiveX:Show()

Re: ActiveX en Harbour + Visual Studio 2012

Posted: Thu Jul 04, 2013 6:15 pm
by fgondi
No, no genera ningún error.
Sólo abre la ventana MDI y dentro esta vacia (fondo blanco).

oActiveX:Show() -> No funciona.

No parece que sea un tema de FWH o de Harbour, ya que cuando compilo con FHW+Harbour+BCC582 funciona bien.
Mas parece un tema de las librerías que se incluyen de Visual Studio, que hace que esos 2 controles no se muestren.
El control del PDF, si funciona.

¿Podría ser problema de la versión de los viewer?, aunque con BCC582 funciona

Re: ActiveX en Harbour + Visual Studio 2012

Posted: Thu Jul 04, 2013 7:21 pm
by nnicanor
Buenas tardes,

Yo tuve ese problema con MSVC 2010, prueba registrando los controles y/o DLL asociados.

Slds

Re: ActiveX en Harbour + Visual Studio 2012

Posted: Thu Jul 04, 2013 8:23 pm
by fgondi
Muchas gracias por responder,

Tampoco funciona

Información de dll's a registrar para crystal report
REGSVR32 CRVIEWER.DLL
REGSVR32 REPORTPARAMETERDIALOG.DLL
REGSVR32 SVIEWHLP.DLL
REGSVR32 SWEBRS.DLL

Re: ActiveX en Harbour + Visual Studio 2012

Posted: Fri Jul 05, 2013 2:06 am
by Antonio Linares
Fernando,

Podrias proporcionar el código fuente de un ejemplo muy simple para poder reproducirlo aqui ?

Asi puedo hacer pruebas aqui, gracias :-)

Re: ActiveX en Harbour + Visual Studio 2012

Posted: Fri Jul 05, 2013 8:28 am
by fgondi
Antonio, gracias por tu tiempo.

Preparo un ejemplo y te lo envío

Re: ActiveX en Harbour + Visual Studio 2012

Posted: Fri Jul 05, 2013 9:45 am
by fgondi
he modificado el archivo tutor02.prg con lo siguiente:

Code: Select all

// Our first Window in FiveWin !!!

#include "FiveWin.ch"

//----------------------------------------------------------------------------//

function Main()

   local oWnd, oActiveX, oCRApp, oRpt

   oCRApp := CreateObject("CrystalRuntime.Application.11") 
   oRpt   := oCRApp:OpenReport("Blanc.rpt")
   
   DEFINE WINDOW oWnd FROM 3, 6 TO 20, 70 ;
      TITLE "Welcome to " + FWDESCRIPTION COLOR "W/B"

//   @ 2, 2 SAY "Hello world!"
   oActiveX := TActiveX():New( oWnd, "CrystalReports11.ActivexReportViewer.1" )  
   oWnd:oClient := oActiveX
   oActivex:SetProp( "ReportSource", oRpt )
   oActiveX:SetProp( "EnableStopButton",     1  )
   oActiveX:SetProp( "EnableAnimationCtrl",  0  )
   oActiveX:SetProp( "EnableCloseButton",    1  ) 
   oActiveX:SetProp( "EnableExportButton",   1  )
   oActiveX:SetProp( "EnablePopupMenu",      0  )  // revisar, es interesante pero da error
   oActiveX:SetProp( "EnableRefreshButton",  0  )
   oActiveX:bOnEvent = { | event, aParams | EventInfo( event, aParams, oRpt, oActivex  ) } 
   
   oActiveX:Do( "Viewreport" )
   
   ACTIVATE WINDOW oWnd ;
      VALID MsgYesNo( "Are you sure?", "Do you want to exit?" )

return nil
 


function EventInfo( event, aParams, oRpt, oActivex )
   local cMsg := cValToChar( event ) //+ CRLF
return cMsg 

//----------------------------------------------------------------------------//
el rpt "blanc.rpt" lo subo rapidshare
http://rapidshare.com/files/3559180351/Blanc.rar

El rpt esta vacio, pero carga una ventana donde se ve el menu superior.
En windows 7, windows 8, etc sólo carga la ventana y dentro no se ve nada.

Lo compilo con builh32.bat, donde lo único que he cambiado son las llamadas a VC y SDK, porque yo lo tengo instalado en otro sitio
set vcdir="C:\Microsoft Visual Studio 11.0\VC"
set sdkdir="C:\Microsoft Visual Studio 11.0\SDK\v7.1A" //Tambien he probado con "C:\Microsoft Visual Studio 11.0\SDK\v7.0A"

Re: ActiveX en Harbour + Visual Studio 2012

Posted: Fri Jul 05, 2013 11:24 am
by Antonio Linares
Fernando,

Donde se consiguen esas DLLs ? Son redistribuibles ?

gracias

Re: ActiveX en Harbour + Visual Studio 2012

Posted: Fri Jul 05, 2013 7:57 pm
by fgondi
Antonio,

Te ha llegado lo que te he enviado

Re: ActiveX en Harbour + Visual Studio 2012

Posted: Fri Jul 05, 2013 8:07 pm
by Antonio Linares
Fernando,

Si, y te acabo de responder por email, gracias :-)

Re: ActiveX en Harbour + Visual Studio 2012

Posted: Sat Jul 06, 2013 9:15 pm
by Antonio Linares
Fernando,

he probado de todo lo que se me ha ocurrido sin ningún resultado positivo por el momento.

Falla tanto con TActiveX como con THActiveX por el simple hecho de usar MSVC. Con Borland, funciona perfectamente.

En el caso de THActiveX somos un simple wrapper de la implementación de Harbour. Como THActiveX deriva de TControl he probado a declarar como VIRTUAL los métodos Display(), Paint(), Link(), EraseBkGnd() y nada, el mismo resultado.

Si hago oActiveX:Hide() el control se oculta, luego está ahí, pero por que no se muestra ? A ver si se nos ocurre algo...

A este problema es al que me refiero tantas veces: el problema del uso de ActiveX y componentes externos. Ahora ante este problema que podemos hacer ? Sencillamente ir dando palos de ciego y ver si suena la flauta... y sino se arregla: estamos jodidos. Imposible pasar a MSVC, por usar componentes externos... :-(

Re: ActiveX en Harbour + Visual Studio 2012

Posted: Sat Jul 06, 2013 9:51 pm
by fgondi
Muchas gracias Antonio.
Las nuevas versiones están desarrolladas en framework. Se puede implementar?

Re: ActiveX en Harbour + Visual Studio 2012

Posted: Sun Jul 07, 2013 12:58 pm
by Antonio Linares
Fernando,

Te refieres a .NET ?

Por supuesto lo más importante en esto es ayudarte a solucionar el problema técnico de alguna forma, pero para mi es mucho más interesante que compartieses con nosotros el por que usas Crystal Reports ? Que usas de Crystal Reports ? Que es lo bueno que tiene y que le sobra ?

En breve me pondré a construir (ó a sintetizar todo lo hecho) para tener nuestro propio diseñador de reportes. Por esto te pregunto esto, asi tendré la información necesaria para construirlo y asi nos libramos de CR para siempre :-)

Re: ActiveX en Harbour + Visual Studio 2012

Posted: Sun Jul 07, 2013 3:55 pm
by Armando
Antonio:

Me alegra leer tu decisión de desarrollar un diseñador de reporte propio de FW y te felicito por esto creo
que esto solidificará más a FW.

Sugiero echarle una mirada, si es que no lo haz hecho, a FastReport, teniendo lo que FR aporta
tendríamos un excelente diseñador.

Te ánimo a hacerlo a la brevedad posible.

Saludos, ánimo