Hacer referencia a un form desde un .prg

1,344 views
Skip to first unread message

ultraton500

unread,
Sep 7, 2011, 12:53:12 AM9/7/11
to Comunidad de Visual Foxpro en Español
Hola a todo el grupo, necesito cambiar el caption de un form desde
un .prg pero no sé cómo referirme a dicho form. Alguien podría
indicarme cómo es que se hace porque no encuentro la manera. Desde ya
gracias.
Saludos cordiales,
Javier.

Edgar Acevedo

unread,
Sep 7, 2011, 1:07:43 AM9/7/11
to publice...@googlegroups.com
Tendrás que "Hackear" el Form.  Recuerda que en sí, un form es también una tabla.
De esta forma, si tu form se llama:  Formulario.Scx, desde tu .prg abre el form pero
como tabla:

USE  Formulario.Scx

Una vez abierto, busca el registro No. 3 y el campo "Properties" que es de tipo Memo.
Busca dentro del campo Properties una línea que diga:  "Caption" y cambia su contenido
hacia el nuevo caption que le deseas dar.  Luego cierra la tabla con un simple   USE  y
el cambio del "Caption" quedará guardado.

Salu2,



Edgar

Yvan GMail

unread,
Sep 7, 2011, 1:08:53 AM9/7/11
to publice...@googlegroups.com
CREO QUE ES ASI:

DO PROCEDIMIENTO WITH THIS

....
PARAMETERS OFORM
&OFORM->CAPTION = 'PRUEBA'


Saludos.
Yvan Carranza

-----Mensaje original-----
De: publice...@googlegroups.com
[mailto:publice...@googlegroups.com] En nombre de ultraton500
Enviado el: martes, 06 de septiembre de 2011 23:53
Para: Comunidad de Visual Foxpro en Español
Asunto: [vfp] Hacer referencia a un form desde un .prg

Richard Silva

unread,
Sep 7, 2011, 7:29:22 AM9/7/11
to Comunidad de Visual Foxpro en Español
Revisa:

_Screen.ActiveForm


Desde el prg podrías usar algo como:

loForm = _Screen.ActiveForm
loForm.Caption = 'Nuevo Caption'
.
.
.

release loForm

--
Saludos

Luis Maria Guayan

unread,
Sep 7, 2011, 8:48:24 AM9/7/11
to publice...@googlegroups.com
Cuando llamas al Form lo debes hacer:

DO FORM MiFormulario NAME loMiForm

Y puedes cambias sus propiedades con:

loForm.Caption = "Nuevo caption"


Luis María Guayán
Tucumán, Argentina
_________________________
http://www.PortalFox.com
Nada corre como un zorro
_________________________

ultraton500

unread,
Sep 7, 2011, 5:25:24 PM9/7/11
to Comunidad de Visual Foxpro en Español
En primer lugar les doy las gracias a todos por contestar y en segundo
lugar les pido disculpas porque me olvidé de aclarar que el form al
que quería hacer referencia es un form activo. Por lo tanto utilicé el
_Screen.ActiveForm como me sugirió Richard y así pude cambiar el
Caption.
Gracias a todos nuevamente por prestarme su ayuda.
Saludos,
Javier.

On 7 sep, 06:48, Luis Maria Guayan <luismar...@gmail.com> wrote:
> Cuando llamas al Form lo debes hacer:
> DO FORM MiFormulario NAME loMiForm
> Y puedes cambias sus propiedades con:
> loForm.Caption = "Nuevo caption"
>
> Luis María Guayán
> Tucumán, Argentina
> _________________________http://www.PortalFox.com

Fabricio

unread,
Sep 8, 2011, 9:43:54 AM9/8/11
to Comunidad de Visual Foxpro en Español
Lo único que necesitas saber es el nombre del formulario, el que
aperece en la propiedad name del form, y haces lo siguiente desde
cualquier punto de tu aplicación.

If Type("frmMyForm.Top")="N"
frmMyForm.Caption="Mi caption personalizado"
EndIf

