cuando se debe utilizar "thisform.refresh" y cuando utilizar "this.refresh"

2,472 views
Skip to first unread message

Saúl Piña

unread,
Dec 9, 2013, 12:41:57 PM12/9/13
to publice...@googlegroups.com
Saludos, el problema del post anterior era ese: "this.refresh" y el grid no quedaba limpio. pero solo modifiqué "thisform.refresh" y solucionado el asunto.

Entonces, cuando debo utilizar uno y otro respectivamente? 


muchas gracias.

Alfonso Arce Silvestre

unread,
Dec 9, 2013, 1:11:52 PM12/9/13
to Comunidad de Visual Foxpro en Español
Te doy mi opinión, thsiform.refresh, se utilza cuando requieres refrescar todo el contenido de tu formulario, y el this.refresh es cuando solo quieres refrescar un objeto especifico.  Saludos

Alfonso Arias Lemas

unread,
Dec 9, 2013, 1:16:03 PM12/9/13
to Lista Google VFP
thisform ===> este formulario
this ======> este <objeto> 
 
 
 
 
-------Mensagem original-------

Antonio.xt

unread,
Dec 9, 2013, 1:23:48 PM12/9/13
to publice...@googlegroups.com

Lo que pasa es con Thisform.Refresh aplicas el refresh a todo el formulario, incluyendo sus objetos, independientemente de donde te encuentres dentro de ese formulario, es decir, en cualquiera de sus objetos; y con This.Refresh solo lo estas dando refresh al objeto donde te encuentras.

Por ejemplo, si en el evento Click de un boton ejecutas Thisform.Caption="Titulo X", cambias el titulo del formulario, en cambio si en ese mismo evento Click de ese mismo boton  ejecutas This.Caption="Titulo X", lo que cambias es el caption del boton.

OJO:
Recuerda que el Grid es un contenedor, y si ejecutas This.Refresh tal vez el refresh se aplica a ese objeto, y no a todo el Grid; puede ser a la celda, a la columna, no se, tal vez por ahi estaba tu problema.

Jorge Kiernan

unread,
Dec 9, 2013, 1:33:10 PM12/9/13
to publicesvfoxpro
Es que la grilla, como todo contenedor, es un bicho dificil. 

Saúl Piña

unread,
Dec 9, 2013, 1:46:15 PM12/9/13
to publice...@googlegroups.com
gracias, mas claro ni el agua.

mapner

unread,
Dec 9, 2013, 2:02:09 PM12/9/13
to publice...@googlegroups.com
Hace algún tiempo me pasaron esta rutina para refrescar un objeto contenedor y todos sus objetos contenidos.

saludos

************************
*
Procedure RefreshMe
LPARAMETERS oContainer
*++
*>>Recursive method to refresh bound controls in the specified container.
*--
LOCAL ix, oThis, oFrm, nControlCount, cType, nCol

nControlCount = 0
IF TYPE("m.oContainer.CONTROLCOUNT") = "N"
nControlCount = m.oContainer.CONTROLCOUNT
cType = "C"
ELSE
IF TYPE("m.oContainer.PageCount") = "N"
nControlCount = m.oContainer.PAGECOUNT
cType = "P"
ENDIF
ENDIF
FOR ix = 1 TO nControlCount
IF cType = "C"
m.oThis = m.oContainer.CONTROLS[m.ix]
ELSE
IF cType = "P"
m.oThis = m.oContainer.PAGES[m.ix]
ENDIF
ENDIF
DO CASE
CASE m.oThis.BASECLASS == 'Container'
m.oThis.REFRESH()
RefreshMe(m.oThis)
CASE m.oThis.BASECLASS == 'Pageframe'
* Refresh only the active page in a pageframe. Other page
* contents will refresh when their page is activated.
LOCAL nPage
FOR nPage = 1 TO m.oThis.PAGECOUNT
IF m.oThis.PAGES[m.nPage].PAGEORDER = m.oThis.ACTIVEPAGE
RefreshMe(m.oThis.PAGES[m.nPage])
EXIT
ENDIF
ENDFOR

CASE m.oThis.BASECLASS == 'Grid'
FOR nCol = 1 TO m.oThis.COLUMNCOUNT
RefreshMe(m.oThis.COLUMNS[m.nCol])
ENDFOR

OTHERWISE
IF PEMSTATUS(m.oThis, 'Refresh', 5) 
m.oThis.REFRESH()
ENDIF 
ENDCASE
ENDFOR

HernanCano

unread,
Dec 9, 2013, 2:08:50 PM12/9/13
to publice...@googlegroups.com

Dejaste el otro tema en duda.

HernanCano

unread,
Dec 9, 2013, 2:14:30 PM12/9/13
to publice...@googlegroups.com

Me parece que con éste tema de "Thisform.Refresh y This.Refresh" resuelves y cierras el otro que posteaste sobre "Limpiar una grid". ¿Correcto?

https://groups.google.com/forum/#!topic/publicesvfoxpro/geS3_bWyi1E




El lunes, 9 de diciembre de 2013 13:46:15 UTC-5, Saúl Piña escribió:
gracias, mas claro ni el agua.

Saúl Piña

unread,
Dec 9, 2013, 3:15:40 PM12/9/13
to publice...@googlegroups.com
Es correcto, muchas gracias hernan y demás.

Víctor Enrique Navarro Hoyos

unread,
Dec 9, 2013, 4:58:39 PM12/9/13
to publice...@googlegroups.com
ThisForm es el formulario completo; This es la celda del Grid

Julián May

unread,
Dec 10, 2013, 9:27:12 AM12/10/13
to publice...@googlegroups.com
Dependiendo el objeto de donde te encuentres. 

Si estás en cualquier método o evento del FORM
THISFORM.Refresh   Objeto Formulario
es lo mismo que THIS.Refresh  Objeto Formulario

Si estás dentro de un boton

THISFORM.Refresh Objeto Formulario 
THIS.Refresh  Objeto Boton

Saludos.

El lunes, 9 de diciembre de 2013 11:41:57 UTC-6, Saúl Piña escribió:
Reply all
Reply to author
Forward
0 new messages