Page 1 of 1

Consulta de Funcky

Posted: Thu Mar 08, 2007 8:58 pm
by Jairo Centeno
Hola estimados,

Tengo un trial de Funcky 6.0 para xBase++, necesito saber si funciona con Fwh.

Saludos desde Nicaragua, C.A.

Posted: Fri Mar 09, 2007 1:05 am
by R.F.
Si, funciona, Funcky pra Xbase++ va por OLE, es un componente COM que se puede utilizar perfectamente con FWH

Posted: Fri Mar 09, 2007 4:49 pm
by Jairo Centeno
Gracias Maestro,

Tiene algún ejemplo para saber cómo utilizar el control?

Saludos

Posted: Fri Mar 09, 2007 4:56 pm
by R.F.
No es un control, es un Componente COM y se accesa por OLE.

En general el manual de funcky es muy explicito.

Lee mi articulo:

http://google.blogspot.com/2005/03/its- ... again.html

Posted: Fri Mar 09, 2007 6:28 pm
by Jairo Centeno
Gracias René,

Leí tu artículo y en realidad resuntó sencillo, eso es lo importante de tener el correo de el que sabe.

Si no es mucha molestia, de casualidad tienes algún ejemplo de utilización de List & Label?

Saludos.

Posted: Mon Mar 12, 2007 3:31 pm
by Jairo Centeno
Hola René,

En realidad creí que al ver tu ejemplo me iba a funcionar, pero no fué así, me aperece el siguiente error:

Error description: Error TOleAuto/-1 Unknown error: TOLEAUTO:NEW

No tengo ningún archivo Funcky.ocx, sólo Funcky60.dll

El ejecutable que descarqué de tu blog funciona perfectamente.

Saludos.

Posted: Mon Mar 12, 2007 4:46 pm
by R.F.
Jairo:

2 cosillas, el EXE esta construido con la version completa de funcky, por lo que si te falla algun componente es que estas tratando de invocar algun elemento de funcky que no esta en la version de evaluacion.

Utiliza la clase TOleAUTO nativa de xHarbour, si estas trabajando con Harbour igual tendras que agregar la TOLE por fuera.

El componente funcky lo tienes que registrar en tu ordenador para que pueda funcionar.

Esto se hace asi:

copia estos archivos a la carpeta windows\system32

FUNCky60.DLL, FUNCky60.TLB y FUNCky60.Dep

Luego "registra" desde ms-dos el componente tecleando esto:

RegSvr32 \Windows\System32\FUNCky60.DLL


Y listo , deberas registrar Funcky en cada uno de los computadores donde vayas a ejecutar el programa.

Posted: Tue Mar 13, 2007 7:47 am
by JoseLuis
Hola René
Una preguntita sobre el error "Error description: Error TOleAuto/-1 Unknown error: TOLEAUTO:NEW "
Yo compilo con xharbour y a mi me sale éste error en algunas aplicaciones, no te entiendo qué quieres decir con utilizar la clase TOleAuto nativa de xHarbour; yo entiendo que al compilar con xHarbour, éste utiliza sus propias clases.

Me puedes aclarar ésto a ver si soy capaz de continuar con éste tema ?

Saludos

Jose Luis

Posted: Tue Mar 13, 2007 4:03 pm
by Jairo Centeno
Probé utilizando FunckyLt.dll y funcionó, con la salvedad de que esa versión es muy limitada.

Ahora estoy tratando de probar List & Label 12, lo he intentado utilizando Ole y también Activex, pero no ha funcionado.

Alguna sugerencia?

Saludos.

Posted: Tue Mar 13, 2007 6:14 pm
by JoseLuis
Hola Jairo

Un amigo mio compró list & label, y lo dejó por imposible, no pudo ponerlo en marcha, él pretendía general códigos de barras en formato PDF417, que parece ser que list & label los genera, pero se volvió majareta y no lo consiguíó, ya que todo viene en inglés y principalmente en alemán.

Saludos

Jose Luis

Posted: Wed Mar 14, 2007 1:29 am
by Jairo Centeno
Ya pude desplegar el diseñador de List & Label con Activex:

oActiveX = TActiveX():New( oWnd, "L12.List-Label12_Ctrl_32.1" )
oActiveX:Do("LlDefineLayout", oWnd:hWnd, "Design List", LL_PROJECT_LIST,"simple.lst")

Esta muy interesante.

Saludos.

Posted: Wed Mar 14, 2007 11:51 am
by JoseLuis
Intento crear una aplicación con éstad dos líneas, y me da el siguiente error:
Error description: Error BASE/1003 Variable does not exist: LL_PROJECT_LIST