Primero verificamos si existe el formulario, de ser así, la propiedad
TOP es del tipo numérico, luego cambiamos el caption.

Saludos

Fabricio

Luis Mata

unread,
Sep 8, 2011, 9:57:31 AM9/8/11
to Comunidad de Visual Foxpro en Español
Utiliza esto:
 
FOR I=1 TO _SCREEN.FormCount
    FOR EACH myForm As Form IN _SCREEN.FORMS
        IF myForm.Caption = 'Opciones de impresión'
            myForm.caption = ‘Mi Caption’
        endif
    ENDFOR
NEXT I
 


logo2 Mata Figueroa, Luis A.
Procesos, Tecnología de la Información y telecomunicaciones
TELF: (00 51 1) 617-4613
RPC : (00 51) 993597297
FAX : (00 51 1) 617-4601
lm...@cclf.com.pe
www.cclf.com.pe
imgfrm siguenos-fb

logo2[3].png
imgfrm[3].png
siguenos-fb[3].gif

ultraton500

unread,
Sep 9, 2011, 2:06:02 PM9/9/11
to Comunidad de Visual Foxpro en Español
Fabricio y Luis, perdón por la demora y muchas gracias por su aporte.
A pesar de que tengo ya resuelta esta cuestión aprecio todas las
sugerencias que recibo y cuando me dá el tiempo como en este caso
trato también de probarlas para así documentarlas. En este caso el
ejémplo de Luis funcionó a la perfección pero al probar el código de
Fabricio no pude conseguir que el resultado de Type("frmMyForm.Top")
sea diferente a "U". Si mal no entendí frmMyForm es el nombre del form
que quiero obtener (el que figura en la propiedad Name).
Gracias nuevamente a todos por sus respuestas.
Saludos cordiales,
Javier.

On 8 sep, 07:57, "Luis Mata" <lm...@cclf.com.pe> wrote:
> Utiliza esto:
>
> FOR I=1 TO _SCREEN.FormCount
>     FOR EACH myForm As Form IN _SCREEN.FORMS
>         IF myForm.Caption = 'Opciones de impresión'
>             myForm.caption = ‘Mi Caption’
>         endif
>     ENDFOR
> NEXT I
>
> ---------------------------------------------------------------------------­-----
>
>         Mata Figueroa, Luis A.
>       Procesos, Tecnología de la Información y telecomunicaciones
>       TELF: (00 51 1) 617-4613
>       RPC : (00 51) 993597297
>       FAX : (00 51 1) 617-4601
>       lm...@cclf.com.pe
>      www.cclf.com.pe 
>
> From: Fabricio
> Sent: Thursday, September 08, 2011 8:43 AM
> To: Comunidad de Visual Foxpro en Español
> Subject: [vfp] Re: Hacer referencia a un form desde un .prg
>
> Lo único que necesitas saber es el nombre del formulario, el que
> aperece en la propiedad name del form, y haces lo siguiente desde
> cualquier punto de tu aplicación.
>
> If Type("frmMyForm.Top")="N"
>    frmMyForm.Caption="Mi caption personalizado"
> EndIf
>
> Primero verificamos si existe el formulario, de ser así, la propiedad
> TOP es del tipo numérico, luego cambiamos el caption.
>
> Saludos
>
> Fabricio
>
> On 6 sep, 22:53, ultraton500 <ultraton...@gmail.com> wrote:
>
>
>
> > Hola a todo el grupo, necesito cambiar el caption de un form desde
> > un .prg pero no sé cómo referirme a dicho form. Alguien podría
> > indicarme cómo es que se hace porque no encuentro la manera. Desde ya
> > gracias.
> > Saludos cordiales,
> > Javier.
>
>  logo2[3].png
> 16 KVerDescargar
>
>  imgfrm[3].png
> 59 KVerDescargar
>
>  siguenos-fb[3].gif
> 2 KVerDescargar

Fabricio

unread,
Sep 10, 2011, 10:42:52 AM9/10/11
to Comunidad de Visual Foxpro en Español
Hola Javier

