Una clase sobre Clases.. Abrir, Cerrar, Modificar, Guardar, Salir..

1,354 views
Skip to first unread message

Analyzer

unread,
Mar 15, 2013, 1:12:59 PM3/15/13
to mundovis...@googlegroups.com, zorrosm...@googlegroups.com
No seguí con el tema de las clases en VFP porque no logré entender lo que indico.

En su momento me recomendaron usar el diseñador de formularios.

(No sé si con "diseñador de formularios" incluye el "diseñador de clases"..)

En los ejemplos del manual de Walter no veo como:

1. Enlazan la clase a los formularios.

Es decir, corro el form y hace cosas, pero reviso el form y no tiene código. Supongo que llama a una clase, pero donde?..

2. Como agrego una clase y como elimino una clase.

3. Como accedo a una clase y veo el código..

4. Como altero una clase y guardo los cambios. Donde queda guardada la clase?..

Básicamente, lo que necesito serían las instrucciones que normalmente aparecen en Archivo, en cualquier aplicación: abrir, cerrar, guardar, salir de la clase..

Todo con el "diseñador de formularios" no con código del define class.

Saludos!

Carlos Miguel FARIAS

unread,
Mar 15, 2013, 7:59:44 PM3/15/13
to mundovis...@googlegroups.com
El funcionamiento del diseñador de formularios y de clases son muy parecidos.

