Polimorfismo

30/04/2005 - 07:16 por Jorge Eastman | Informe spam
Hola grupos...

Necesito lo siguiente:

Tengo en una forma una serie de controles del mismo tipo, necesito tener un
controlador de eventos único para todos estos controles, tomando en cuenta
que algunos controles pueden ser agregados en tiempo de ejecución.

Me explico, tengo varios TextBox en la forma, el usuario hace una selección
por medio de unos CheckBox, para evitar utilizar muchos IFs y reescritura de
código y tomando en cuenta que algunos controles se agregan en tiempo de
ejecución, como puedo hacer para manejar los eventos de estos controles
desde un solo punto, como se hace en VB que se crea una clase, luego se
declara una variable del tipo de la clase, posteriormente se asigna el
control a la variable para así poder tener todos los eventos en un solo
sitio.

No se si logré explicarme adecuadamente.

Gracias a todos por su ayuda.

Un saludo.

Jorge Eastman

Preguntas similare

Leer las respuestas

#1 Victor B.
30/04/2005 - 11:32 | Informe spam
A ver si esto te puede ayudar. En ocasiones he necesitado hacer algo
parecido y lo que se me ocurrió es:
En un PRG escribo la definición de una clase del tipo que necesito, y
programa el evento click de forma que llamo a un método propio en el
formulario, algo así:
**Definición de la clase
DEFINE CLASS miCmd AS CommandButton
PROCEDURE Click
This.Parent.cmdClick(THIS) &&Llamo al método cmdClick del
formulario y le paso como parámetro el control
ENDPROC
ENDDEFINE

En el formulario uso AddObject para, en tiempo de ejecución, añadir los
controles necesarios. Uso alguna propiedad para distinguir el control. Para
ello puedes crearte un método llamado CreaControl:
LOCAL nH, nID, sOBN, oCMD

m.nID=0
FOR nH=1 TO THISFORM.ControlCount
IF THISFORM.Controls(nH).Class = "miCmd" THEN
m.niD=m.nID+1
ENDIF
NEXT
m.nID=m.nID+1
m.sOBN="miCM"+ALLTRIM(STR(m.nID))
THISFORM.AddObject(m.sOBN, "miCmd")
m.oCMD=THISFORM.ControlCount
m.oCMD.Tag=m.nID
m.oCMD.Visible=.T.
. Establecer otras propiedades

En el formualrio agrego el método cmdClick:
LPARAMETERS oCMD
DO CASE
CASE VAL(oCMD.Tag) = 1
. Código
CASE VAL(oCMD.Tag) = 2
. Código
ENDCASE


Espero te sirva de algo...
Saludos


Víctor B.
Desarrollador independiente

"Jorge Eastman" escribió en el mensaje
news:ea%
Hola grupos...

Necesito lo siguiente:

Tengo en una forma una serie de controles del mismo tipo, necesito tener
un controlador de eventos único para todos estos controles, tomando en
cuenta que algunos controles pueden ser agregados en tiempo de ejecución.

Me explico, tengo varios TextBox en la forma, el usuario hace una
selección por medio de unos CheckBox, para evitar utilizar muchos IFs y
reescritura de código y tomando en cuenta que algunos controles se agregan
en tiempo de ejecución, como puedo hacer para manejar los eventos de estos
controles desde un solo punto, como se hace en VB que se crea una clase,
luego se declara una variable del tipo de la clase, posteriormente se
asigna el control a la variable para así poder tener todos los eventos en
un solo sitio.

No se si logré explicarme adecuadamente.

Gracias a todos por su ayuda.

Un saludo.

Jorge Eastman



Respuesta Responder a este mensaje
#2 Fernando D. Bozzo
30/04/2005 - 21:46 | Informe spam
Hola Jorge:

Te dejo algunas ideas.

1) Si usás VFP 8 eso lo tenés solucionado. Simplemente en el init de cada
control ponés la llamada a un método del form que le haga un bindevent al
evento que te interesa del control y lito.

2) Si usás VFP 7 o anterior podés usar la librería de emulaciones que hice
(www.portalfox.com) para poder usar un equivalente del BindEvent de VFP 8,
con lo cuál podés usar la idea (1) pero agregando un XRaiseEvents() en cada
evento de los controles que te interesa bindear


Saludos,

Fernando D. Bozzo
VFP6/SP5
Madrid/España

Recomendación:
Lea estos grupos de noticias con un cliente de newsgroup como Outlook
Express, este artículo lo guiará para configurarlo rápidamente:
http://www.panoramabox.com/GoPub.aspx?IdObj$47



"Jorge Eastman" escribió en el mensaje
news:ea#
Hola grupos...

Necesito lo siguiente:

Tengo en una forma una serie de controles del mismo tipo, necesito tener


un
controlador de eventos único para todos estos controles, tomando en cuenta
que algunos controles pueden ser agregados en tiempo de ejecución.

Me explico, tengo varios TextBox en la forma, el usuario hace una


selección
por medio de unos CheckBox, para evitar utilizar muchos IFs y reescritura


de
código y tomando en cuenta que algunos controles se agregan en tiempo de
ejecución, como puedo hacer para manejar los eventos de estos controles
desde un solo punto, como se hace en VB que se crea una clase, luego se
declara una variable del tipo de la clase, posteriormente se asigna el
control a la variable para así poder tener todos los eventos en un solo
sitio.

No se si logré explicarme adecuadamente.

Gracias a todos por su ayuda.

Un saludo.

Jorge Eastman



email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida