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.