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.

lMsgAuto

Foro de Xailer profesional en español
Responder
joseluis
Mensajes: 642
Registrado: Jue Sep 08, 2005 12:54 pm

lMsgAuto

Mensaje por joseluis »

José,
Tengo un formulario redefinido como un tPage. Algo así­ como:
CLASS tFrmClientes FROM TPage // antes era FROM tForm
y desde que añadí­ una barra de estado no se por que me está cambiando la
propiedad lMsgAuto a .T. él solo...
¿Como puedo evitarlo?
Saludos y gracias por vuestro tiempo.
José Luis Capel
Avatar de Usuario
jfgimenez
Site Admin
Mensajes: 5718
Registrado: Lun Abr 06, 2015 8:48 pm
Contactar:

lMsgAuto

Mensaje por jfgimenez »

José Luis,
> Tengo un formulario redefinido como un tPage. Algo así como:
>
> CLASS tFrmClientes FROM TPage // antes era FROM tForm
>
> y desde que añadí una barra de estado no se por que me está cambiando la
> propiedad lMsgAuto a .T. él solo...
>
> ¿Como puedo evitarlo?
Acabo de comprobar que lMsgAuto se pone a .T. automáticamente cada vez que
se añade un control al formulario que tiene algo en la propiedad cMessage.
El hecho de que se ponga a .T. automáticamente es algo que viene de hace
muchísimo tiempo, y si te parece que no debería ser así lo podemos discutir
el "Xailer team" para cambiarlo.
--
Un saludo,
José F. Giménez
José F. Giménez
[Equipo de Xailer / Xailer team]
http://www.xailer.com
http://www.xailer.info
joseluis
Mensajes: 642
Registrado: Jue Sep 08, 2005 12:54 pm

lMsgAuto

Mensaje por joseluis »

José,
>
> Acabo de comprobar que lMsgAuto se pone a .T. automáticamente cada vez que
> se añade un control al formulario que tiene algo en la propiedad cMessage.
> El hecho de que se ponga a .T. automáticamente es algo que viene de hace
> muchí­simo tiempo, y si te parece que no deberí­a ser así­ lo podemos discutir
> el "Xailer team" para cambiarlo.
>
Sabiendo que es así­, no me molesta. Solo me es molesto por que como
hago el tema de un formulario convertirlo a un page (recuerdas?) pues
entonces esa propieda no la tiene el tPage y me da error. Entonces tengo
que recordar en cambiar esa propiedad a .F.
Saludos y gracias!
José Luis Capel
PD: ahora que lo pienso... en realidad si que lo voy a necesitar... pero
al crear un formulario FROM tPage no existe... vaya... ¿como me lo apaño
ahora? ;-)
Avatar de Usuario
jfgimenez
Site Admin
Mensajes: 5718
Registrado: Lun Abr 06, 2015 8:48 pm
Contactar:

lMsgAuto

Mensaje por jfgimenez »

José Luis,
> PD: ahora que lo pienso... en realidad si que lo voy a necesitar... pero
> al crear un formulario FROM tPage no existe... vaya... ¿como me lo apaño
> ahora? ;-)
Tan sencillo como:
CLASS TPage FROM XPage
DATA lMsgAuto INIT .F.
ENDCLASS
--
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
jfgimenez
Site Admin
Mensajes: 5718
Registrado: Lun Abr 06, 2015 8:48 pm
Contactar:

lMsgAuto

Mensaje por jfgimenez »

José Luis,
> CLASS TPage FROM XPage
> DATA lMsgAuto INIT .F.
> ENDCLASS
perdón... en vez de DATA usa PROPERTY, si no te dará problemas.
--
Un saludo,
José F. Giménez
José F. Giménez
[Equipo de Xailer / Xailer team]
http://www.xailer.com
http://www.xailer.info
joseluis
Mensajes: 642
Registrado: Jue Sep 08, 2005 12:54 pm

lMsgAuto

Mensaje por joseluis »

José,
>
>>CLASS TPage FROM XPage
>> DATA lMsgAuto INIT .F.
>>ENDCLASS
>
>
> perdón... en vez de DATA usa PROPERTY, si no te dará problemas.
>
chasgracias!!!
Saludos,
José Luis Capel
joseluis
Mensajes: 642
Registrado: Jue Sep 08, 2005 12:54 pm

lMsgAuto

Mensaje por joseluis »

José,
>
>>CLASS TPage FROM XPage
>> DATA lMsgAuto INIT .F.
>>ENDCLASS
>
CLASS TPage FROM XPage
DATA lMsgAuto INIT .F.
METHOD OnInitialize( oSender )
ENDCLASS
¿Se puede?
Es decir, tPage no tiene algunos de los eventos del tForm, entre ellos
el OnInitialize....
Lo he probado y me da un error en tiempo de enlazado:
Error: Unresolved external '_HB_FUN_TPAGE_ONINITIALIZE' referenced from ....
¿Alguna pista?
Saludos y gracias!
José Luis Capel
Avatar de Usuario
jfgimenez
Site Admin
Mensajes: 5718
Registrado: Lun Abr 06, 2015 8:48 pm
Contactar:

lMsgAuto

Mensaje por jfgimenez »

José Luis,
> METHOD OnInitialize( oSender )
En vez de esto, pon:
EVENT OnInitialize( oSender )
--
Un saludo,
José F. Giménez
José F. Giménez
[Equipo de Xailer / Xailer team]
http://www.xailer.com
http://www.xailer.info
joseluis
Mensajes: 642
Registrado: Jue Sep 08, 2005 12:54 pm

lMsgAuto

Mensaje por joseluis »

José,
>
> En vez de esto, pon:
>
> EVENT OnInitialize( oSender )
>
Lo he probado. El problema, creo, es que como en un formulario cambio
el FORM tForm por un FORM tPage (a pelo) entonces, si desde el IDE
genero el evento OnInitialize, el nombre que le da es diferente al
esperado por el tPage. No se cual nombre espera el tPage pero desde el
IDE se crea como:
METHOD FormInitialize( oSender ) CLASS tFrmClientes
y supongo que lo correcto serí­a...
METHOD PageInitialize( oSender ) CLASS tFrmClientes
no?
Entonces... como puedo hacer (sin tocar el IDE) estas operaciones ??
Saludos y gracias,
José Luis Capel
Avatar de Usuario
jfgimenez
Site Admin
Mensajes: 5718
Registrado: Lun Abr 06, 2015 8:48 pm
Contactar:

lMsgAuto

Mensaje por jfgimenez »

José Luis,
OnInitialize es un evento propio de TForm, pero no lo tienen los demás
controles, por lo que no te serviría.
Ya sabes que yo también estoy implementando un interface parecido, sólo que
con un TFolder en vez de un TPages, y lo mejor es que te crees una clase
intermedia con la funcionalidad básica y común, incluido un método de
inicialización que puedes sobreescribir en las clases hijas. Yo tengo esta
clase (le he quitado algunas cosas propias mias):
//---------------------------------------------------------- --------------------
CLASS TFormFolder FROM XFolderPage
DATA nFormType
METHOD New( oParent )
METHOD CreateForm() VIRTUAL
METHOD Initialize() VIRTUAL
METHOD UpdateTasks() VIRTUAL
METHOD Close() INLINE ::Delete()
METHOD WMKeyDown()
ENDCLASS
//---------------------------------------------------------- --------------------
METHOD New( oParent ) CLASS TFormFolder
Super:New( oPrincipal:oPages )
::UpdateTasks()
::CreateForm()
::Initialize()
RETURN Self
//---------------------------------------------------------- --------------------
METHOD WMKeyDown( nKey, nFlags ) CLASS TFormFolder
IF nKey == VK_F4 .AND. lAnd( GetKeyState( VK_CONTROL ), 0x80 )
::Close()
RETURN 0
ENDIF
RETURN Super:WMKeyDown( nKey, nFlags )
//---------------------------------------------------------- --------------------
Después, sólo tienes que derivar tus "formularios" de esta clase en vez de
derivarlos de TPage, y sobreescribir los métodos que necesites: Initialize()
como sustituto de OnInitialize y UpdateTasks() yo lo estoy usando para
actualizar la explorerbar y optionlist que tengo a la izquierda. El método
CreateForm() ya te lo crea automáticamente el IDE dentro del .xfm
Además, según lo vayas necesitando puedes seguir añadiendo toda la
funcionalidad que quieras en esta clase, y las clases hijas la heredarán.
--
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
jfgimenez
Site Admin
Mensajes: 5718
Registrado: Lun Abr 06, 2015 8:48 pm
Contactar:

lMsgAuto

Mensaje por jfgimenez »

José Luis,
por cierto, olvidaba decirte que con esta clase, en vez de llamar a New(),
CreateForm() y Show(), sólo tienes que llamar a New() para crear y mostrar
el "formulario".
--
Un saludo,
José F. Giménez
José F. Giménez
[Equipo de Xailer / Xailer team]
http://www.xailer.com
http://www.xailer.info
joseluis
Mensajes: 642
Registrado: Jue Sep 08, 2005 12:54 pm

lMsgAuto

Mensaje por joseluis »

José,
> por cierto, olvidaba decirte que con esta clase, en vez de llamar a New(),
> CreateForm() y Show(), sólo tienes que llamar a New() para crear y mostrar
> el "formulario".
Muuuchas gracias. Mañana lo pruebo... que esta tarde voy a estar fuera
de la oficina.
Gracias por todo, como siempre...
Saludos,
José Luis Capel
Responder