Si me das más detalle del problema te puedo ayudar, las instrucciones
que te pasé las uso en los formularios que no deseo se ejecuten más de
una vez, también hago referencia a mis formularios desde otros
formularios y desde procedimientos en .prg, siempre me aseguro de
ponerle nombre a mis form en la propiedad Name, cuando hago referencia
a alguno de ellos uso ese nombre.

Debes tomar en cuenta que cuando un formulario se ejecuta varias veces
no debes usar el mismo nombre, si dentro de un mismo formulario por
algún motivo deseas saber cual es el nombre basta que hagas referencia
a su propiedad .Name, para ejemplificar, en algunos formularios antes
de guardar el registro le hago la llamada a un procedimiento que está
dentro de un .prg, como dentro del procedimiento no puedo usar el
ThisForm, lo que hago es enviar el nombre del formulario como
parámetro al procedimiento por ejemplo: Do VerificarDatos With
"frmMiFormulario", o bien VerificarDatos("frmMiFormulario"), la que te
guste más, también puedes enviar el form como objeto, pero me gusta
más la macrosustitución.

Ya dentro del procedimiento utilizo macrosustitución para hacer
referencia a los objetos dentro del formulario, por ejemplo:
Supongamos que el parámetro lo tengo en la variable pFormName,
entonces

If &pFormName..txtMiTextBox.Value=0
.....
EndIf

con esto puedo verificar el valor de un textbox, si te fijas bien
antes del nombre del objeto hay dos puntos seguidos, el primero indica
que ahí termina la macrosustitución y el siguiente punto corresponde a
´la sintaxis para hacer referencia al objeto.

A como lo dije al comienzo, si explicas un poco más el problema que
deseas resolver te puedo hacer sugerencias específicas

Saludos

Fabricio

ultraton500

unread,
Sep 12, 2011, 10:17:56 AM9/12/11
to Comunidad de Visual Foxpro en Español
Hola Fabricio, perdón por la demora pero he estado ausente el fin de
semana. Lo que me ha pasado con el código que sugieres es sencillo..
no me funciona porque Type("frmTest.Top") no devuelve un número. Lo
que hice para probar fué crear un .prg con el código

If Type("frmTest.Top")="N"
frmTest.Caption="Mi caption personalizado"
EndIf

y un form de nombre "frmTest" ejecuté el form y ejecuté el .prg desde
un botón del mismo form, desde el administrador de proyecto y desde la
ventana de comandos y de ninguna de estas formas cambió el caption.
Luego le agregué la línea

MESSAGEBOX(Type("frmTest.Top"))

para ver por qué no entra en el IF y tal como te comentaba en el post
anterior el resultado es "U". Probé cambiado las propiedades
ShowWindows y WindowsType, generando el .exe y probando desde allí
pero el resultado es el mismo.
Es yamativo que obtengamos resultados diferentes. Aclaro por las dudas
que uso VFP9 sp2 en XP.
Saludos cordiales,
Javier.

Fabricio

unread,
Sep 12, 2011, 6:41:09 PM9/12/11
to Comunidad de Visual Foxpro en Español
Para ver si todo lo estas haciendo bien, haz lo siguiente, en el form
que creaste y que dices le pusiste frmTest en la propiedad name,
verificalo de esta forma, en un botón del mismo form pon:
MessageBox(ThisForm.Name), esto te devolverá el nombre del formulario
que debe coincidir con el valor asignado en la propiedad Name

Me cuentas que te apareció

Saludos

Fabricio

ultraton500

unread,
Sep 13, 2011, 1:16:01 AM9/13/11
to Comunidad de Visual Foxpro en Español
Qué tal Fabricio, gracias por responder, hice la prueba y
efectivamente devuelve el nombre "frmTest".
Ahora no entiendo qué viene a ser "frmTest.Top".
No es acaso la distancia entre el borde superior del formulario y el
del _screen? porque es lo que obtengo si lo ejecuto desde el mismo
form haciendo referencia a sí mismo con MESSAGEBOX(STR(thisform.Top)).
De no ser así me surge la pregunta ¿Cómo obtengo el Top del form
"frmTest" (la distancia del borde superior...) si frmTest.Top fuera
ota cosa?
Saludos,
Javier.

