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.

Programación repetitiva

Foro público de Xailer en español
Responder
rcardenas
Mensajes: 55
Registrado: Lun Oct 11, 2004 2:11 am

Programación repetitiva

Mensaje por rcardenas »

Hola
En la Aplicación que estoy desarrollando tengo una gran numero de Forms con identicos Metodos, como son:
METHOD FormInitialize( oSender ) CLASS TFormxxxx
// Define el Menú de Ordenación del Browse
// Definir la Barra de Herramientas - Superior
// Define Barra de Herramientas - Rebar
// Define Barra de Estado - Status Bar Inferior
RETURN Nil
//---------------------------------------------------------- --------------------
METHOD SetTag( nTag ) CLASS TFormxxxx
// Rutina para manejar los diferentes Indices de Ordenación
RETURN nil
//---------------------------------------------------------- --------------------
METHOD AddNew() CLASS TFormxxxx
Etc..
La mayoria fueron tomados del Ejemplo DbfData2, pero son tan repetidos que me gustaria crear Modulo o una Librerí­a para no tenerlos en cada Form. Hay algún ejemplo o guí­a para crear dicho modulo o Libreria.
Mil Gracias
--
Saludos

Raúl Eduardo Cárdenas S.
Law & Accounting System's, Inc.
Gerente General
Celular: (507) 672-8838
Email: rcardenas@fgs2002.com
---
Outgoing mail is certified Virus Free.
Checked by AVG anti-virus system (http://www.grisoft.com).
Version: 6.0.788 / Virus Database: 533 - Release Date: 11/01/2004
--
Avatar de Usuario
jfgimenez
Site Admin
Mensajes: 5706
Registrado: Lun Abr 06, 2015 8:48 pm
Contactar:

Programación repetitiva

Mensaje por jfgimenez »

Raúl,
actualmente no hay soporte directo para "heredar visualmente" de otro
formulario, pero yo utilizo la siguiente técnica, aunque requiere de alguna
experiencia para no perderte:
1) Crea un formulario con todo lo que van a tener de común los formularios
que vayas a hacer, incluidos los eventos que necesites, y llámalo, p.ej,
TFormBase
2) Después, crea otro formulario, vacio, y añade sólo el código que sea
específico de este formulario. Lo más habitual si estás haciendo
mantenimientos de tablas maestras es que sólo necesites sobreescribir el
evento OnInitialize con la apertura de tablas, inicialización del browse,
etc.
3) En la ventana de código, cambia en la definición de la clase "CLASS ????
FROM TForm" por "CLASS ???? FROM TFormBase"
4) Repite desde el paso 2) por cada mantenimiento que necesites
5) Compila todo y ejecútalo.
De esta forma, tendrás un formulario base con los controles y el código
comunes a todos los mantenimientos. Pero ten en cuenta lo que te he dicho:
necesitarás un poco de experiencia para no perderte en lo que estás
haciendo, ya que en los nuevos formularios no verás ningún control.
--
Un saludo,
José F. Giménez
José F. Giménez
[Equipo de Xailer / Xailer team]
http://www.xailer.com
http://www.xailer.info
Avatar de Usuario
ignacio
Site Admin
Mensajes: 9246
Registrado: Lun Abr 06, 2015 8:00 pm
Ubicación: Madrid, Spain
Contactar:

Programación repetitiva

Mensaje por ignacio »

