Esto lo pense porque en el Grupo de Noticias de Visual FoxPro vi que muchos usuarios de nuestro amado Fox agregan objetos nuevos en tiempo de ejecucion pero desean tambien agregar codigo nuevo o personalizado a ese nuevo objeto y todo en tiempo de ejecucion.
Tienen que hacer lo siguiente: lo primero es crear una clase con el objeto al que quieran añadir codigo en tiempo de ejecucion, debe crear una propiedad con el nombre pc_shpname
(o el que gusten). Yo uso este porque es un ejemplo sencillo para agregar codigo a un control Shape en el método Click.
Y en el método Click (o en el que necesiten) agregan este codigo:
SELECT tbremito LOCATE FOR sname == this.pc_shpname DO (scodigo)
En el Load (preferentemente) del formulario o prg donde estan trabajando hacer lo siguiente:
Crear un cursor tbremito
, con los campos sname n(5), scodigo c(100)
lcx = 1 lCuenta = 0 ** esta es una tabla mia ... es para ser claro con el ejemplo SELECT emn_oilcod SCAN ALL ** agregan el objeto, shape_ es el objeto instanciado en un clase ... lcmacro1 = "thisformset.frm_estadoInsumos.AddObject('Shape"+ALLTRIM(STR(lcx))+"','shape_')" ** a la propiedad le agrego lcx para despues buscarla desde la clase &lcmacro1 INSERT INTO tbremito (sname,scodigo) VALUES ((lcx),"sprshp"+ALLTRIM(STR(lcx))) lcmacrox1="thisformset.frm_estadoInsumos.shape"+ALLTRIM(STR(lcx))+".pc_shpname=lcx" &lcmacrox1 ***** aca agregan el codigo que necesitan ****** lcfile2="sprshp"+ALLTRIM(STR(lcx))+".prg" SET TEXTMERGE ON SET TEXTMERGE TO (lcfile2) NOSHOW \wait windows '<<"shape"+ALLTRIM(STR(lcx))>>' SET TEXTMERGE OFF SET TEXTMERGE TO COMPILE (lcfile2) ************ fin *************** lcx = lcx + 1 lCuenta = lCuenta + 1 ENDSCAN
Tan simple como eso...!!! En este caso uso macrosusticion porque ahora mismo no se me ocurre otra forma pero si la encuentran.. usenlan!!
Bueno espero que la disfruten... todos los comentarios para mejorar son bienvenidos.
Saludos
Carlos Emilio
No hay comentarios. :
Publicar un comentario
Los comentarios son moderados, por lo que pueden demorar varias horas para su publicación.