ultraton500

unread,
Sep 13, 2011, 10:26:46 AM9/13/11
to Comunidad de Visual Foxpro en Español
Hola, aquí yo nuevamente.. ni bien desperté esta mañana tomé
consciencia de lo que es estar agotado, anoche, tratando de no demorar
mi respuesta, me apuré al contestar sin poder entender que If
Type("frmTest.Top")="N" es la condición que verifica que el form esté
activo y hoy hacerlo me tomó solo unos segundos. Así que por favor
ignora las cuestiones del post anterior. Gracias y perdón por la
torpeza.
Saludos,
Javier.

Jairo

unread,
Sep 13, 2011, 12:40:31 PM9/13/11
to publice...@googlegroups.com
Prueba esto


En el Evento Init( ) del formulario se
devuelve .F. y el formulario no se cargara

Método Init ( )

Return .F.


Cuando estamos trabando en una aplicación la mayoría de veces queremos
evitar que un formulario se ejecute más de una vez. Con esta pequeña
explicación y ejemplo lo harás.


IF WEXIST("nombreventana")

=messagebox("la ventana ya esta ejecutada")

ELSE

=DO FORM nombreform.scx

ENDIF


WEXIST te devuelve .T. si la ventana se encuentra ya ejecutada y .F. si no
lo esta. Tenemos que tener en cuenta que el nombre del la ventana es el que
le colocas en la propiedad NAME del Formulario. En este caso el código debe
ir en el botón o menú que llame a la ventana, si el formulario se encuentra
ejecutado entonces mandará un mensaje sino lo ejecutara

-----Mensaje original-----
De: publice...@googlegroups.com
[mailto:publice...@googlegroups.com] En nombre de ultraton500

Enviado el: martes, 13 de septiembre de 2011 12:16 a.m.
Para: Comunidad de Visual Foxpro en Español
Asunto: [vfp] Re: Hacer referencia a un form desde un .prg

ultraton500

unread,
Sep 14, 2011, 12:06:27 AM9/14/11
to Comunidad de Visual Foxpro en Español
Hola Jairo, muchas gracias por tu aporte, siempre he recurrido a la
deshabilitación del menú para evitar la ejecución múltiple de un form
pero en ocasiones se me ha complicado y por lo tanto estas líneas me
vienen como anillo al dedo. Gracias nuevamente y saludos,
Javier.

Jairo

unread,
Sep 14, 2011, 10:09:11 AM9/14/11
to publice...@googlegroups.com
Cuando uno ayuda a alguien produce satisfacción..

Ejemplo... foxypreviewer

JM

-----Mensaje original-----
De: publice...@googlegroups.com
[mailto:publice...@googlegroups.com] En nombre de ultraton500

Enviado el: martes, 13 de septiembre de 2011 11:06 p.m.


Para: Comunidad de Visual Foxpro en Español

Asunto: SPAM-LOW: [vfp] Re: Hacer referencia a un form desde un .prg

regino herrera

unread,
Aug 28, 2013, 4:25:14 PM8/28/13
to publice...@googlegroups.com

 para luis maria guayan

TENGO UN FORM QUE NO SE CIERRA TALVEZ SEA POR REFERENCIAS A OBJETOS.
EXISTE ALGUNA FORMA DE VER QUE SE ESTA QUEDANDO COLGADO. O VER LAS REFERENCIAS QUE NO SE ESTAN LIBERANDO?

SALUDOS DE MEXICO

Fernando D. Bozzo

unread,
Aug 28, 2013, 5:47:48 PM8/28/13
to publice...@googlegroups.com
Regino, por favor abrí un hilo nuevo, no uses un hilo existente del 2011 para tu consulta.

Saludos.-
Reply all
Reply to author
Forward
0 new messages