This is a multi-part message in MIME format.
------=_NextPart_000_0056_01C4C57C.CE9081D0
Content-Type: multipart/alternative;
boundary="----=_NextPart_001_0057_01C4C57C.CE9081D0"
------=_NextPart_001_0057_01C4C57C.CE9081D0
Content-Type: text/plain;
charset="iso-8859-1"
Content-Transfer-Encoding: quoted-printable
R=E1ul,=20
En un futuro pr=F3ximo esperamos poder crear incluso formularios creados =
a partir de otros formularios, es decir, que cuando se vaya a crear un =
nuevo formulario el IDE permita no ya s=F3lo crear un formulario en =
blanco, sino un formulario basado en otro ya existente. Para ello el IDE =
incorporar=E1 un sistema de publicaci=F3n de formularios propios.=20
Puede conseguir una funcionalidad parecida creando un formulario =
incluyendole absolutamente todos los componententes y controles que =
pueda necesitar en cualquiera de los procesos. Posteriormente en cada =
proceso podr=E1 ocultar aquellos controles que no requiera o cambiar el =
comportamiento de cualquiera de ellos, por ejemplo:
FUNCTION SelArticulo( oForm, oDbf )
local oSelFrm
WITH OBJECT oSelFrm :=3D TSelFromTable():New( oForm )
:aFields :=3D { {"Codigo", "C=F3digo"}, "Nombre", "PVP" }
:oDbf :=3D oDbf
:cText :=3D "Seleccione el art=EDculo ..."
:oDbBrowse:aCols[ 2 ]:nWidth :=3D 200
:ShowModal()
END WITH
RETURN ( oSelFrm:nModalResult =3D=3D mrOK )
Este ejemplo, le muestra como usar un formulario de nombre TSelFromTable =
para mostrar registros de una tabla de art=EDculos. Este ser=EDa el =
formulario:
Un saludo=20
--=20
Ignacio Ortiz
www.xailer.com
"Ra=FAl Eduardo C=E1rdenas" <rcardenas@fgs2002.com> escribi=F3 en el =
mensaje news:[email=418ed80b@ozsrv2.ozlan.local...]418ed80b@ozsrv2.ozlan.local...[/email]
Hola=20
En la Aplicaci=F3n que estoy desarrollando tengo una gran numero de =
Forms con identicos Metodos, como son:
METHOD FormInitialize( oSender ) CLASS TFormxxxx
// Define el Men=FA de Ordenaci=F3n del Browse
// Definir la Barra de Herramientas - Superior
// Define Barra de Herramientas - Rebar
// Define Barra de Estado - Status Bar Inferior
RETURN Nil
=
//---------------------------------------------------------- -------------=
-------
METHOD SetTag( nTag ) CLASS TFormxxxx
// Rutina para manejar los diferentes Indices de Ordenaci=F3n
RETURN nil=20
=
//---------------------------------------------------------- -------------=
-------
METHOD AddNew() CLASS TFormxxxx
Etc..
La mayoria fueron tomados del Ejemplo DbfData2, pero son tan repetidos =
que me gustaria crear Modulo o una Librer=EDa para no tenerlos en cada =
Form. Hay alg=FAn ejemplo o gu=EDa para crear dicho modulo o Libreria.
Mil Gracias
--=20
Saludos
=20
Ra=FAl Eduardo C=E1rdenas S.
Law & Accounting System's, Inc.
Gerente General
Celular: (507) 672-8838
Email: rcardenas@fgs2002.com
---
Outgoing mail is certified Virus Free.
Checked by AVG anti-virus system (http://www.grisoft.com).
Version: 6.0.788 / Virus Database: 533 - Release Date: 11/01/2004
------=_NextPart_001_0057_01C4C57C.CE9081D0
Content-Type: text/html;
charset="iso-8859-1"
Content-Transfer-Encoding: quoted-printable
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML><HEAD>
<META http-equiv=3DContent-Type content=3D"text/html; =
charset=3Diso-8859-1">
<META content=3D"MSHTML 6.00.2900.2523" name=3DGENERATOR>
<STYLE></STYLE>
</HEAD>
<BODY bgColor=3D#ffffff>
<DIV><FONT face=3D"Courier New" size=3D2>R=E1ul, </FONT></DIV>
<DIV><FONT face=3D"Courier New" size=3D2></FONT>Â</DIV>
<DIV><FONT face=3D"Courier New" size=3D2>En un futuro pr=F3ximo =
esperamos poder crear=20
incluso formularios creados a partir de otros formularios, es decir, que =
cuando=20
se vaya a crear un nuevo formulario el IDE permita no ya s=F3lo crear un =
formulario en blanco, sino un formulario basado en otro ya existente. =
Para ello=20
el IDE incorporar=E1 un sistema de publicaci=F3n de formularios propios. =
</FONT></DIV>
<DIV><FONT face=3D"Courier New" size=3D2></FONT>Â</DIV>
<DIV><FONT face=3D"Courier New" size=3D2>Puede conseguirÂuna =
funcionalidad=20
parecida creando un formulario incluyendole absolutamente todos los=20
componententes y controles que pueda necesitar en cualquiera de los =
procesos.=20
Posteriormente en cada proceso podr=E1 ocultar aquellos controles que no =
requiera=20
o cambiar el comportamiento de cualquiera de ellos, por =
ejemplo:</FONT></DIV>
<DIV><FONT face=3D"Courier New" size=3D2></FONT>Â</DIV>
<DIV><FONT face=3D"Courier New" size=3D2>FUNCTION SelArticulo( oForm, =
oDbf=20
)</FONT></DIV>
<DIV>Â</DIV>
<DIV><FONT face=3D"Courier New" size=3D2>ÂÂ local =
oSelFrm</FONT></DIV>
<DIV>Â</DIV>
<DIV><FONT face=3D"Courier New" size=3D2>ÂÂ WITH OBJECT =
oSelFrm :=3D=20
TSelFromTable():New( oForm )<BR>ÂÂÂÂÂ :aFields =
:=3D {=20
{"Codigo", "C=F3digo"}, "Nombre", "PVP" =
}<BR>ÂÂÂÂÂ=20
:oDbfÂÂÂ :=3D oDbf<BR>ÂÂÂÂÂ=20
:cTextÂÂ :=3D "Seleccione el art=EDculo=20
...."<BR>ÂÂÂÂÂ :oDbBrowse:aCols[ 2 ]:nWidth :=3D =
200<BR>ÂÂÂÂÂ :ShowModal()<BR>ÂÂ END=20
WITH</FONT></DIV>
<DIV>Â</DIV>
<DIV><FONT face=3D"Courier New" size=3D2>RETURN ( oSelFrm:nModalResult =
=3D=3D mrOK=20
)<BR></FONT></DIV>
<DIV><FONT face=3D"Courier New" size=3D2>Este ejemplo, le muestra como =
usar un=20
formulario de nombre TSelFromTable para mostrar registros de una tabla =
de=20
art=EDculos. Este ser=EDa el formulario:</FONT></DIV>
<DIV><FONT face=3D"Courier New" size=3D2></FONT>Â</DIV>
<DIV><FONT face=3D"Courier New" size=3D2><IMG alt=3D"" hspace=3D0=20
src=3D"cid:005101c4c574$6cc9a8d0$0c00000a@ozlan.local" align=3Dbaseline=20
border=3D0></DIV></FONT>
<DIV><FONT face=3D"Courier New" size=3D2></FONT>Â</DIV>
<DIV><FONT face=3D"Courier New" size=3D2>Un saludoÂ</FONT></DIV>
<DIV><BR>-- <BR>Ignacio Ortiz<BR><A=20
href=3D"http://www.xailer.com">www.xailer.com</A></DIV>
<BLOCKQUOTE dir=3Dltr=20
style=3D"PADDING-RIGHT: 0px; PADDING-LEFT: 5px; MARGIN-LEFT: 5px; =
BORDER-LEFT: #000000 2px solid; MARGIN-RIGHT: 0px">
<DIV>"Ra=FAl Eduardo C=E1rdenas" <<A=20
href=3D"mailto:rcardenas@fgs2002.com">rcardenas@fgs2002.com</A>> =
escribi=F3 en=20
el mensaje <A=20
=
href=3D"news:418ed80b@ozsrv2.ozlan.local">news:418ed80b@ozsrv2.ozlan.loca=
l</A>...</DIV>
<DIV><FONT face=3DArial>Hola </FONT></DIV>
<DIV><FONT face=3DArial></FONT>Â</DIV>
<DIV><FONT face=3DArial>En la Aplicaci=F3n que estoy desarrollando =
tengo una gran=20
numero de Forms con identicos Metodos, como son:</FONT></DIV>
<DIV><FONT face=3DArial></FONT>Â</DIV>
<DIV><FONT face=3DArial>METHOD FormInitialize( oSender ) CLASS=20
TFormxxxx</FONT></DIV>
<DIV><FONT face=3DArial>ÂÂÂ //Â Define el Men=FA =
de Ordenaci=F3n=20
del Browse</FONT></DIV>
<DIV><FONT face=3DArial>ÂÂÂ //Â Definir la Barra =
de=20
Herramientas - Superior</FONT></DIV>
<DIV><FONT face=3DArial>ÂÂÂ //Â Define Barra de =
Herramientas=20
- Rebar</FONT></DIV>
<DIV><FONT face=3DArial>ÂÂÂ //Â Define Barra de =
Estado -=20
Status Bar Inferior<BR>RETURN Nil</FONT></DIV>
<DIV><FONT=20
=
face=3DArial> //---------------------------------------------------------- =
--------------------<BR>METHOD=20
SetTag( nTag ) CLASS TFormxxxx</DIV>
<DIV>ÂÂÂ //Â Rutina para manejar los diferentes =
Indices de=20
Ordenaci=F3n</DIV>
<DIV>RETURN nil=20
<DIV><FONT=20
=
face=3DArial> //---------------------------------------------------------- =
--------------------<BR>METHOD=20
AddNew() CLASS TFormxxxx</FONT></DIV>
<DIV>Etc..</DIV>
<DIV>Â</DIV>
<DIV>La mayoria fueron tomados del Ejemplo DbfData2, pero son tan =
repetidos=20
que me gustaria crear Modulo o una Librer=EDa para no tenerlos en cada =
Form. Hay alg=FAn ejemplo o gu=EDa para crear dicho modulo o =
Libreria.</DIV>
<DIV>Â</DIV>
<DIV>Mil Gracias</FONT></DIV></DIV>
<DIV><BR><FONT face=3DArial>-- <BR>Saludos<BR>Â<BR>Ra=FAl Eduardo =
C=E1rdenas=20
S.<BR>Law & Accounting System's, Inc.<BR>Gerente =
General<BR>Celular:Â=20
(507) 672-8838<BR>Email:ÂÂÂ </FONT><A=20
href=3D"mailto:rcardenas@fgs2002.com"><FONT=20
face=3DArial>rcardenas@fgs2002.com</FONT></A></DIV>
<DIV><FONT face=3DArial></FONT>Â</DIV>
<DIV><FONT face=3DArial></FONT>Â</DIV>
<DIV>Â</DIV>
<DIV><FONT face=3DArial><BR>---<BR>Outgoing mail is certified Virus=20
Free.<BR>Checked by AVG anti-virus system (<A=20
=
href=3D"http://www.grisoft.com">http://www.grisoft.com</A>).<BR>Version: =
6.0.788=20
/ Virus Database: 533 - Release Date:=20
11/01/2004</FONT></DIV></BLOCKQUOTE></BODY></HTML>
------=_NextPart_001_0057_01C4C57C.CE9081D0--
------=_NextPart_000_0056_01C4C57C.CE9081D0
Content-Type: image/jpeg;
name="Image1.jpg"
Content-Transfer-Encoding: base64
Content-ID: <005101c4c574$6cc9a8d0$0c00000a@ozlan.local>
/9j/4AAQSkZJRgABAQABLAEsAAD/2wBDAAMCAgMCAgMDAwMEAwMEBQgFBQQE BQoHBwYIDAoMDAsK
CwsNDhIQDQ4RDgsLEBYQERMUFRUVDA8XGBYUGBIUFRT/2wBDAQMEBAUEBQkF BQkUDQsNFBQUFBQU
FBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBT/ wAARCACmAMgDASIA
AhEBAxEB/8QAHAABAAIDAQEBAAAAAAAAAAAAAAUGBAcIAwIB/8QAUhAAAAQD AwYHCQwIBQUBAAAA
AQIDEQAEBQYSIQcTIjFBYQgUI0JRYpIJFjJTVHSRoeEVJjM0Q0VSZJPB0fAl KGNxlLPS0yQnOGZz
RHKBsbSE/8QAHAEBAAEFAQEAAAAAAAAAAAAAAAUBAwQGBwII/8QAPxEAAQID AgUUAQMEAwAAAAAA
AQACAwQRBSESEzFR0QYUFRY0NUFSU1RhcXJzkaGisbLSgSIykjNCQ4Ji8PH/ 2gAMAwEAAhEDEQA/
ANHr5SK1axedtTX59Sdn5m9NTMwsUVBK4uOtxAoOwBqAGAIlbLzlet3OmlaJ mVjkSVXUUmDJSyKS
SYCKih1FRKQhCgAuYwgG+ICxxEO9wZYRFM0yiQgqkOAHIVwMN1wEAEWDEQH/ ANvacmKktk7r6E2n
WqlTpZJNUgKSUqhOnunAQzIoqnTTUSEBuiU5sS631R9mvbMwcZDgwwGtb+mo qCQBS5t9OClK3XVr
d89RBKOitdEeS5zv1DJQVIym6tL61pffkUPU65WKTUZqSXWljryypkVDSx0l 07xRYbqhBMUwOGso
iA9Me9fnbRWXqy9MqZCS06iBBUSZM928UDlxK4eCYB17Y3XNZerOS9jK9R6F ZslDCoLT92SBE6kq
unMEKQpliEnEkynTABEoGSmAILXBKzjmJcIuh0+nWiLI0pcs9PrCsU00gZRK bAZFKXzMyRKdRKKR
TkOYonKtgoIgmQ2uK2RtIX6xN34JNW0z0FCbv1ddxUhrGziaa5F58AK9Vcgv u6si5477Kn4wn2Zf
wjMUq1bTpCNTMeXCUWXPLE0khUE5CkMbk/DAGULpCDC7ALgLblHLNRhtBKTp KjaiVkyUs8lL09AE
sxQFRlSogvTgz4AJ7wCL3UR0hG8JhvR52fy1yFNphJGeqVpqhMEnKqujX1jJ mn5UJqWQSTXSdcWX
A6ShhAFAYFMFL2IZD52epVkpwVpU9NR+2l1BffWv6Q4XqwyVkSRhRxfdwdF+ Wv4oMl9CtJd9lT8Y
T7Mv4Q77Kl4wn2Zfwjfs1wiJNU+ZTCtBT1lpsagQ6iYGqpD0tCTIpMlBS6dU 6qJljgImAomAQMYw
PEDldyv03KBY2m2fplPCQlkBlVBl1klBJJijL5oSyxzTahClOIiYwEl0XYom viF6PUGdnYkWGx8m
Wh1KmuTruGb2yE0VIkpIsY5zZgEgG6mWnBl4f/Ki9awk520VQo9RqkuQh5Gn ikEyqyYZsVBEpMBx
FxAdQCzYxHja2ph8oT7Mv4R0JZvL9Z2g0uz8qtK1mflZItLKpQFSpe5aB5UD ApMI8s4qKmHOC6RR
vjicQYQ1vlYtpKZULWU2dVOsEjJyycoaaUQULOrkA5jmMoK03NGOYL4lKJlh wKUNEAAA9yk1Oxpl
0GNKlrKmjugAdF5JzXZq0JXmPLSUOAIsOMC6gqOkk9PAPznpUKhd91T8aT7M v4Q77qn40n2Zfwic
QpNjhm089MV0srx5YT3EZcVAk2DMsAqNnhG9eB7gYMYYrwUkogDqlAeh4nYb RFyNp1ghRbwyHlIP
Uar177qn40n2Zfwh33VPxpPsy/hHl7kk8cX0w9ySeOL6Yv4joCs4yGvXvuqf jSfZl/CA2uqbfCk+
zL+EeXuSTxxfTAaSVvhS+mGI6AmMhr7776l40nYL+EO++peNJ2C/hHl7kl8a X0w9yS+NL6YrrcKu
MhL1776l40nYL+ETNlaxM1ipHTnJgU5dNMVDZohAMOIFAAEQFsTdGyIH3JL4 0vpiWs/J8VUmxTMC
ip0QKRMmJjDnCCIAG0WAR/8AEWI0AiGcFXoLoLojQVNVCsycmIgB5ww/96X9 uNkZJcnUvlEpRlTz
M8eorTZ0ZaVSmJaXIBCS6axhMooS67KD9HwekY1vaWlSKyBRpkpWVFXG8E1K XQbddeL1k1q3uTQU
EDys7NkE80SYTkJcV1UBUkkEiiYgasQNrZ7hg2DGszhia2w4LiDfl6Mn/aiq 2WDBlcdgvYCFPW3y
SGsYWnlmkp1H3QmiSSK5KvITRSKHFgExESCLA7sIldhABDXE0OQSmrWa91Ul 69Ugl1CS02aSWlwE
qpsAHNZkxilMOACL4iziMUmZMlIL08krIVksuNWkpyam6hThlkkEkTHvCJrw hqOI4t4O1425YHLE
GT0KlU6RSp2o1uZmDElpvMqKSfFBPfcAJ4ZjYBiLAG+OP6uLWtizJeXMlGcM InCcxpzXXHCI6q35
bl07UVZFk2jHmNdQGktDcFr3AA1N99W8HDQ0zHItD5bqZVODudKuWdqNTpNp KRPSwGBabRWuComo
qBTZpMrCGbADEERe8ICHSjG4Uk5S61ZquLU2Rn6TJzc/LTacrVBHO38zMZ26 JsTkKc4BeHFjFfEY
RMakhMW5YkKbtZuMiYTxV7RXBDjTKBd+Ff1RS8lZVqRJazQGswWGjTdUsBPC 6+vSV0pwSsmNi6/k
EsdP1SylBqNQWBTOzM5IIqqqCEymULxjGccGDENQs2LH2zK5G8nZuL+8izAv mvmyXF/i3XHp369r
8pr/AIKFbNROC/YuYImEyrpIJpGmBTLfUnU0yiYQMIgUDKAI6Gp8MdK71LLr R6BRZmcm6XPnWps4
pKzoS0wKqZAQWl01TkETAdQABRExQAjmvs2JxDkNvTs2215xrYrgBFf/AHHj HpWVIwIJlIRLB+1v
AMwWTKZGsnY8X95FmBfNfNkuL/FuuPTv17X5RKZGsnY8X95FmBfNfNkuL/Fu uPTv17X5T7DLpZOX
RBRaUrsqCagJCSYQUA5TETRUWcgnvCCJDJGOLCAgJ7t9jwoeWyz1QWqYKydS k0JFIsymqdXOZ1Li
pZkgiBTiIGMmioIALgxBAwlMpdGB19O8q7+R0rO1vA4g8AviUyNZOx4v7yLM C+a+bJcX+Ldcenfr
2vyiUyNZOx4v7yLMC+a+bJcX+Ldcenfr2vykjS8rFn6lWZOlS0nVRqCyy8sV EyhdFeXAplkzGzrC
JSkIImcSmvCxjCJwi1KiCE/miqGApFCEADKiIs8uGLqOOvaG3UL6bX84P8zv 5HSmt4PEHgFRJTI1
k7Hi/vIswL5r5slxf4t1x6d+va/KJTI1k7Hi/vIswL5r5slxf4t1x6d+va/K bxoNlqbM0OnKqpKn
UUlkzGMMwo4iJQER8KM/vQpXk6n8Qp/VGWY84DTHu8TpVkQoJFcWPAaFz/KZ GsnZuL+8izAvmvmy
XF/i3XHp369r8olMjWTs3F/eRZgXzXzZLi/xbrj07/C2vynQHehSvJ1P4hT+ qHehSvJ1P4hT+qGu
Jzl3eJ0quKhcmPAaFz/KZGsnZuL+8izAvmvmyXF/i3XHp3+FtflEpkaydm4v 7yLMC+a+bJcX+Ldc
enf4W1+U6A70KV5Op/EKf1Q70KV5Op/EKf1Q1xOcu7xOlMVC5MeA0LnCaya5 LqONMCcsbZhPjaqa
KQ+5KBgEwJoqC4gYWACEOYTDgzuIvymfKZGsnZuL+8izAvmvmyXF/i3XHp3+ FtflNrW5skrLTdmZ
2hUX3Vm5WoqGNLrzRiI3TyU0kAqGNeup3lCXhApjMIsUwsUYjIxIS1o6LWF5 oeTRqi6KFNZVNWmp
gxiS6ps8cDnAhiCIA1wTCmzkYGuJvl3eJ0pioPJjwGhUCUyNZOzcX95FmBfN fNkuL/FuuPTv8La/
Kfkrkaydm4v7yLMC+a+bJcX+Ldcenf4W1+U6B70KV5Op/EKf1R4zllaWhJrq lQUvETMYP8QpsD/u
gI84TTHu8TpTFQeTHgNC0JKZGcnQ8X949lxfNfNkuL/FuuPTv17X5RKZGcnQ 8X949lxfNfNkuL/F
uuPTv17X5TLm7cEG0ylERlqkSZTc5lDENmQSugJVL7sICLlAPCcpsGARi1Sq whxcBVMI8kGkqIiP
xbW6m/o26hfTvzZn5NrXPjuNf+R0q3CECMSBDF3QFSpTIzk6Hi/vHsuL5r5s lxf4t1x6d+va/KYS
uTPJTS+LcesvY2TvAmIcYkpQl4GlxHwj44Xh27db8psKUXfi/Ku+a+Vd/i37 Uenfr2vp+2Tmbzds
LQmA94w06mhevXh1LjrvG6X17Xxe8OFCnZt5NYzv5HSrz4MJtKMHgFq6XsRk cLmb1DsKDZu86Els
zD/KD9E/TqHW43/yXsRkcJmb1DsKDZu86ElszD/KD9E/TqHW4392ZSbd1SyN n05mkU1asVJWYKmj
KpJHPfYDKHAbgCJbxEzFKZhADmII6LxR7R8JZehSy00jZmZn5JIs+qaZLNFS KmnLFcBUA5QEDHDl
LhQMJUuUF/Bi/rqY5Z/8ireJh8RvgqXL2KyNlzN6iWFBs3edCS2Zh/lB+ifp 1Drcb/5L2IyNBmb1
DsJhm3eXktmYf5Qfon6dQ63G/c0eEZVfd2QpyllF1AqFVCnS0wiuIJXBRRME wBjEAVEROZbTIAsQ
EjGKXOAAbk90T/SGGupjln/yKYmHxG+C4b4WmTKxND4MtrqvRrK2fkZsskge Wn5CRQIoACvJkMJD
kMYdpwEQ6RxxETosPDBUv8E/KJi16YnBYB1/pkmLP9w69YPijuGoiLFfZkTG OLiIrhUmv9rFrVoM
aI4wQB+kZOsqU4G1xbg12ORVBNVA8vMkVSWYxDJjMFA4GKY7NdEdm3VjpboS oqcwhJFPS5I6KQEF
MOKpCVMLqRRu6Qto3ww2AAYgAXtDcFmipWo4JNEoiyiRCVGmT8mArBfIUyit woiW9iwmDZ6Hc17t
bk4rloqhUyUq3S1Go06aXTRp6IAKKEuCJUzJJkAC3XE4GcDaWcABALhY4pqg 35nO9ifMrZZDccHs
t9gr+WhlWl5ZBakyZkEs3dSNKpXSMCIYBeEAYCmZtVwG8Et7yTs1LnQVQNR5 Iia6RpeYKnKpFvEU
zQqlFjajOoIhtbawXqhUrKWnnbL12RkLZDJT0+sU8muRdQ5pcL4mKJVDOJcF ZcgluiUxUsQAyxjF
+avYyvzFp69UqHatKlIVVcFgSvqqAe9JIyxRuuBUzENdOUSeEJy3vALEAs5X aUoZZfMXaTJpXEiI
aEqkW6noOQGNgXTXwDDEdeF77OMwSYRGYEU1FBIYQEzON6XAWAFG1uH4vp65 m7D2wmbOzklLW7EK
hMIgRCfKusU6Y30zJgAOYuAiUwnEoicFRTYpboheKJLq0+m0uWXqA1GZTTSK tNmXOYVjvL3jsY2j
eERG6Dgxg6RAaKquNGXtSFIkQlkUBl8wnmxOmW9dugz8praMzjFsPES32Zf7 sfFAt7REaJTUTzKp
VSy6RBLxRbXdIDeB1y9oIziZRKApduzao3mZpRbF7rczrk7QRME3rCAFMqxO MWw8RLfZl/uw4xbD
xEt9mX+7GWTKJQFLt2bVG8zNKLYvdbmdcnaCBMolAUu3ZtUbzM0oti91uZ1y doIpVeqDOsTjFsPE
S32Zf7sOMWw8RLfZl/uxlkyiUBS7dm1RvMzSi2L3W5nXJ2ggTKJQFLt2bVG8 zNKLYvdbmdcnaCFU
oM6xOMWw8RLfZl/uxiKzlpKOidY0rKS6SixRUMmgXExzAW8IApiLiDjriWJl EoCl27NqjeZmlFsX
utzOuTtBEbX7b0aqUsJeVmVFVVVkLgcWVAB5VIXcSsGBy+kIVVKDOqxKZVLR VNJJenUOeqMouW+h
MoSqAFWJ9MoGmQM37wCPVa3VsF0jpnslVTEOUSmDi0tqH/8AVHOiNbPTK3Zs qh56lz1Oo56ctNBJ
HE0kuBJ1Mo+DeM3GSGcotoBgZwEtuksoE0lV152Yt3MTBFZkZgksNOnwSQET iYGKDXyFLoAkIgU1
4TGFykbOdLxGuIbDJHAc/TkWK2I1zQXPAKuxzTCK0qnVKFUqTLrrElyzM4km KecMLEKNyYMbEWDV
tialFQaWAFBEOSblA+rdCjbdgbdr6erbKV2Ym6PS6EvaKpWsq6lokJwqkyjM GzEmQ4GAgnOmQBuA
AiJmATPi8bSlFX4vyjvmuf5t+0Hp369r6WDaDopwBFJ6j1rIlgyri3xSUWfi /KiL5r5R3+LftB6d
+va+nBoyU7P12bNRVK8aoBKSgTQUpWTuZu4YUrwzJjYuKvgj+93ARnJRV+L8 o75rn+bftB6d+va+
l+WCnyI2wr4HWKAjTqaOkd9i/WH89OscCB+4no0LIiXgBYfuHbLptn9tRY+V LP2vWTMmoW2KhDAJ
TFMrRBAQHWAhFhtglNVGs0ZdHOTkggVUqsqhPmlRBYxkhSWMYpgESkAioCAO PKAxR2UaVmMrubXU
mqrICTPIkKhLllyrZkTKGmDFMYBKKgckmmJmKJXE5bw6OZhjMFZwDnKmfcS2 X+8/tqJ+MPcS2X+8
/tqJ+MV6eTywBVRnka1S1RTmJoqSBCkKmCJlEjJFEom5Qt1O6JxuqFvqiUB0 QHbVm5+cQs7Sk6xN
pTFWJKJFnFSCUAOsBAzhgYABhM44AAbghhjMEwDnK5b4XySMtwQ7apInmzCC Sme48Ymez/umjnr1
wboiCgnxKAl6BANaPnheLArwS8oRimAxTLzggw6/0yTf9w/vDajuWoW6y4ve v+LFrVo/129lvu5S
3AzO3BysOF5tFXC99bJ1t/Rt36W5ZRR+L6b/AAXP826+/wBe19LTfAzN+rlY cL3NVwvfWydb7tu/
HatInqutZ2lVyYp0mlJzIyfJpzSpjlBY6JC6wYWcg72HpGOOW9Dc+2J0t5V/ yKn5J4bKQa8VvsFn
yij8X03+C5/m3X3+va+klFH4vpv8Fz/Nuvv9e19KkU7LvZUy9OJNys7Ikm5N SfSOAmmBIgkQD3jl
TExgwSHAAHwDPrcZhfK7YiVqiNPQn1Z2YJUTUtYsqmsrxaYImJwIowCwmzAF IGIqCLFAzmjXKFSS
n5RR+L6b/Bc/zbr7/XtfSSij8X03+C5/m3X3+va+lCWkyrWLscjSV5+fUSk5 4iKqc0BFjJETUIJk
TGM3PFAClL4RhfAQvDEjO25snSQvK1A2bTTIrnEiLKku3CKAxigICIJlIoIO 4E0xACiIioUWVKKP
xfTf4Ln+bdff69r6SUUfi+m/wXP826+/17X0q/J5X7Dmo9OqCtRPKkmZQk6B DkWOKKd8E3UEoCBQ
BRMCCIiwmBnG9jkBlVsIiWTH3aABmAU4uUSr3lM0kmsYClZxHNgmcA5wOz6U KFFMSij8X03+C5/m
3X3+va+klFH4vpv8Fz/Nuvv9e19Kbl5GVOkkokBjEECmIbOGxDRbb1C+vpF/ slNlyXWKbRZuUNsu
tt6hfX0i9EUDKKPxfTf4Ln+bdff69r6SUUfi+m/wXP8ANuvv9e19KeJTZcl1 im0WblDbLrbeoX19
IuJTZcl1im0WblDbLrbeoX19IuRQMoo/F9N/guf5t19/r2vpJRR+L6b/AAXP 826+/wBe19JKHfi+
n4rnebdb8vvxSh34vp+K53m3W/L78SJKKPxfTf4Ln+bdff69r6SUUfi+m/wX P826+/17X0kod+L6
fiud5t1vy+/FKHfi+n4rnebdb8vvxIkoo/F9N/guf5t19/r2vpJRR+L6b/Bc /wA26+/17X0kod+L
6fiud5t1vy+/FKHfi+n4rnebdb8vvxIkoo/F9N/guf5t19/r2vpYC1DpVYNL GqFMp9RPdTKB5yWT
WMACCAMAmERANMdXS+I68+UO/F9PxXO82635ffilDvxfT8VzvNut+X341BIN QqEA3FQ8vY+zamZe
zlDG9m3/AEahtzD/AMw3pDc6XsfZtTMvZyhjezb/AKNQ25h/5hvSG55iUO/F 9PxXO82635ffilDv
xfT8VzvNut+X34+8Y/OV5wG5lDy9j7NqZl7OUMb2bf8ARqG3MP8AzDekNzpe x9m1My9nKGN7Nv8A
o1DbmH/mG9IbnmJQ78X0/Fc7zbrfl9+KUO/F9PxXO82635ffixj85TAbmWjO GYRJDgn21l5dJGXl
0pGXBNGXIVMhQGZkzCxSiwYmEdW30o+uGkZ+CtbrSf8AwUtzn+XkusP59aO/ 6gb7If3jvixapal0
z/qPdyzOBoa7wcbECJmACLCOP1om/wDP/vcEjSglafJSAzFSUp8sKAklVVii QubMmYgCxXG6IPrx
ze+NRcC7/TpYj/jX/wDqLHRMcft97mWxO0OWLE+RU7ItDpSDXit9gqBTbAUC Vl0UpqkjUjJy4Saa
08BVFEZdihmSiBQYgAY+Aa2MGozR9lyfWUMuCw2Xl01RVz4mK4CU4kKneBtQ kIJgK3ggUbrPF8hG
u1UiqXOWPs7VeJcbs6ibiqKSCGsMyQjXAK2q5fUuiGIMZmvR6T1lqBV1BUnL PIKGUIRM7lYAKAEB
mDquUW1lJdFwEAi4QhVFREsn9ki573pSJOMy6cqsGaBhRKchwT1eCB7xmDC8 UR1mcfRWw9mJs6Bl
bMyxTJlKQBKW7dDMlRDVrupiYpR2AUWa9F3hCqKMl6hmkkkySQoplApQIXAC Bo4AABqBzdjeEfZK
sc129KnK7Pi7eC/oc3Y3hEhCKXIo8lWOa7elTldnxdvBf0ObsbwgSrHNdvSp yuz4u3gv6HN2N4RI
QhcircumoTM3inC7m3wHZmH29Q3o34pdNQmZvFOF3NvgOzMPt6hvRvxskIXI q3LpqEzN4pwu5t8B
2Zh9vUN6N+KXTUJmbxThdzb4DszD7eob0b8bJCFyKty6ahMzeKcLubfAdmYf b1Dejfil01CZm8U4
Xc2+A7Mw+3qG9G/GyQhcircumoTM3inC7m3wHZmH29Q3o34pdNQmZvFOF3Nv gOzMPt6hvRvxskIX
Iq3LpqEzN4pwu5t8B2Zh9vUN6N+KXTUJmbxThdzb4DszD7eob0b8bJCFyKty 6ahMzeKcLubfAdmY
fb1Dejfil01CZm8U4Xc2+A7Mw+3qG9G/GyQhci5p4ahTF4K9uwM4CEpLlEBH UITEkAhr/P8A5xRl
8Ob/AEyZRP8AjT/+iRhH0HqB3of3jvgxajam6v8AUe7l7cCVLP8AB8sGm7Ac Fiv0PNEjqbvWL5QP
Y9scu8B4P8g8n+G1XZ9bJHX8cmttjXWvO1H+WJ8ipySJEpB7LfYKC71i+UD2 PbDvWL5QPY9sTsIh
sUzMszCKgu9YvlA9j2w71i+UD2PbE7CGKZmTCKgu9YvlA9j2w71i+UD2PbE7 CGKZmTCKgu9YvlA9
j2w71i+UD2PbE7CGKZmTCKgu9YvlA9j2w71i+UD2PbE7CGKZmTCKgu9YvlA9 j2w71i+UD2PbE7CG
KZmTCKgu9YvlA9j2w71i+UD2PbE7CGKZmTCKgu9YvlA9j2w71i+UD2PbE7CG KZmTCKgu9YvlA9j2
w71i+UD2PbE7CGKZmTCKgu9YvlA9j2w71i+UD2PbE7CGKZmTCKgu9YvlA9j2 w71i+UD2PbE7CGKZ
mTCK5A4fEkEhwbcoqQHE4ZpIXZvl5GEZPdCP9O2Ub/gR/nyMI7rqEAFlRAOV d8Ya1a090jsj3csb
gPB/kHk/FtquLfWybvv9nX8cgcB4v+QeT8W2q4t9bJu+/wBnX8cmtrfed72J 8ipyS3JB7LfYJCEI
iVlpCEIIkIQgiQhCCJCEIIkIQgiQhCCJCEIIkIQgiQhCCJCEIIuSe6Ef6dso 3/Aj/PkYQ7oQH6u2
UUW+RRxb9vI7vv8AYjuGoXeuJ3rvixaxae6R2R7uWNwHitkDyfjd2q4t9bJt b79m7Dr+OQOA8Rsg
eT811sVcbv1sm27u6dm1tHr+OS21vvO97E+RU5Jbkg9lvsEhCERKy0hCEESE IQRIQhBEhCEESEIQ
RIQhBEhCEESEIQRIQhBEhCEEXJPdCA/V1yii3yKOLft5Hd9/p2Id0IB+DtlF FtSKIO37eR2t94fu
HYjuGoXeuJ3rvjDWsWnukdke7ljcB4jZA8n5rjYq6V362Tbd3fS2bWYvX8cg cB4jZA8n5rjOKulc
+tk23A6PpDq2sxev45LbW+873sT5FTkluSD2W+wSEIRErLSEIQRIQhBEhCEE SEIQRIQhBEhCEESE
IQRIQhBEhCEESEIQRck90IL+rtlGFtSCIO2rl5Ha33h+4diHdCC/q7ZRTNqR RB21cvI7W+8P3DsR
3DULvXE713xhrWLT3SOyPdyxuA8m2QPJ+a4zirpXG/6sm24HR9IdW1mJ1/HI HAeSbIHk/Pm2cVdO
4z/4sm24HR9IdW1mJ1/HJba33ne9ifIqcktyQey32CQhCIlZaQhCCJCEIIkI QgiQhCCJCEIIkIQg
iQhCCJCEIIkIQgiQhCCLknuhBX4O2UU112RRC82rl5Ha27pDVqFnBDuhBf1d soprupFEL13Vy8jg
93dqvBq1CzlR3DULvXE713xhrWLT3SOyPdy4zyL90GpmSHJvQrLhYqdqS1MK cBnk6glLioJlQUFg
zJjB4IB4QiOvBi3b2TusBC3XsXWzMzvaIuLXdbS+26PbNq0WQjcY2pCxJqM+ YjQKueS4nCeKkmpN
A6mVQLbTm4TRDY+gFwuGQfhCd1gIW69i62Zmd7RFxa7raX23R7ZtWiwndYCF uvYutmZne0RcWu62
l9t0e2bVoshFraTYHN/XE+y9bLzvH8hoQndYCFuvYutmZne0RcWu62l9t0e2 bVosJ3WAhbr2LrZm
Z3tEXFrutpfbdHtm1aLIRXaTYHN/XE+ybLzvH8hoQndYCFuvYutmZne0RcWu 62l9t0e2bVosJ3WA
hbr2LrZmZ3tEXFrutpfbdHtm1aLIRTaTYHN/XE+ybLzvH8hoQndYCFuvYutm Zne0RcWu62l9t0e2
bVosJ3WAhbr2LrZmZ3tEXFrutpfbdHtm1aLIQ2k2Bzf1xPsmy87x/IaEJ3WA hbr2LrZmZ3tEXFru
tpfbdHtm1aLCd1gIW69i62Zmd7RFxa7raX23R7ZtWiyENpNgc39cT7JsvO8f yGhCd1gIW69i62Zm
d7RFxa7raX23R7ZtWiwndYCFuvYutmZne0RcWu62l9t0e2bVoshFdpNgc39c T7JsvO8fyGhCd1gI
W69i62Zmd7RFxa7raX23R7ZtWiwndYCFuvYutmZne0RcWu62l9t0e2bVoshF NpNgc39cT7JsvO8f
yGhCd1gIW69i62Zmd7RFxa7raX23R7ZtWiwndYCFuvYutmZne0RcWu62l9t0 e2bVoshFdpNgc39c
T7JsvO8fyGhCd1gIW69i62Zmd7RFxa7raX23R7ZtWiwndYCFuvYutmZne0Rc Wu62l9t0e2bVoshD
aTYHN/XE+ybLzvH8hoQndYCFuvYutmZne0RcWu62l9t0e2bVosJ3WAhbr2Lr ZmZ3tEXFrutpfbdH
tm1aLIRTaTYHN/XE+ybLzvH8hoQndYCFuvYutmZne0RcWu62l9t0e2bVosJ3 WAhbr2LrZmZ3tEXF
rutpfbdHtm1aLIRXaTYHN/XE+ybLzvH8hoWvsundB5TLLkqtBZAbHT0kvVEi JhUJmqJzApiVRA4i
IZkoi+YDC8AaWrAABCEZ0Gy5SyIet5JmCwkupUm80Fakk5AFdZMRJomJGNTk /H461//Z
------=_NextPart_000_0056_01C4C57C.CE9081D0--

Attached files
Ignacio Ortiz de Zúñiga
[Equipo de Xailer / Xailer team]
https://www.xailer.com
rcardenas
Mensajes: 55
Registrado: Lun Oct 11, 2004 2:11 am

Programación repetitiva

Mensaje por rcardenas »

José
Me parece esta forma muy muy util, lo he intentado pero sin resultados.
puedes mandar un corto ejemplo con los dos formularios.
--
Saludos
Raúl Eduardo Cárdenas S.
Law & Accounting System's, Inc.
Gerente General
Celular: (507) 672-8838
Email: rcardenas@fgs2002.com
"Jose F. Gimenez" <jfgimenez@wanadoo.es> escribió en el mensaje
news:418f377c$[email=1@ozsrv2.ozlan.local...]1@ozsrv2.ozlan.local...[/email]
> Raúl,
>
> actualmente no hay soporte directo para "heredar visualmente" de otro
> formulario, pero yo utilizo la siguiente técnica, aunque requiere de
alguna
> experiencia para no perderte:
>
> 1) Crea un formulario con todo lo que van a tener de común los formularios
> que vayas a hacer, incluidos los eventos que necesites, y llámalo, p.ej,
> TFormBase
>
> 2) Después, crea otro formulario, vacio, y añade sólo el código que sea
> específico de este formulario. Lo más habitual si estás haciendo
> mantenimientos de tablas maestras es que sólo necesites sobreescribir el
> evento OnInitialize con la apertura de tablas, inicialización del browse,
> etc.
>
> 3) En la ventana de código, cambia en la definición de la clase "CLASS
????
> FROM TForm" por "CLASS ???? FROM TFormBase"
>
> 4) Repite desde el paso 2) por cada mantenimiento que necesites
>
> 5) Compila todo y ejecútalo.
>
> De esta forma, tendrás un formulario base con los controles y el código
> comunes a todos los mantenimientos. Pero ten en cuenta lo que te he dicho:
> necesitarás un poco de experiencia para no perderte en lo que estás
> haciendo, ya que en los nuevos formularios no verás ningún control.
>
> --
> Un saludo,
>
> José F. Giménez
>
>
---
Outgoing mail is certified Virus Free.
Checked by AVG anti-virus system (http://www.grisoft.com).
Version: 6.0.789 / Virus Database: 534 - Release Date: 11/07/2004
Responder