Página 1 de 1
Nueva demo de FastReport
Publicado: Vie Oct 18, 2013 1:48 pm
por ignacio
Nueva funcionalidad de FastReport para Xailer: Previsualización de FastReport en formulario de Xailer.
Demo:
http://www.xailer.com/download?es&file=104
Attached files
Nueva demo de FastReport
Publicado: Vie Oct 18, 2013 10:44 pm
por Claudio[1]
Estimados.
Al convertir viejos programas de la version xharbour de xailer a harbour
obtengo error al compilar isKindOf() . ( no existe el método )
Este método me permitía saber si un objeto pertenecía a una clase ( en
forma directa o heredada)
Quisiera certificar que en harbour no exite el método y en su caso como
reemplazarlo (si se puede).
Por ahora uso classname() y comparo con el nombre esperado pero no es la
misma funcionalidad (de seguro voy a tener problemas).
De antemano agradezco su tiempo.
Claudio.
Nueva demo de FastReport
Publicado: Vie Oct 18, 2013 11:39 pm
por xmessoft
En harbour hay una función llamada __objDerivedFrom( oObject, xSuper )
Ojo no es un método...
Si tu usas:
if miObj:isKindOf( "oPadre" )
....
Con esta función se haría:
if __objDerivedFrom( miObj, "oPadre" )
....
Así funciona en Harbour y xHarbour

Saludos
Manu Expósito
El 18/10/2013 22:44, Contacto en Xailer escribió:
> Estimados.
>
> Al convertir viejos programas de la version xharbour de xailer a harbour
> obtengo error al compilar isKindOf() . ( no existe el método )
>
> Este método me permitía saber si un objeto pertenecía a una clase ( en
> forma directa o heredada)
>
> Quisiera certificar que en harbour no exite el método y en su caso como
> reemplazarlo (si se puede).
>
> Por ahora uso classname() y comparo con el nombre esperado pero no es la
> misma funcionalidad (de seguro voy a tener problemas).
>
> De antemano agradezco su tiempo.
>
> Claudio.
--
Tu vecino Manu
Nueva demo de FastReport
Publicado: Sab Oct 19, 2013 12:04 am
por Claudio[1]
Gracias Manu por tu pronta respuesta.
Funciona perfecto.
Claudio.
El 18/10/2013 18:39, Manu escribió:
> En harbour hay una función llamada __objDerivedFrom( oObject, xSuper )
> Ojo no es un método...
>
> Si tu usas:
>
> if miObj:isKindOf( "oPadre" )
> ...
>
> Con esta función se haría:
>
> if __objDerivedFrom( miObj, "oPadre" )
> ...
>
> Así funciona en Harbour y xHarbour

>
> Saludos
> Manu Expósito
>
> El 18/10/2013 22:44, Contacto en Xailer escribió:
>> Estimados.
>>
>> Al convertir viejos programas de la version xharbour de xailer a harbour
>> obtengo error al compilar isKindOf() . ( no existe el método )
>>
>> Este método me permitía saber si un objeto pertenecía a una clase ( en
>> forma directa o heredada)
>>
>> Quisiera certificar que en harbour no exite el método y en su caso como
>> reemplazarlo (si se puede).
>>
>> Por ahora uso classname() y comparo con el nombre esperado pero no es la
>> misma funcionalidad (de seguro voy a tener problemas).
>>
>> De antemano agradezco su tiempo.
>>
>> Claudio.
>
>
Nueva demo de FastReport
Publicado: Sab Oct 19, 2013 9:33 am
por joselalinf
Claudio,
> Al convertir viejos programas de la version xharbour de xailer a harbour
> obtengo error al compilar isKindOf() . ( no existe el método )
el método isKindOf() exisste y puedes comprobar que se está usando en los
fuentes de Xailer así que el error tiene que venir de otra parte.
¿Qué versión de Xailer estás usando?
Saludos,
José Lalín
Nueva demo de FastReport
Publicado: Lun Oct 21, 2013 9:07 am
por Toni
Grande Ignacio.
Crear formularios e incrustar en ellos listados FastReport con imágenes, gráficos, etc.
Muy bueno.
Saludos
Toni Sales
Nueva demo de FastReport
Publicado: Mié Oct 23, 2013 4:05 am
por Claudio[1]
Hola José y gracias por tu respuesta.
Como era de esperar tenés razón: isKindOf() funciona perfecto.
Demoré en responderte porque quise averiguar el por qué del mensaje que
me daba.
En el mensaje original que envié al foro cometí un error ya que "no
existe el método" no lo daba al compilar sino al ejecutar (runtime).
Y lo daba porque el objeto al que le solicitaba iskindof() no estaba
inicializado ( era NIL ) de allí el mensaje.
De todas formas implementé una pequeña funcion que verifica que el
objeto no es nulo y luego chequea verifica la clase.
//--------------------------------------
function esdDeLaClase( o ,cClase )
if isObject( o ) ; return __objDerivedFrom( o, cClase ) ; endif
return .f.
Que la converti para chequear isKindOf asi:
//--------------------------------------
function esdDeLaClase( o ,cClase )
if isObject( o ) ; return o:isKindOf( cClase ) ; endif
return .f.
Y funciona perfecto.
Nuevamente gracias,
Claudio.
El 19/10/2013 4:33, José Lalín escribió:
> Claudio,
>
>> Al convertir viejos programas de la version xharbour de xailer a harbour
>> obtengo error al compilar isKindOf() . ( no existe el método )
>
> el método isKindOf() exisste y puedes comprobar que se está usando en
> los fuentes de Xailer así que el error tiene que venir de otra parte.
>
> ¿Qué versión de Xailer estás usando?
>
> Saludos,
> José Lalín
>
Nueva demo de FastReport
Publicado: Mié Oct 23, 2013 10:13 pm
por xmessoft
De cualquier modo te digo que la función es más rápida ya que le método
lo que hace es llamarla así que al menos te ahorrarías un paseito por la
máquina virtual de harbour.
tu función un poco más optimizada podría quedar así:
function esdDeLaClase( o, cClase )
return( if( isObject( o ), __objDerivedFrom( o, cClase ), .f. ) )
Y más optimizada aún (hace una llamada al wrapper de la función en C:
function esdDeLaClase( o, cClase )
return( if( isObject( o ), __clsParent( o:ClassH, cClase ), .f. ) )
--
Tu vecino Manu
Nueva demo de FastReport
Publicado: Jue Oct 24, 2013 1:08 am
por Claudio[1]
Gracias Manu por tu respuesta
De ahora en más utilizaré esta version optimizada para validar los
objetos que recibo como parámetro en métodos y funciones.
Por otro lado estoy tranquilo que todo el código que tenía escrito con
el metodo isKindOf funcionará perfecto.
Saludos,
Claudio
El 23/10/2013 17:13, Manu escribió:
> De cualquier modo te digo que la función es más rápida ya que le método
> lo que hace es llamarla así que al menos te ahorrarías un paseito por la
> máquina virtual de harbour.
>
> tu función un poco más optimizada podría quedar así:
>
> function esdDeLaClase( o, cClase )
> return( if( isObject( o ), __objDerivedFrom( o, cClase ), .f. ) )
>
> Y más optimizada aún (hace una llamada al wrapper de la función en C:
>
> function esdDeLaClase( o, cClase )
> return( if( isObject( o ), __clsParent( o:ClassH, cClase ), .f. ) )
>
>
>