La diferencia en el caso de formularios es que si lo creas con el asistente de formularios, podes hacer prueba in situ. o sea, con una tecla de funciòn o desde el menu, podes hacer que el formulario se ejecute (por supuesto si el formulario es autónomo en cuanto a la conexiòn a datos que ejecute, y si tiene acceso a los prg. app que invoque.
Los formularios creados asi, se guarda cada uno en su propio contenedor (ver extensiones en la ayuda).

En cambio, si lo creas con el diseñador de clases, el formulario (o los, podes tener varios), se guarda en una biblioteca de clases, y para ver como funciona, se debe crear un formulario con el diseñador de formularios, a partir de la clase formulario que guardaste en la biblioteca.

O sea, podes diseñar un formulario, como clase, con el diseñador de clases, y queda guardado en la biblioteca de clases que designes.
Luego en herramientas -> opciones -> form, indicas cual es la biblioteca que guardaste tu clase formulario, la elegis, te muestra a la derecha todas las clases formulario que guardaste, la seleccionas, guardas los cambios de las opciones (fijar como default, si lo vas a usar varias veces) y luego, al crear un nuevo formulario, en lugar de crearte un formulario en blanco, te crea uno a partir de la clase formulario que seleccionaste de tu biblioteca.

Para empezar a probar, entra con el diseñador de clases, create un simple formulario, agregale un boton, algo de codigo, cambia el color de fondo y guardalo en una biblioteca.
Luego como explique antes, activas la plantilla de ese formulario y guardas.
Creas un formulario nuevo, (sin wizard) y veras que el nuevo formulario, es identico al que creas con el diseñador de clases.

Interesante: Si creas un formulario como clase, que contiene 10 controles y 100 líneas de código, todos los formularios que crees a partir de esa clase, tendràn los mismos elementos disponibles (controles y còdigo) pero al compilar el ejecutable (o el app), el tamaño total sera casi 10 veces menor que si hubieses hecho todo por separado.

CLIC?

Ok Proba y seguimos (si puedo)
Saludos: Miguel, La Pampa (RA)

--
_______________________________________________________________
Has recibido este mensaje porque estás suscrito al Grupo "Mundo Visual
FoxPro" de Grupos de Google.
 
Para anular la suscripción a este grupo, envía un mensaje a:
mundovisualfox...@googlegroups.com
---
Has recibido este mensaje porque estás suscrito al grupo "Mundo Visual FoxPro" de Grupos de Google.
Para anular la suscripción a este grupo y dejar de recibir sus correos electrónicos, envía un correo electrónico a mundovisualfox...@googlegroups.com.
Para obtener más opciones, visita https://groups.google.com/groups/opt_out.
 
 

Analyzer

unread,
Mar 19, 2013, 8:26:25 PM3/19/13
to zorrosm...@googlegroups.com, Comunidad de Visual Foxpro en Español, mundovis...@googlegroups.com
Excelente Fernando D. Bozzo,

Pocos tienen el don de poder explicar. Sin duda que usted lo posee y de sobra.

Esto es lo que no captaba, lo del diseñador de forms, pero es bastante comprensible de la forma que lo expones.

También aprovecho para agradecer a Extremo que me indicó que debo pegar los vcx al form en el dibujo de los libritos que aparece en el cuadro de controles al lado de la flecha tipo puntero del mouse.

También agradezco a Victor Hugo por indicarme que hay un boton View Parent Code donde se puede ver el código de la clase en la que se basa la clase en uso.

Saludos!


El 19 de marzo de 2013 16:40, Fernando D. Bozzo <fdb...@gmail.com> escribió:
Hola Analyzer:

No sabía que estabas escribiendo en este foro y esperaba tu post en el principal de "Comunidad de Visual FoxPro", por eso no te contesté antes.

Para entender este tema de las clases tenés que empezar por lo básico, que es entender el código. Luego podés usar los diseñadores que te ayudan a crear las clases de forma más visual, pero el contenido será el mismo, nada más que presentado de otra forma.

Te doy un ejemplo en código y el mismo ejemplo en forma visual (asumo que usás VFP 9).

CÓDIGO:
Create un programa llamado MisClases.prg usando MODIFY COMMAND MisClases desde la ventana de comandos y dentro ponele esto:

DEFINE CLASS ordenador AS CUSTOM
    Ram = "2 GB"

    PROCEDURE obtener_Ram
        RETURN THIS.Ram
    ENDPROC

    PROCEDURE setear_Ram
        LPARAMETERS tcValor
        THIS.Ram = tcValor
    ENDPROC
ENDDEFINE

Ahora, desde la ventana de comandos vamos a instanciar y usar esta clase así, copiando de a una línea por vez:

oo = NEWOBJECT( "ordenador", "MisClases.PRG" )
MESSAGEBOX( oo.obtener_Ram() )   && Te muestra "2 GB"
oo.setear_Ram( "3 GB" )
MESSAGEBOX( oo.obtener_Ram() )   && Te muestra "3 GB"
CLEAR ALL


DISEÑADOR:
Ahora vamos a hacer lo mismo, pero usando el diseñador de clases. En este caso te vas a ahorrar la creación de las líneas DEFINE CLASS y ENDDEFINE y los PROCEDURE/ENDPROC
Elegí el menú File / New / Class y luego el botón New File. Te muestra un cuadro de diálogo con 3 datos:
Class Name ==> escribí ordenador
Based on ==> seleccioná custom
Store in ==> escribí MisClases
Y al final elegí el botón OK. Ya estás viendo el diseñador de clases (la clase es ese rectángulo con unos pequeños cuadrado/circulo/triángulo agrupados y de título "ordenador"). Ya tenemos la clase, ahora le agregamos la propiedad Ram:
Vas al menú Class y elegís New Property, te muestra otro cuadro de diálogo:
Name ==> escribí Ram
Default/Initial value ==> borrá el .F. que tiene y escribí "2 GB" sin las comillas
Luego elegís el botón Add y finalmente el botón Close. Es probable que en la parte derecha veas la ventana de propiedades de la clase con la nueva propiedad Ram. Si no ves esa ventana, la podés abrir usando el menú Window / Properties Window, y te vas al final de todo, donde vas a ver tu nueva propiedad.

Ahora creamos los métodos: Elegí el menú Class / New method, en el cuadro de diálogo que aparece, a la derecha del título "name" escribí obtener_Ram y elegí el botón Add. Vasa ver que en la ventana de propiedades se agrega ese método.
Ahora agregá el método setear_Ram, elegí el botón Add y luego Close.

Una vez cerrado el cuadro de diálogo seguimos con la ventana de propiedades. Hacé doble click en el método "setear_ram" y pegale este código, que es el mismo que usamos antes:

LPARAMETERS tcValor
THIS.Ram = tcValor

y cerrá la ventana del código (o pulsá CTRL + W). Vas a ver que aparece un texto en negrita que dice [User Procedure], lo que indica que ese método tiene código.
Ahora hacemos lo mismo para el otro método: Doble click en "obtener_ram" y pegá este código:

RETURN THIS.Ram

y cerrá la ventana del código (o pulsá CTRL + W). Finalmente cerrá la ventana de la clase que tiene el título "Class designer - misclases.vcx (ordenador)" y cuando te pregunte "Do you want to save changes?" elegís Yes.

Ahora estamos nuevamente en la ventana de comandos. Vamos a instanciar y usar esta clase así, copiando de a una línea por vez:

oo = NEWOBJECT( "ordenador", "MisClases.VCX" ) && Como ves, ahora usamos el VCX que acabás de crear
MESSAGEBOX( oo.obtener_Ram() )   && Te muestra "2 GB"
oo.setear_Ram( "3 GB" )
MESSAGEBOX( oo.obtener_Ram() )   && Te muestra "3 GB"
CLEAR ALL


Listo. Ahora podés ver la diferencia entre crear una clase como un PRG o con el diseñador, que la guarda como VCX (y VCT, ya que son dos archivos)
Espero que te sirva para comenzar.

Para más ejemplos de código podés ver el directorio "Samples" dentro del directorio de instalación de FoxPro, que siempre trajo muchos ejemplos de código para probar, y también tenés la ayudam que es muy buena.


Saludos!

--
Has recibido este mensaje porque estás suscrito al grupo "Zorrosmexicanos" de Grupos de Google.
Para anular la suscripción a este grupo y dejar de recibir sus correos electrónicos, envía un correo electrónico a zorrosmexican...@googlegroups.com.
Para publicar una entrada en este grupo, envía un correo electrónico a zorrosm...@googlegroups.com.
Visita este grupo en http://groups.google.com/group/zorrosmexicanos?hl=es.
Reply all
Reply to author
Forward
0 new messages