A partir de VFP8 ya puedes enlazar eventos en tiempo de ejecución, de que nos servirá esto?... Exploraremos un ejemplo práctico.
PUBLIC oForm
oHandler = CREATEOBJECT("myHandler")
oForm = CREATEOBJECT("MyForm",oHandler)
oForm.Show()
DEFINE CLASS myForm as Form
Width = 400
Height = 225
ADD OBJECT myGrid as Grid WITH Width=400, HEIGHT=180, TOP=5
ADD OBJECT myCmdButton AS CommandButton ;
WITH Top=190, Left=40,Caption="Bind",;
Height=30
PROCEDURE INIT
LPARAMETERS toHandler
This.AddProperty("oHandler",toHandler)
ENDPROC
PROCEDURE LOAD
OPEN DATABASE (HOME(2)+"\Data\TestData")
USE customer
ENDPROC
PROCEDURE UNLOAD
USE IN "Customer"
CLOSE DATABASES ALL
ENDPROC
PROCEDURE myCmdButton.Click
Thisform.EnlazaEvento()
ENDPROC
PROCEDURE EnlazaEvento
* Recorremos los Objetos contenidos en el Grid
FOR EACH loObjects IN Thisform.myGrid.Objects
FOR EACH loControls IN loObjects.Controls
DO CASE
CASE UPPER(loControls.BaseClass)="HEADER"
** Enlazamos el evento Doble Click de los Headers
** Hacia un metodo del objeto Handler
BINDEVENT(loControls,"DblClick",this.oHandler,"DobleClick")
CASE UPPER(loControls.BaseClass)="TEXTBOX"
** Enlazamos el evento Doble Click de los textbox
** Hacia otro metodo del objeto Handler
BINDEVENT(loControls,"DblClick",this.oHandler,"MuestraValor")
ENDCASE
ENDFOR
ENDFOR
ENDPROC
ENDDEFINE
DEFINE CLASS myHandler as Custom
PROCEDURE DobleClick
AEVENTS(laEventos,0)
MESSAGEBOX("Lllamado desde:"+laEventos[1].Parent.ControlSource)
ENDPROC
PROCEDURE MuestraValor
AEVENTS(laEventos,0)
MESSAGEBOX(EVALUATE(laEventos[1].ControlSource))
ENDPROC
ENDDEFINE
Con lo anterior hemos enlazado los eventos tanto de los Headers, como de los TextBox (en lo respectivo al evento Doble Click) del Grid, estos no ejecutaban ninguna acción en una primera instancia, pero cuando ejecutamos el botón "Bind" pudimos (en tiempo real) modificar el comportamiento de los eventos Doble Click sin necesidad de haberles agregado al Grid como clases personalizadas (único modo en versiones anteriores a VFP8).
En entregas posteriores veremos otras cosas interesantes sobre esta nueva función de Visual FoxPro 8, espero les sea de utilidad.
Esparta Palma
No hay comentarios. :
Publicar un comentario
Los comentarios son moderados, por lo que pueden demorar varias horas para su publicación.