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