Seguramente lo que voy a pedir es una tonteria para mas de uno. Pero no
entiendo bien como funciona y que son oSender y Self.
Si hay algun texto explicado con detalles y ejemplos para que pueda sacarme
esa duda, por favor diganme donde encontrarlo.
Se que oSender se trata del pasaje del objeto a los metodos de este para que
al usar propiedades dentro del metodo sepa sobre que objeto actuar. Creo
entender que es como un pase por referencia de la totalidad del objeto.....
Pero Self que es?
En mi consulta anterior dentro de un metodo le paso Self a la funcion y esta
ya tiene acceso a los DATA del formulario, es decir un nivel muy superior
que el metodo en si.
Mi duda es cual es el ambito de trabajo de Self, o es siempre el formulario
integro ?
Perdonen mi ignorancia pero tardo mucho tiempo en usar prueba y error para
que ese tipo de cosas me funcionen.
Juan Castañeda
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.
Uso de Self y oSender
-
- Mensajes: 180
- Registrado: Lun Sep 15, 2008 2:53 pm
- ignacio
- Site Admin
- Mensajes: 9440
- Registrado: Lun Abr 06, 2015 8:00 pm
- Ubicación: Madrid, Spain
- Contactar:
Uso de Self y oSender
Juan,
SELF:
Referencia al propio objeto en el cual está operando su código.
SELF sólo está en ámbito dentro del algún Mí‰TODO y apunta a una instancia de
la clase propietaria de dicho método.
Dentro de la declaracón de un método SELF es quivalente a '::', es decir,
es lo mismo escribir
METHOD Test() FROM TMyForm
::cText := "prueba"
RETURN NIL
METHOD Test() FROM TMyForm
Self:cText := "prueba"
RETURN NIL
En ambos casos se está modificando el valor de la propiedad cText en una
instancia de la clase TMyForm
Por el contrario 'oSender' no es más que un variable que se pasa a los
eventos y que coincide con el objeto que DISPARO el evento.
Fijese en lo siguiente:
1 - El evento lo dispara el control
2 - El evento lo recibe su formulario contenedor
3 - El evento lo procesa su formulario contenedor
4 - El evento se procesa dentro de un método de su formulario contenedor
(normalmente)
El punto 4 sólo se produce si tiene 'sobrecargado' el evento en el control.
Observe que es el formulario y no el control el encargado de procesar el
evento, pero sin embargo, siempre tiene una referencia al objeto que
realmente lo disparo en el primer parametro de los eventos que siempre es
OSENDER.
Este es el enfoque que utilizan todos los modernos entornos de programación
visuales y la gran ventaja que tiene es que permite tener absolutamente todo
en ámbito, el formulario en si y todos sus controles.
Un saludo,
--
Ignacio Ortiz de Zúñiga
[Equipo de Xailer/Xailer team]
http://www.xailer.com
http://www.xailer.info
"Juan Castañeda" <jrcsistemas@speedy.com.ar> escribió en el mensaje de
noticias:[email=4b90b82d@svctag-j7w3v3j....]4b90b82d@svctag-j7w3v3j....[/email]
> Seguramente lo que voy a pedir es una tonteria para mas de uno. Pero no
> entiendo bien como funciona y que son oSender y Self.
> Si hay algun texto explicado con detalles y ejemplos para que pueda
> sacarme esa duda, por favor diganme donde encontrarlo.
> Se que oSender se trata del pasaje del objeto a los metodos de este para
> que al usar propiedades dentro del metodo sepa sobre que objeto actuar.
> Creo entender que es como un pase por referencia de la totalidad del
> objeto.....
> Pero Self que es?
> En mi consulta anterior dentro de un metodo le paso Self a la funcion y
> esta ya tiene acceso a los DATA del formulario, es decir un nivel muy
> superior que el metodo en si.
> Mi duda es cual es el ambito de trabajo de Self, o es siempre el
> formulario integro ?
>
> Perdonen mi ignorancia pero tardo mucho tiempo en usar prueba y error para
> que ese tipo de cosas me funcionen.
>
> Juan Castañeda
>
>
>
>
SELF:
Referencia al propio objeto en el cual está operando su código.
SELF sólo está en ámbito dentro del algún Mí‰TODO y apunta a una instancia de
la clase propietaria de dicho método.
Dentro de la declaracón de un método SELF es quivalente a '::', es decir,
es lo mismo escribir
METHOD Test() FROM TMyForm
::cText := "prueba"
RETURN NIL
METHOD Test() FROM TMyForm
Self:cText := "prueba"
RETURN NIL
En ambos casos se está modificando el valor de la propiedad cText en una
instancia de la clase TMyForm
Por el contrario 'oSender' no es más que un variable que se pasa a los
eventos y que coincide con el objeto que DISPARO el evento.
Fijese en lo siguiente:
1 - El evento lo dispara el control
2 - El evento lo recibe su formulario contenedor
3 - El evento lo procesa su formulario contenedor
4 - El evento se procesa dentro de un método de su formulario contenedor
(normalmente)
El punto 4 sólo se produce si tiene 'sobrecargado' el evento en el control.
Observe que es el formulario y no el control el encargado de procesar el
evento, pero sin embargo, siempre tiene una referencia al objeto que
realmente lo disparo en el primer parametro de los eventos que siempre es
OSENDER.
Este es el enfoque que utilizan todos los modernos entornos de programación
visuales y la gran ventaja que tiene es que permite tener absolutamente todo
en ámbito, el formulario en si y todos sus controles.
Un saludo,
--
Ignacio Ortiz de Zúñiga
[Equipo de Xailer/Xailer team]
http://www.xailer.com
http://www.xailer.info
"Juan Castañeda" <jrcsistemas@speedy.com.ar> escribió en el mensaje de
noticias:[email=4b90b82d@svctag-j7w3v3j....]4b90b82d@svctag-j7w3v3j....[/email]
> Seguramente lo que voy a pedir es una tonteria para mas de uno. Pero no
> entiendo bien como funciona y que son oSender y Self.
> Si hay algun texto explicado con detalles y ejemplos para que pueda
> sacarme esa duda, por favor diganme donde encontrarlo.
> Se que oSender se trata del pasaje del objeto a los metodos de este para
> que al usar propiedades dentro del metodo sepa sobre que objeto actuar.
> Creo entender que es como un pase por referencia de la totalidad del
> objeto.....
> Pero Self que es?
> En mi consulta anterior dentro de un metodo le paso Self a la funcion y
> esta ya tiene acceso a los DATA del formulario, es decir un nivel muy
> superior que el metodo en si.
> Mi duda es cual es el ambito de trabajo de Self, o es siempre el
> formulario integro ?
>
> Perdonen mi ignorancia pero tardo mucho tiempo en usar prueba y error para
> que ese tipo de cosas me funcionen.
>
> Juan Castañeda
>
>
>
>
Ignacio Ortiz de Zúñiga
[OZ Software]
https://www.ozs.es
--
[Equipo de Xailer / Xailer team]
https://www.xailer.com
[OZ Software]
https://www.ozs.es
--
[Equipo de Xailer / Xailer team]
https://www.xailer.com
-
- Mensajes: 180
- Registrado: Lun Sep 15, 2008 2:53 pm
Uso de Self y oSender
Ignacio
Gracias por tus explicaciones. Tengo los conceptos fundamentales de objetos,
clases, metodos, propiedades, etc.
Pero al momento de implementarlo no logro "procesarlo" (con mi mentalidad de
varias publicas, privadas, locales de clipper) y poder llegar a un dato de
otro objeto o control, no se manejarme con la encapsulacion. O mejor dicho
hasta donde llega el ambito de cada cosa y si las necesito no se hacer
referencia a ellos.
Mi problema fue pasar directamente de clipper a xailer.
Hasta ahora he tenido una muy lenta curva de aprendizaje por falta de
tiempo. Hasta he pensado en incursionar en otros lenguajes, pero mi problema
no es Xailer, sino mi falta de conococimiento sobre objetos.
Cuando logro que algo funcione me da empuje para seguir, y veo que el
lenguaje esta muy bueno. Felicito a todo el grupo de desarrolladores y
agradezco a los usuarios que nos van ayudando siempre.
Disculpe que este no es un tema tecnico.
Juan Castañeda
Gracias por tus explicaciones. Tengo los conceptos fundamentales de objetos,
clases, metodos, propiedades, etc.
Pero al momento de implementarlo no logro "procesarlo" (con mi mentalidad de
varias publicas, privadas, locales de clipper) y poder llegar a un dato de
otro objeto o control, no se manejarme con la encapsulacion. O mejor dicho
hasta donde llega el ambito de cada cosa y si las necesito no se hacer
referencia a ellos.
Mi problema fue pasar directamente de clipper a xailer.
Hasta ahora he tenido una muy lenta curva de aprendizaje por falta de
tiempo. Hasta he pensado en incursionar en otros lenguajes, pero mi problema
no es Xailer, sino mi falta de conococimiento sobre objetos.
Cuando logro que algo funcione me da empuje para seguir, y veo que el
lenguaje esta muy bueno. Felicito a todo el grupo de desarrolladores y
agradezco a los usuarios que nos van ayudando siempre.
Disculpe que este no es un tema tecnico.
Juan Castañeda