[Mundo Visual FoxPro] Como paso parametros en el BINDEVENT?

1,747 views
Skip to first unread message

Juan Moreyra

unread,
Apr 29, 2010, 2:23:40 PM4/29/10
to mundovis...@googlegroups.com
Hola a todos:

Alguien sabe como pasar parametros a un BINDEVENT?

BINDEVENT(.Columns[ln_h].Header1, 'RightClick', THIS, 'mm_Header1_RightClick')

Problema:
necesito saber la ruta o en que anidamiento del programa u objeto se esta ejecutando

Algo asi m
como un PROG() o THIS.Parent.Caption pero no me devuelve lo que quiero
se supone que esta dentro del grid.colum1.header1.caption

O en su caso como saber cuando le dan click a una columna de un grid, saber cual es la columna que han clickeado?

Gracias.



Tu Hotmail a un clic con Internet Explorer 8. ¡Descárgatelo gratis!

--
_______________________________________________________________
Has recibido este mensaje porque estás suscrito al Grupo "Mundo Visual
FoxPro" de Grupos de Google.
 
Para anular la suscripción a este grupo, envía un mensaje a:
mundovisualfox...@googlegroups.com

Carlos Miguel FARIAS

unread,
Apr 30, 2010, 6:56:57 AM4/30/10
to mundovis...@googlegroups.com
Hay un evento de la grilla aftercolrowchange o algo asi que se dispara despues de cambiar la celda que tocas, si mal no recuerdo recibe dos parametros que dicen en que fila y que columna se produjo el evento.

Juan Moreyra

unread,
May 4, 2010, 8:14:20 PM5/4/10
to mundovis...@googlegroups.com
Lo que quiero es saber que columna del grid se seleccioma, pero adicionalmente a eso

Es posible pasar parametros al BINDEVENT? o sencillamente no se puede?

Saludos.





Date: Fri, 30 Apr 2010 07:56:57 -0300
Subject: Re: [Mundo Visual FoxPro] Como paso parametros en el BINDEVENT?
From: carlosmig...@gmail.com
To: mundovis...@googlegroups.com

Con las alertas de Hotmail no perderás detalle de tu correo. ¡Contrátalo ya!

Roberto Olivas Mendoza

unread,
May 5, 2010, 11:53:19 AM5/5/10
to mundovis...@googlegroups.com

Compañero, BINDEVENT() no permite el paso de parámetros, únicamente delega un evento hacia otro definido por el programador. Los parámetros que se transfieren al evento definido por el programador dependen del evento original que estés delegando.

Daniel Sánchez

unread,
May 5, 2010, 9:37:59 PM5/5/10
to mundovis...@googlegroups.com
Recuerda que estas programando con objetos y existe el polimorfismo, herencia, puedes tener un método original de un objeto que no  contiene parámetros pero al subclasearlo tranquilamente le puedes indicar con parámetros sin ningún problema, lo mismo puedes hacer al aplicar el bindevent sobre un método, el bindevent solo indica que en lugar de ejecutarse tal método, debe ser reemplazado por otro método que se desee, y este método podría tener parámetros o no, no necesariamente debe conservar las mismas características en los parámetros que el método original.

-- 
Daniel Sánchez Escobar
Investigación y Desarrollo
Reset Software & Sistemas
Móvil 044-949398047
Trujillo - Perú

Roberto Olivas Mendoza

unread,
May 6, 2010, 3:30:39 PM5/6/10
to mundovis...@googlegroups.com

Con todo respeto, BINDEVENT() delega un evento a un método definido por el programador, el cual se va a ejecutar en lugar del delegante, inclusive, puede ejecutarse el delegante y el delegado en forma personalizada con el parámetro nFlags; pero si el evento delegante no recibe ningún parámetro, el evento delegado no tendrá la capacidad de recibir parámetros, aunque éstos se declararan con la instrucción LPARAMETERS. Expongo el siguiente caso (en inglés):

 

How can I determine the object that raised the event when in the Delegate method? eg. I have a grid on a form and I want to implement a sort on column header click.

... code to initialize the grid and assign values to the header tag ...

FOR EACH oColumn IN thisform.Grid1.Columns
bindevent(oColumn.Header,"Click",thisform,"OnHeaderClick")
ENDFOR


PROCEDURE OnHeaderClick


oHeader = ???? && Which column header was clicked?

SET ORDER to tag (oHeader.Tag) IN (thisform.Grid1.RecordSource)


ENDPROC

http://fox.wikis.com/cal_sm.pngYou can do this in your OnHeaderClick method to determine the event's source object:

local arrEvents[1]

local oHeader as header

dimension arrEvents[1]

aevents(arrEvents, 0)

oHeader = arrEvents[1]

 

 

Como se puede ver, la solución no se basa en el paso de parámetros al evento delegado, pues el evento delegante, en este caso “Click” del objeto Header, no recibe parámetro alguno.

 

En esta situación el polimorfismo no aplica en la forma que lo expones.

image001.png
Reply all
Reply to author
Forward
0 new messages