La verdad es que yo nunca he trabajado con activex , si me puedes mandar una parte de codigo para ver como funciona el tema te lo agradezco.

Un saludo

Jose Luis

Posted: Wed Mar 14, 2007 3:55 pm
by Jairo Centeno
Hola JoseLuis,

Incluye la linea #xtranslate LL_PROJECT_LIST => 2, o bien, utiliza directamente el valor.

En "C:\Archivos de programa\combit\LL12\Programmable Samples and Declarations\Alaska Xbase++" se encuentra cmbtll12.ch

#include "FiveWin.ch"
#include "cmbtll12.ch"
Global oActiveX, oWnd, hJob, nRet

Function Main()
Local cEvents := ""
LOCAL aField, aType, aLen, aDec, sName
LOCAL FldType, FldContent, DateBuffer, lExpr, I:=1, bAsField:=.T.

USE ARTICLE NEW
GO TOP

aField := Array( ARTICLE->(FCount()) )
aType := Array( ARTICLE->(FCount()) )
aLen := Array( ARTICLE->(FCount()) )
aDec := Array( ARTICLE->(FCount()) )
sname := "article.lst"

DEFINE WINDOW oWnd TITLE "FiveWin ActiveX Support"

oActiveX = TActiveX():New( oWnd, "L12.List-Label12_Ctrl_32.1" )

oWnd:oClient = oActiveX // To fill the entire window surface

//US: Read field info from database
AFields( aField, aType, aLen, aDec )

//US: open List & Label job, retrieve job handle
hJob := 1

//US: Enable multiple table lines
oActiveX:Do( "LlSetOption", LL_OPTION_MULTIPLETABLELINES, 1)

//US: clear DLL-internal field buffer
oActiveX:Do( "LlDefineFieldStart" )

// US: Define Fields

FOR I = 1 to ARTICLE->(Fcount())

DateBuffer = Replicate(chr(0), 255)

DO CASE
CASE aType == "N"
FldType=LL_NUMERIC
FldContent=Str( FieldGet(i) )
CASE aType == "D"
FldType=LL_DATE

//US: Convert to Julian Date
//US: Create function tree
lExpr = oActiveX:Do("LlExprParse", "CTOD( FieldGet(i) )", .F. )

//US: Evaluate expression
oActiveX:Do("LlExprEvaluate", lExpr, @DateBuffer )

//US: Free expression
oActiveX:Do("LlExprFree", lExpr )
FldContent = DateBuffer

CASE aType == "L"
FldType=LL_BOOLEAN
if FieldGet(i) = .F.
FldContent="FALSE"
else
FldContent="TRUE" endif

CASE aType == "C"
FldType=LL_TEXT
FldContent=Trim(FieldGet(i))

// US: for article number generate EAN128-barcode
if i=1
DO CASE

// US: Distinguish between field and variable declaration
CASE bAsField==.F.
oActiveX:Do("LlDefineVariableExt", "ARTICLENO_EAN128", Trim(FieldGet(i)), LL_BARCODE_EAN128 )

CASE bAsField==.T.
oActiveX:Do("LlDefineFieldExt", "ARTICLENO_EAN128", Trim(FieldGet(i)), LL_BARCODE_EAN128 )

END CASE
endif

CASE aType == "M"
FldType=LL_TEXT
FldContent=FieldGet(i)

END CASE

//US: pass data to List & Label

DO CASE
CASE bAsField==.F.

oActiveX:Do("LlDefineVariableExt", aField, FldContent, FldType )
CASE bAsField==.T.

oActiveX:Do("LlDefineFieldExt",aField, FldContent, FldType )
END CASE

NEXT I

// US: start designer
oActiveX:Do("LlSetPrinterDefaultsDir",hJob,"C:\Windows\Temp")
oActiveX:Do("LlDefineLayout",oWnd:hWnd,"Designer",LL_PROJECT_LIST, "article.lst")

ACTIVATE WINDOW oWnd VALID ( dbCloseArea(),.t. )

Return

Posted: Thu Mar 15, 2007 7:56 am
by JoseLuis
Hola Jairo

Lo he probado y es fantástico.

Estaba atascado, y me das pistas para continuar

Gracias y saludos

Joe Luis

Posted: Fri Sep 26, 2008 12:28 pm
by Mike Serra
Hola Jairo, he estado probando tu ejemplo y me funciona perfectamente, en tu ejemplo, ¿Sabrías invocar la vista preeliminar directamente, en vez del diseñador?

Muchas Gracias.