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.

Nombre de control

Foro de Xailer profesional en español
Responder
paco-ssi
Mensajes: 390
Registrado: Lun Feb 07, 2005 4:17 pm

Nombre de control

Mensaje por paco-ssi »

¿Sabeis comopuedo obtener que control ha llamado a un metodo?
Quiero hacer una ayuda que se comporte distinta si la llama odbedit1 ,
odbedit2, .....
Gracias
Paco V
Avatar de Usuario
jfgimenez
Site Admin
Mensajes: 5718
Registrado: Lun Abr 06, 2015 8:48 pm
Contactar:

Nombre de control

Mensaje por jfgimenez »

Paco,
> ¿Sabeis comopuedo obtener que control ha llamado a un metodo?
>
> Quiero hacer una ayuda que se comporte distinta si la llama odbedit1 ,
> odbedit2, .....
METHOD DbEdit1KeyDown( oSender, nKey, nFlags )
IF nKey == VK_F1
IF oSender == ::oDbEdit1
//...
ELSEIF oSender == ::oDbEdit2
//...
ENDIF
RETURN 0
ENDIF
RETURN Nil
--
Un saludo,
José F. Giménez
José F. Giménez
[Equipo de Xailer / Xailer team]
http://www.xailer.com
http://www.xailer.info
paco-ssi
Mensajes: 390
Registrado: Lun Feb 07, 2005 4:17 pm

Nombre de control

Mensaje por paco-ssi »

Muchas Gracias.
Un saludo.
Paco V
"Jose F. Gimenez" <jfgimenez@wanadoo.es> escribió en el mensaje
news:432e8e92$[email=1@ozsrvnegro.ozlan.local...]1@ozsrvnegro.ozlan.local...[/email]
> Paco,
>
>> ¿Sabeis comopuedo obtener que control ha llamado a un metodo?
>>
>> Quiero hacer una ayuda que se comporte distinta si la llama odbedit1 ,
>> odbedit2, .....
>
> METHOD DbEdit1KeyDown( oSender, nKey, nFlags )
>
> IF nKey == VK_F1
> IF oSender == ::oDbEdit1
> //...
> ELSEIF oSender == ::oDbEdit2
> //...
> ENDIF
> RETURN 0
> ENDIF
>
> RETURN Nil
>
>
> --
> Un saludo,
>
> José F. Giménez
>
Xevi
Mensajes: 1706
Registrado: Jue Sep 08, 2005 12:58 pm

Nombre de control

Mensaje por Xevi »

Jose
Hago esto en un TMaskEdit...
METHOD xEditsKeyDown( oSender, nKey, nFlags ) CLASS TFrmAltaOR
If nKey = VK_ESCAPE
::FormInitialize( oSender )
Return 0
ElseIf nKey = VK_RETURN //.and. oSender == ::oEditVehicle
MsgInfo( oSender )
EndIf
RETURN Nil
MsgInfo( oSender )
A mi me devuelve { TMASKEDIT }, que es el nombre de la Clase, pero no puedo determinar QUE TMaskEdit és el que lanza el evento.
¿Es un Bug???
Gracias.
Un Saludo,
Xevi.
"Jose F. Gimenez" <jfgimenez@wanadoo.es> escribió en el mensaje news:432e8e92$[email=1@ozsrvnegro.ozlan.local...]1@ozsrvnegro.ozlan.local...[/email]
>
> Paco,
>
>> ¿Sabeis comopuedo obtener que control ha llamado a un metodo?
>>
>> Quiero hacer una ayuda que se comporte distinta si la llama odbedit1 ,
>> odbedit2, .....
>
> METHOD DbEdit1KeyDown( oSender, nKey, nFlags )
>
> IF nKey == VK_F1
> IF oSender == ::oDbEdit1
> //...
> ELSEIF oSender == ::oDbEdit2
> //...
> ENDIF
> RETURN 0
> ENDIF
>
> RETURN Nil
>
>
> --
> Un saludo,
>
> José F. Giménez
>
>
>
--
Avatar de Usuario
jfgimenez
Site Admin
Mensajes: 5718
Registrado: Lun Abr 06, 2015 8:48 pm
Contactar:

Nombre de control

Mensaje por jfgimenez »

Xevi,
MsgInfo( oSender )
A mi me devuelve { TMASKEDIT }, que es el nombre de la Clase, pero no puedo determinar QUE TMaskEdit és el que lanza el evento.
¿Es un Bug???
No, no es un bug. Es simplemente que te está devolviendo el nombre del tipo de dato; en este caso es un objeto de tipo TMaskEdit.
No se puede mostrar con un MsgInfo() directamente el objeto, pero sí­ alguna propiedad (cText, Handle, etc.); y me temo que cVarName NO es una propiedad de los controles. Aunque esté en el IDE y aparezca en el inspector de propiedades, después no está presente en el GUI.
Lo que sí­ se puede hacer es comparar directamente dos objetos. P.ej. puedes comparar oSender y ::oEditVehicle para determinar si ha sido ese control el que ha disparado el evento:
IF oSender == ::oEditVehicle
...
--
Un saludo,
José F. Giménez
--
José F. Giménez
[Equipo de Xailer / Xailer team]
http://www.xailer.com
http://www.xailer.info
Responder