Existe en xailer algun mecanismo que permita reutilizar el codigo de un formulario en otro?
Un ejemplo de esta necesidad sería una ficha de cliente con varias paginas de foder. La funcionalidad de algunas de estas paginas puede ser similar a la de otras fichas (proveedor, articulos, etc) aunque son lo suficientemente distintas para que no proceda heredar todo de la misma clase basse.
Esto se resuelve en otros entornos con UserControls, que encapsulan el codigo de varios controles.
Como puede lograse esto en Xailer (sin recurrir al API de windows)
In order for this site to work correctly we need to store a small file (called a cookie) on your computer. Most every site in the world does this, however since the 25th of May 2011, by law we have to get your permission first. Please abandon the forum if you disagree.
Para que este foro funcione correctamente es necesario guardar un pequeño fichero (llamado cookie) en su ordenador. La mayoría de los sitios de Internet lo hacen, no obstante desde el 25 de Marzo de 2011 y por ley, necesitamos de su permiso con antelación. Abandone este foro si no está conforme.
Para que este foro funcione correctamente es necesario guardar un pequeño fichero (llamado cookie) en su ordenador. La mayoría de los sitios de Internet lo hacen, no obstante desde el 25 de Marzo de 2011 y por ley, necesitamos de su permiso con antelación. Abandone este foro si no está conforme.
Reutilizar codigo de formularios
Reutilizar codigo de formularios
Victor,
> Existe en xailer algun mecanismo que permita reutilizar el
> codigo de un formulario en otro?
>
> Un ejemplo de esta necesidad sería una ficha de cliente con
> varias paginas de foder. La funcionalidad de algunas de
> estas paginas puede ser similar a la de otras fichas
> (proveedor, articulos, etc) aunque son lo suficientemente
> distintas para que no proceda heredar todo de la misma clase
> basse.
Si son lo suficientemente distintos como para no poder heredar, entonces
no hay tampoco mucho que reutilizar, supongo. No obstante, puede ocurrir
que haya alguna rutina concreta (p.ej. algún cálculo) que sí se repita
en distintas fichas. En ese caso, tenemos varias opciones:
1) Hacer una función o procedimiento que reciba como parámetro el objeto
que lo llama, de forma que pueda actuar sobre sus propiedades. Los
controles de un formulario son también propiedades de éste, así que
podría también modificarlos. P.ej., supongamos que queremos que al
escribir el código postal, una rutina se encargue de rellenar el nombre
del municipio, la provincia y el prefijo telefónico. En el evento OnExit
del código postal podríamos llamar a una rutina externa así:
ValidarCodigoPostal( Self )
Y esa rutina sería algo así:
FUNCTION ValidarCodigoPostal( oForm )
// Buscar el código postal y obtener los datos necesarios
oForm:oMunicipio:Value := <nombre del municipio>
oForm:oProvincia:Value := <nombre de la provicia>
oForm:oTelefono:Value := <prefijo telefonico>
RETURN .T.
2) Crear una clase base que incluya las rutinas comunes, en forma de
métodos, y después crear las demás clases derivando de la clase base.
Sería algo muy parecido al anterior, con la diferencia de que las
rutinas serían métodos, y no habría que pasarles como parámetro el
objeto formulario, ya que sería Self.
3) Hay un mecanismo para poder usar un método de una clase desde otra
clase, declarándolo como METHODPUB. Pero este mecanismo no es estándar,
y podría verse afectado o incluso desaparecer en el futuro, así que está
absolutamente desaconsejado.
> Esto se resuelve en otros entornos con UserControls, que
> encapsulan el codigo de varios controles.
¿Cómo funcionan esos UserControls?
> Como puede lograse esto en Xailer (sin recurrir al API de
> windows)
No entiendo qué relación tiene esto con el API de Windows. Si he
entendido bien el problema, se limita a relaciones entre clases, pero el
API no tiene nada que ver.
Un saludo,
José F. Giménez
http://www.xailer.com
http://www.xailer.info
> Existe en xailer algun mecanismo que permita reutilizar el
> codigo de un formulario en otro?
>
> Un ejemplo de esta necesidad sería una ficha de cliente con
> varias paginas de foder. La funcionalidad de algunas de
> estas paginas puede ser similar a la de otras fichas
> (proveedor, articulos, etc) aunque son lo suficientemente
> distintas para que no proceda heredar todo de la misma clase
> basse.
Si son lo suficientemente distintos como para no poder heredar, entonces
no hay tampoco mucho que reutilizar, supongo. No obstante, puede ocurrir
que haya alguna rutina concreta (p.ej. algún cálculo) que sí se repita
en distintas fichas. En ese caso, tenemos varias opciones:
1) Hacer una función o procedimiento que reciba como parámetro el objeto
que lo llama, de forma que pueda actuar sobre sus propiedades. Los
controles de un formulario son también propiedades de éste, así que
podría también modificarlos. P.ej., supongamos que queremos que al
escribir el código postal, una rutina se encargue de rellenar el nombre
del municipio, la provincia y el prefijo telefónico. En el evento OnExit
del código postal podríamos llamar a una rutina externa así:
ValidarCodigoPostal( Self )
Y esa rutina sería algo así:
FUNCTION ValidarCodigoPostal( oForm )
// Buscar el código postal y obtener los datos necesarios
oForm:oMunicipio:Value := <nombre del municipio>
oForm:oProvincia:Value := <nombre de la provicia>
oForm:oTelefono:Value := <prefijo telefonico>
RETURN .T.
2) Crear una clase base que incluya las rutinas comunes, en forma de
métodos, y después crear las demás clases derivando de la clase base.
Sería algo muy parecido al anterior, con la diferencia de que las
rutinas serían métodos, y no habría que pasarles como parámetro el
objeto formulario, ya que sería Self.
3) Hay un mecanismo para poder usar un método de una clase desde otra
clase, declarándolo como METHODPUB. Pero este mecanismo no es estándar,
y podría verse afectado o incluso desaparecer en el futuro, así que está
absolutamente desaconsejado.
> Esto se resuelve en otros entornos con UserControls, que
> encapsulan el codigo de varios controles.
¿Cómo funcionan esos UserControls?
> Como puede lograse esto en Xailer (sin recurrir al API de
> windows)
No entiendo qué relación tiene esto con el API de Windows. Si he
entendido bien el problema, se limita a relaciones entre clases, pero el
API no tiene nada que ver.
Un saludo,
José F. Giménez
http://www.xailer.com
http://www.xailer.info
Reutilizar codigo de formularios
Muchas gracias por tus sugerencias
El problema concreto es cuando se ha hacho una ventana independiente que tiene una funcionalidad compleja (Por ejemplo una gestion de graficos TRMChart, que es el caso), y se desea que esta aparezca en una pagina de folder de fichas de clientes, articulos, etc.
Heredar de una clase base es buena idea, pero no se puede si la clase que contiene la funcionalidad es ya un formulario (Porque actua tambien como una ventana independiente). No se puede insertar una clase base comun a un formulario y a otro tipo de controles.
Tampoco hay forma, que sepamos, de meter un formulario en una pagina de folder a nivel prg. (Por eso decia lo del API, con SetParent si se puede lograr, pero es en un lio impresionante)
En ultimo caso, usaremos el sistema que comentas de llamar a una funcion pasando el control, pero no es lo mas elegante.
Un saludo
Victor
Reutilizar codigo de formularios
Victor,
> Muchas gracias por tus sugerencias
>
> El problema concreto es cuando se ha hacho una ventana
> independiente que tiene una funcionalidad compleja (Por
> ejemplo una gestion de graficos TRMChart, que es el caso), y
> se desea que esta aparezca en una pagina de folder de fichas
> de clientes, articulos, etc.
>
> Heredar de una clase base es buena idea, pero no se puede si
> la clase que contiene la funcionalidad es ya un formulario
> (Porque actua tambien como una ventana independiente). No se
> puede insertar una clase base comun a un formulario y a otro
> tipo de controles.
>
> Tampoco hay forma, que sepamos, de meter un formulario en
> una pagina de folder a nivel prg. (Por eso decia lo del API,
> con SetParent si se puede lograr, pero es en un lio
> impresionante)
Sí se puede. Echa un vistazo al ejemplo datacontrolsdbfdata6. Verás que
se están usando formularios diseñados con el IDE dentro de pestañas de
un folder.
En el caso concreto que planteas, lo mejor sería crear un control
"contenedor" que permita incrustar esos formularios en un folder o donde
quieras. Puedes basarte en el código del ejemplo para hacerlo. También
aprovecho para comentar que se está organizando un curso de creación de
controles en Xailer, donde se podría abordar este tema. Si estás
interesado puedes contactar con Bingen, que es quien lo está organizando.
Un saludo,
José F. Giménez
http://www.xailer.com
http://www.xailer.info
> Muchas gracias por tus sugerencias
>
> El problema concreto es cuando se ha hacho una ventana
> independiente que tiene una funcionalidad compleja (Por
> ejemplo una gestion de graficos TRMChart, que es el caso), y
> se desea que esta aparezca en una pagina de folder de fichas
> de clientes, articulos, etc.
>
> Heredar de una clase base es buena idea, pero no se puede si
> la clase que contiene la funcionalidad es ya un formulario
> (Porque actua tambien como una ventana independiente). No se
> puede insertar una clase base comun a un formulario y a otro
> tipo de controles.
>
> Tampoco hay forma, que sepamos, de meter un formulario en
> una pagina de folder a nivel prg. (Por eso decia lo del API,
> con SetParent si se puede lograr, pero es en un lio
> impresionante)
Sí se puede. Echa un vistazo al ejemplo datacontrolsdbfdata6. Verás que
se están usando formularios diseñados con el IDE dentro de pestañas de
un folder.
En el caso concreto que planteas, lo mejor sería crear un control
"contenedor" que permita incrustar esos formularios en un folder o donde
quieras. Puedes basarte en el código del ejemplo para hacerlo. También
aprovecho para comentar que se está organizando un curso de creación de
controles en Xailer, donde se podría abordar este tema. Si estás
interesado puedes contactar con Bingen, que es quien lo está organizando.
Un saludo,
José F. Giménez
http://www.xailer.com
http://www.xailer.info
-
- Mensajes: 1831
- Registrado: Mar Oct 11, 2005 9:53 am
Reutilizar codigo de formularios
Yo lo que hago es hacer una función, mas o menos así:
Function LeeClientes( cparam1, cparam2 )
Local Self := QSelf()
With Object ::oDBFClientes
:Seek(cParam1)
:::::
End
Return ( Nil )
y en la clase lo declaro:
Method BuscaCliente( cParam1, cParam2 ) Extern LeeClientes
y para llamarlo:
:BuscaCliente( “00001†) //los parámetros son opcionales....
Espero te ayude.
Saludos.
Ramón Zea
Móvil.: 993-231.62.29
Tel./Fax: 993-353-46-73
www.zeasoftware.com.mx
soporte@zeasoftware.com.mx
zeasoftware@hotmail.com
Aliado FACTURAXION
"victor" escribió en el mensaje de noticias:518769dc$[email=1@svctag-j7w3v3j....]1@svctag-j7w3v3j....[/email]
Existe en xailer algun mecanismo que permita reutilizar el
codigo de un formulario en otro?
Un ejemplo de esta necesidad sería una ficha de cliente con
varias paginas de foder. La funcionalidad de algunas de
estas paginas puede ser similar a la de otras fichas
(proveedor, articulos, etc) aunque son lo suficientemente
distintas para que no proceda heredar todo de la misma clase
basse.
Esto se resuelve en otros entornos con UserControls, que
encapsulan el codigo de varios controles.
Como puede lograse esto en Xailer (sin recurrir al API de
windows)
--
Function LeeClientes( cparam1, cparam2 )
Local Self := QSelf()
With Object ::oDBFClientes
:Seek(cParam1)
:::::
End
Return ( Nil )
y en la clase lo declaro:
Method BuscaCliente( cParam1, cParam2 ) Extern LeeClientes
y para llamarlo:
:BuscaCliente( “00001†) //los parámetros son opcionales....
Espero te ayude.
Saludos.
Ramón Zea
Móvil.: 993-231.62.29
Tel./Fax: 993-353-46-73
www.zeasoftware.com.mx
soporte@zeasoftware.com.mx
zeasoftware@hotmail.com
Aliado FACTURAXION
"victor" escribió en el mensaje de noticias:518769dc$[email=1@svctag-j7w3v3j....]1@svctag-j7w3v3j....[/email]
Existe en xailer algun mecanismo que permita reutilizar el
codigo de un formulario en otro?
Un ejemplo de esta necesidad sería una ficha de cliente con
varias paginas de foder. La funcionalidad de algunas de
estas paginas puede ser similar a la de otras fichas
(proveedor, articulos, etc) aunque son lo suficientemente
distintas para que no proceda heredar todo de la misma clase
basse.
Esto se resuelve en otros entornos con UserControls, que
encapsulan el codigo de varios controles.
Como puede lograse esto en Xailer (sin recurrir al API de
windows)
--
Ramón Zea
Móvil: 01-993-231-62-29
ramonzea@yahoo.com
zeasoftware@hotmail.com
zeasoft.movil@hotmail.com
http://www.paginasprodigy.com/zeasoftware/
Móvil: 01-993-231-62-29
ramonzea@yahoo.com
zeasoftware@hotmail.com
zeasoft.movil@hotmail.com
http://www.paginasprodigy.com/zeasoftware/