Sei sulla pagina 1di 15

Secretos ocultos del IDE de VFP

FoxPro ha tenido siempre diferentes vas para hacer lo mismo. Cuntas veces ha mirado sobre el
hombro de otro desarrollador y ha dicho, "Hey!, Cmo has hecho eso?" En esta serie de
artculos, Cathy Pountney va a descubrir muchas formas de trabajar dentro del IDE,
especialmente aquellas que no son tan evidentes o no estn documentados. Aprender varias vas
diferentes de mejorar su productividad. Incluso experimentados desarrolladores aprendern algo
nuevo.
En la parte 1 de esta serie de dos partes, voy a descubrir algunos secretos ocultos en varias reas
de Visual FoxPro. Se comentarn varios diseadores, unos pocos controles, la ventana
Propiedades, la ventana Vista de documento (Document View), el cuadro de dilogo Buscar,
Intellisense y un grupo de herramientas y utilidades incluidas con el Visual FoxPro. En la parte 2
se revelarn los secretos de la ventana de comandos y varios comandos, y se resumirn un
popurr de secretos ocultos.

Diseador de Informes
Por supuesto ya sabe que comenzar con mi diseador favorito, El diseador de informes!

Navegar entre objetos


En VFP 8, puede navegar entre los controles de un informe simplemente utilizando Tab para el
control siguiente y Shift+Tab para el control anterior. En versiones previas a VFP8, necesitaba
utilizar Ctrl+Tab para obtener primero el modo Tab, y luego poder hacer Tab entre los objetos con
las teclas Tab y Ctrl+Tab.

Modificar una etiqueta existente


Para modificar un objeto etiqueta existente en un informe, simplemente seleccione el objeto y
luego presione Ctrl+E. Esto activa el modo edicin de tal forma que puede cambiar el texto de la
etiqueta.

Diseador de formularios
VFP tiene algunos trucos para trabajar con contenedores.

Llegar a los objetos dentro de los contenedores


Trabajar con los contenedores, tales como el pageframe (marco de pgina), puede ser difcil a
veces. Sin embargo, puede modificar rpidamente el objeto dentro del contenedor utilizando
Ctrl+Clic sobre el objeto. Esto "pasa por encima" del contenedor y le permite tomar el control del
objeto que est dentro.
Si existen contenedores dentro de otros contenedores, puede utilizar Ctrl+Shift+Clic para
profundizar aun ms en el nivel. Por ejemplo, si tiene un control optiongroup en una pgina de un
pageframe, puede posicionar su cursor en una la las opciones (optionbuttons), presionar
Ctrl+Shift+Clic, y VFP pasa por encima de los controles pageframe, page y optiongroups y va
directo al control optionbutton.

Controles ListBox y ComboBox


El carcter "\" tiene especial significado al utilizar listBox y combobox vea Tabla 1 para ms
detalles.

Carcter Descripcin
\
Si se utiliza "\" como primer carcter, el elemento es inhabilitado entero.
Debido a que una barra inversa tiene especial significado, si verdaderamente necesita una
\\
barra "\" en el elemento, debe colocar dos barras juntas.
Debido a que la barra simple al inicio del elemento significa que debe ser inhabilitado, si
\]
verdaderamente desea que el elemento comience con barra invertida debe utilizar "\]" para
indicar que no debe estar inhabilitado.
Una barra inversa seguida por un guin significa que desea dibujar una lnea horizontal para
\este elemento.
Tabla 1. Utilizar el carcter "\" en ListBox y ComboBox

Controles Grid
Los controles Grid han presentado siempre dificultad para trabajar, especialmente para nuevos
desarrolladores, debido a que algunas cosas no son muy intuitivas.

Agregar controles
Cuando las columnas son agregadas a las cuadrculas (grid), tienen automticamente dos
controles un control header (encabezado), llamado header1 y un control textbox llamado Text1.
Sin embargo, en muchos casos necesita otro control en lugar del textbox. Desafortunadamente,
no es fcil intuir como aadir y eliminar controles de las columnas.
Lo primero que hay que hacer es entrar al grid. Coloque su ratn sobre uno de las lneas de la
columna que desea cambiar y presione Ctrl+Clic. Asegrese de estar en una de las filas de datos y
no en la fila del encabezado. Ahora tiene activa la columna y puede utilizar la barra de
herramientas de controles del formulario para arrastrar y soltar el objeto que desee en la
columna.
Al arrastrar el objeto a la columna, no se aprecia que haya ocurrido nada. Sin embargo, si mira la
ventana propiedades y se posiciona en la columna, ver que el objeto original text1 se encuentra
junto al que acaba de agregar. La propiedad CurrentControl est establecida aun en el control
textbox Text1, por eso es que todava no ve el control agregado.
Si hubiera cambiado la propiedad CurrentControl de la columna al nombre del objeto que ha
agregado, el grid le mostrar el objeto. Sin embargo, si realmente no necesita el textbox text1
original, puede liberarlo y no preocuparse por la propiedad CurrentControl.

Eliminar controles
Si piensa que agregar controles no es intuitivo, estoy segura que se asombrar mucho cuando
aprenda cmo eliminar un control indeseado. Es lo ms poco intuitivo que hay. Primero, seleccione
el control que desee eliminar en la ventana propiedades. Luego, haga clic con el ratn en una fila
de datos de su grid y luego presione la tecla Suprimir para eliminar el control. Es posible que no
ocurra nada en el grid, si mira en la ventana Propiedades no estar el control.

Navegacin
Los grids presentan otro problema para los usuarios finales. Los usuarios estn acostumbrados

que la tecla Tab los lleve al otro control. Sin embargo, cuando est dentro del grid, Tab mueve el
cursor entre las columnas del grid. Entonces, cmo debe hacer el usuario para salir del grid? La
respuesta es utilizar Ctrl+Tab para navegar hacia el control posterior al grid o utilizar
Ctrl+Shift+Tab para navegar hacia el control anterior al grid.

La ventana propiedades
Existen diferentes teclas de acceso directo para invocar, navegar y establecer valores en la
ventana Propiedades (vea la Tabla 2).

Mtodo abreviado

Descripcin
Desde el diseador de formularios, esta combinacin active la ventana
Alt + Doble Clic
propiedades an si no se estaba mostrando.
Al presionar clic derecho en un rea de la ventana Propiedades que est
Clic derecho
inutilizada muestra un men con opciones adicionales. La opcin Slo
(Ventana
propiedades no predeterminadas mostrar slo las propiedades con valores no
propiedades)
predeterminados.
Al presionar clic derecho en una propiedad cuyo valor es de caracteres muestra un
Clic derecho
men con la opcin Zoom. Seleccione Zoom para mostrar una ventana de edicin
(propiedades)
grande para ver el valor de la propiedad.
Shift+ Flecha arriba Presionar esta combinacin cuando se est en una propiedad con mltiples
/ Flecha abajo
valores permite navegar por todos los posibles valores de la propiedad.
.
Cuando est en una propiedad con valor lgico, el punto alterna entre .t. y .f.
Ctrl+ Pgina arriba/ Esta combinacin hace que el cursor vaya al objeto siguiente o previo en la
Pgina Abajo
ventana Propiedades.
Esta combinacin hace que el cursor vaya al objeto primero o posterior en la
Ctrl+ Inicio/Fin
ventana Propiedades.
Presione Ctrl+Alt ms alguna letra para saltar a la primera propiedad, mtodo o
Ctrl+Alt+<letra>
evento que comienza con esa letra.
Tabla 2. Teclas de acceso directo para invocar, navegar y establecer valores en la
ventana Propiedades.

Editor
Muchos de nosotros pasamos mucho tiempo dentro del editor de cdigo de VFP. Despus de todo,
es lo que hacemos escribir cdigo! Las siguientes pistas develan algunos de los secretos
ocultos del editor.

Vista de documento
La herramienta Vista de documento es una gran herramienta que le permite navegar por el cdigo
a travs de varios procedimientos y funciones. Pero sabe que no necesita activar la ventana Vista
de documento para tomar ventaja de esta caracterstica? En cuanto se abre la ventana de Vista de
documento, puede presionar Ctrl+PageUp y Ctrl+PageDown para navegar a travs del elemento
en la lista. No necesita saltar a la Vista de documentos, navegar por el, y luego saltar al
programa.

Maysculas y minsculas
Si es un porfiado sobre las maysculas y minsculas, puede utilizar Ctrl.+U para convertir el texto
seleccionado a minsculas y Ctrl+Shift+U para convertirlo a maysculas

Marcadores
Los marcadores son muy buenos cuando trabaja con mucho cdigo. Puede leer a travs de algn
cdigo y ver referencias de otro mtodo o funcin. Por supuesto, necesita echar un vistazo a ese
cdigo y luego saltar atrs a donde estaba antes, al finalizar. Puede hacerlo ms rpido empleando
marcadores (bookmarks). Hay que marcar la ubicacin existente presionando Alt+Shift+F2. Ahora
vaya al otro cdigo que necesita mirar y al finalizar, presione F2 o Shift+F2 para regresar al cdigo
anterior. El saltar entre diferentes secciones de cdigo, puede permitirle ahorrar mucho tiempo si
marca cada seccin con un marcador.

Cuadro de dilogo Buscar


La tabla3 muestra los efectos de utilizar el carcter "\" en el cuadro de dilogo Buscar. Realmente
no buscar el carcter de barra inversa, en su lugar, provocar que el dilogo Buscar busque otros
caracteres especiales.

Carcter
\t
\r
\n
\\

Descripcin
Busca caracteres Tab
Busca el final de cada lnea
Busca el inicio de cada lnea
Busca el carcter "\"

Tabla 3. Utilizar el carcter "\" en el dilogo Buscar.


Las bsquedas "\r" y "\n" tienen algunas trampas. Escriba "\r" en el cuadro de dilogo Buscar y
presione el botn Buscar siguiente. Al inicio parece como si nada hubiera ocurrido, sin embargo,
mantenga presionado el botn Buscar siguiente y ver un cuadro en su cdigo en la primera lnea
en blanco.
Lo que ocurre es que como Buscar "\r" va al final de cada lnea de cdigo; el cursor no se ilumina;
pero realmente est situado al final de la lnea. Cada vez que presiona Buscar siguiente, va al final
de la lnea siguiente pero no tiene ninguna pista visual hasta que choca con una lnea en blanco.
Para demostrar que est trabajando realmente, active el editor y escriba una letra. Ver la letra al
final de la lnea. Lo mismo es vlido cuando se hace una bsqueda por "\n" excepto que el cursor
va al inicio de cada lnea. Sin embargo, al buscar por "\n" no ver nunca el cursor.
Los caracteres "\\" buscan la primera barra inversa "\" como una salida y luego tratan de buscar la
segunda barra como el carcter a ser buscado. Por lo tanto, la bsqueda por "\\" encontrar una
sola barra inversa. Sin embargo, esto en realidad no es necesario, porque una barra inversa en el
cuadro de dilogo Buscar, encontrar todas las barras inversas.

Cuadro de dilogo Buscar caracteres comodn


Una de las casillas de verificacin del cuadro de dilogo Buscar es Usar caracteres comodn,
Seleccionar esta opcin le permitir utilizar caracteres especiales para establecer la coincidencia.
Tabla 4 muestra que est disponible.

Carcter
?
*

Coincidencia con comodn


nico carcter
Mltiples caracteres

#
<
>
[]
[!]

nico dgito
Coincidencia con caracteres al inicio
Coincidencia con caracteres al final
Lista de caracteres
Lista de excepciones

Tabla 4. Utilizar caracteres especiales para establecer coincidencia en el cuadro de


dilogo Buscar.
Los smbolos "?", "*", y "#" se explican por si solos; pero algunos de los otros elementos
necesitan mayor explicacin. Buscando por "<Fox" encontrar slo aquellas palabras que
comiencen con "Fox". Si tiene una variable llamada lcFox, no ser encontrada, porque no
comienza con Fox. En la otra cara de la moneda, "Fox>" encuentra slo aquellos elementos que
terminen con "Fox". Por consiguiente, encontrar la variable lcFox; pero, no encontrar una
variable llamada lcFox1, Los caracteres "[" y "]" pueden ser utilizados juntos para encontrar una
lista de elementos. Por ejemplo, "lcFox[1-2]" encontrar variables llamadas lcFox1 y lcFox2. Otro
ejemplo es "lcFox[1,2,4]", la que va a encontrar lcFox1, lcFox2, y lcFox4. Sin embargo, no
encontrar lcFox3.
Utilizar el signo "!" con los corchetes cambia el significado a una lista de excepciones en lugar de
la lista de lo que se est buscando. Buscar por "lcFox[!2]" encontrar lcFox1, lcFox3, lcFox4, etc;
pro no encontrar lcFox2. De esta misma forma, "lcFox[!2-3]" que encontrar lcFox1 y lcFox4,
pero no encontrar lcFox2 y lcFox3.

IntelliSense
IntelliSense se introdujo con el VFP 7, y puedo decir, que merece la pena la actualizacin, aunque
sea slo por esta caracterstica. Personalmente, no puedo vivir ms sin IntelliSense. Si tengo que
trabajar en un proyecto de VFP previo a VFP 7, me volvera loca. De hecho, usualmente hago
todas mis modificaciones en VFP 7 o VFP 8, y luego utilizo las versiones antiguas slo para
compilarlas.

Operador expansin
Con IntelliSense viene un grupo de caractersticas de teclas, as como el operador expansin.
Cuntas veces ha escrito lnCount = lnCount + 1? Juro que lo he hecho un milln de veces hasta
ahora. Pero, estos das, puedo cortar escribiendo lnCount++, presiono la barra espaciadora, y
listo. VFP lo expandir a lo que yo quiero. La tabla 5 muestra todo del operador expansin
disponible.

Esto...
cVar++
cVar-cVar+=
cVar-=
cVar/=
cVar*=

Expande a
cVar = cVar + 1
cVar = cVar - 1
cVar = cVar +
cVar = cVar cVar = cVar /
cVar = cVar *

Tabla 5. Opciones de operador expansin.

Teclas de acceso directo IntelliSense


He visto gran nmero de desarrolladores comenzar a escribir, aprovechar las ventajas de

IntelliSense, y luego, darse cuenta de que han cometido un error. Lo que hacen es comenzar a
borrar con la tecla retroceso hasta llegar al punto "." Sin embargo, esto no es necesario. Ctrl+J va
a listar los miembros del objeto sin ir hacia atrs hasta el punto. Puede utilizar adems Ctrl+J
despus del signo igual para listar los valores asociados con una propiedad particular, y Ctrl+I
puede ser utilizado para mostrar informacin rpida.
Ponga el siguiente cdigo de ejemplo en un programa y luego posicione el cursor como se instruye
y presione el apropiado Ctrl+J o Ctrl+I para ver que funciona.
*-- Intellisense
LOCAL loForm AS Form
*-- CTRL+J para listar los miembros
*-- (coloque el cursor despus del punto)
loForm.
*-- CTRL+J para listar los valores
*-- (coloca el cursor despus del signo igual)
loform.alwaysontop =
loForm.BorderStyle =
*-- CTRL+I for Quick Info
*-- (coloca el cursor en uno de los parmetros)
SEEK(cMyValue, cMyTable, cIndex)

Registros predefinidos "U"


IntelliSense es completamente extensible porque todo es guardado en una tabla DBF. Puede ver
estas tablas escribiendo USE (_FOXCODE) SHARED en la ventana de comandos. Si se mueve
cerca del inicio de esta tabla, ver varios registros con el tipo de "U". El equipo de VFP ha cargado
varios ejemplos de cmo puede cortar sus teclas entrando registros de estos tipos. Puede copiar
estos registros a nuevos registros y comenzar a agregar sus propios registros para cosas que hace
de forma habitual.
La tabla 6 muestra los registros predefinidos "U" en VFP 8. Algunos de estos trabajos en la
ventana Comandos y otros trabajos dentro del editor de programas y cdigo de mtodo.

Esto...
MF
MC
DC
Zdef
Zloc
DOCASE

DOWHILE
IFEND
IFELSE

Expande como
Modify File
Modify Command
Define Class
Muestra #DEFINEs
Muestra variables locales
DO CASE
CASE
OTHERWISE
ENDCASE
DO WHILE
ENDDO
IF
ENDIF
IF
ELSE
ENDIF

TRYEND

FOREACH
FOREND
SCANEND
TEXTEND
WITHEND

TRY
CATCH
FINALLY
ENDTRY
FOR EACH
ENDFOR
FOR
ENDFOR
SCAN
ENDSCAN
TEXT TO NOSHOW TEXTMERGE
ENDTEXT
WITH
ENDWITH

Tabla 6. Registros predefinidos "U" en VFP 8.


Les animo a crear su propio registro "U" para simplificar su escritura diaria. As, probablemente no
le sorprenda que yo haya agregado a mi tabla _FOXCODE, MR para expandir como MODIFY
REPORT. Otro cambio que puedo hacer es cambiar el registro MF para expandir como MODIFY
FORM en lugar de MODIFY FILE.

Herramientas de VFP y utilidades


VFP est lleno de herramientas nativas y utilidades para ayudarlo a ser ms productivo cada da.
Algunas de estas herramientas tienen ya aos y aos, y otras, son nuevas en VFP 8.0. No
escribir mucho sobre cmo utilizar estas herramientas, porque eso merece un artculo por si
mismo. Slo quiero que sea consciente de estas herramientas para que pueda utilizarlas.

Class Browser (Examinador de clases)


El examinador de clases tiene una pequea lista MRU - Utilizado ms recientemente (Most
Recently Used) a la que puede acceder al hacer clic derecho sobre los botones. Puede ver la
lista de Documentos recientes (MRU) desde los botones Abrir, Ver archivo adicional y el botn
Galera de componentes.
Utilizar clic derecho con el botn Ver cdigo de clases cambia ligeramente el comportamiento. La
ventana de edicin que aparece con el cdigo es pequea y cabe dentro del marco derecho del
examinador de clases. De hecho, puede hacer clic en el botn Ver cdigo de clase (View Class
Code) para traer el cdigo para una clase, y luego utilizar clic derecho para traer el cdigo de una
segunda clase.
Una de las caractersticas ms tiles y menos conocidas del examinador de clases son sus
posibilidades de arrastrar y soltar a un formulario. La clase seleccionada es soltada en un
formulario!!. Puede adems arrastrar el icono de la clase a la ventana de comandos y el cdigo
NEWOBJECT es generado por usted.

Depurador
Sabe que puede arrastrar y soltar desde dentro del depurador? Puede resaltar una variable en la
ventana Seguimiento y luego arrastrarla hasta la ventana Inspeccin. Esto puede ahorrar tiempo
ya que no necesita escribir variables con largos nombres, y reduce las posibilidades de errores de
escritura incorrecta. Puede adems arrastrar una variable desde las ventanas Inspeccionar o Local

a la ventana Comandos o el editor.


Otra fantstica caracterstica del editor es que puede cambiar los valores de variables a voluntad.
Una vez que una variable est en la ventana Inspeccin o Local, puede resaltar su valor (Value) y
escribir lo que desee. Esto es muy bueno, si se da cuenta que hay valores mal establecidos y
desea continuar la ejecucin para ver si el resto va bien. Adems de escribir un nuevo valor,
puede escribir una expresin para que sea evaluada inmediatamente. Por ejemplo, para una
variable de tipo fecha, puede escribir DATE() y en cuanto presione la tecla Return (Intro), el valor
de la variable queda establecido en la fecha actual.

Referencias de cdigo nuevo en VFP 8.0


En mi opinin, esta herramienta no tiene el nombre correcto, ya que es en realidad una fabulosa
herramienta de bsqueda que trabaja ms all que con el cdigo. Esta herramienta permite
buscar por un proyecto entero determinada cadena. Puede buscar programas, clases, informes, y
todo tipo de archivos en un proyecto. Busca adems propiedades y en los cdigos de los mtodos.
Adems de ser una herramienta de bsqueda, es una herramienta que permite sustituir. Puede
decirle que sustituya todas las ocurrencias que encuentre o algunas ocurrencias especficas. Esto
hace cambios masivos en su aplicacin de forma muy simple.

Administrador de paneles (Task Pane) nuevo en VFP 8.0


El Administrador de paneles es un portal que lleva a diferentes aspectos del Visual FoxPro,
incluyendo los ejemplos Solutions y las Comunidades de desarrolladores de Visual FoxPro. Como
sucede con muchas herramientas en Visual FoxPro, puede personalizar esta herramienta
profundizando en su contenido ms interno, llegando al corazn mismo. La personalizacin puede
ser distribuida a otros al exportar e importar archivos XML sencillos. Se espera que ms de la
tercera parte de los desarrolladores de herramientas y utilidades ofrezcan sus propios add-ins en
el Panel de tareas.

ToolBox Nuevo en Visual FoxPro 8.0


El ToolBox puede considerarse un reemplazo a la barra de herramientas de controles del
formulario pero es mucho ms que eso. Puede agregar todas sus clases ms comnmente
utilizadas a esta herramienta y esto le har disear con ms facilidad sus formularios. Pero puede
aprovechar muchas otras ventajas que no son muy conocidas.
Una categora del ToolBox es Text Scraps (Trozos de texto). Significa que le permite predefinir un
conjunto de texto y luego pegarlo en sus programas y sus cdigos de mtodos. Adems, no est
limitado a VFP, puede pegar trozos de texto de otras aplicaciones, como por ejemplo Microsoft
Word.
Uno de los elementos que puede agregar al ToolBox es un archivo. Sin embargo, puede utilizar
esta caracterstica para agregar nuevas cosas que no son realmente archivos. Por ejemplo,
agregar un archivo ficticio y luego cambiar las propiedades en una URL. Al seleccionar este
elemento desde el ToolBox, el Explorador de Internet (o cualquier otro examinador que tenga
establecido) emerge e intenta ir a esa URL. Entonces, si existen algunos sitios Web que visita de
forma regular durante el desarrollo de sus aplicaciones, colquelos en el ToolBox con accesos
rpidos.
Otra cosa que puede hacer con la opcin File (Archivos), es apuntar hacia un directorio. Primero,
tiene que definir un archivo ficticio y luego cambiar sus propiedades para ir al directorio, en lugar
de ir a unos archivos. Al seleccionar esta opcin desde el ToolBox, el Explorador emerger con
este directorio como predeterminado. Si ve que siempre navega por el mismo directorio,
agrguelo al ToolBox y ahorre tiempo.

Foundation Clases
Dle un vistazo al directorio FFC en el directorio raz de VFP (DIR HOME(1) + 'ffc\*.*') y ver
toneladas de clases que han sido definidas. Estas clases fueron creadas por el Grupo de desarrollo
de VFP para ayudarlo con sus aplicaciones. Algunas de ellas son justamente subclases de clases
base de VFP. Sin embargo, muchas otras son clases, que puede utilizar con sus aplicaciones, como
la clase para mostrar un termmetro de progreso.

Ejemplos Solutions
Escriba el siguiente comando en la ventana de comandos y se sorprender de lo que ocurre:
DO (HOME(2) + 'solution\solution.app')
Al navegar por la estructura de rbol, ver toneladas de ejemplos de cosas que puede querer en
sus aplicaciones. La interfaz de usuario le permitir ejecutar los ejemplos o ver el cdigo para ver
cmo se hace. Es una gran herramienta de aprendizaje, para entender cmo se hacen las cosas
en VFP.

HexEdit
Si ha necesitado alguna vez un editor hex para examinar un archivo (hack), sabr que este
programa puede ser un salva-vidas. O si su curiosidad le est volviendo loco, puede utilizar el
HexEditor para ojear en un fichero DBF y ver exactamente cmo almacena los datos. Puede ser
una gran experiencia instructiva!
Puede encontrarlo en C:\Program Files\Microsoft Visual FoxPro 8\Tools\HexEdit\hexedit.prg.

GenDBC
Cuando se ejecuta este programa, crea todo el cdigo necesario para re-crear su DBC. Puede ser
muy til para crear e instalar una nueva aplicacin. No necesita enviar todos lo archivos de datos.
En su lugar, est listo para distribuir su aplicacin, con slo ejecutar este programa en su PC y
poner el programa creado en su proyecto. Haga que su programa de instalacin ejecute el
programa generado por el GenDBC, y la nueva instalacin se inicializar y ejecutar sin prdida de
tiempo.
Es adems, una gran va para obtener uno o dos archivos copiados en otra DBC y guardar todo
sobre el mismo. Ejecute GenDBC en la DBC original. Luego, modifique el programa creado y borre
todo menos el cdigo que genera los pocos archivos que desea. Cambie el nombre de la DBC en el
programa y re-ejectelo para agregar estos archivos a diferente DBC.
Puede encontrarlo en C:\Program Files\Microsoft Visual FoxPro 8\Tools\Gendbc\gendbc.prg.

xSource
A veces, la mejor va para aprender acerca de algo es bucear en el cdigo que hay detrs. Muchas
de las herramientas y utilidades de VFP ests actualmente escritas con el propio cdigo de VFP!
El cdigo fuente para todas estas herramientas estn incluidas en un archivo .zip que se guarda
en la carpeta C:\Program Files\Microsoft Visual FoxPro 8\Tools\xsource. Cuando tenga algo de
tiempo, descomprima este archivo y comience a bucear en l para ver cmo el equipo Fox ha
logrado muchas cosas maravillosas en las herramientas y utilidades nativas de FVP.

"Ah ha"
Siempre disfruto escribiendo sobre "pistas y trucos", como ya he hecho en ese artculo. Incluso

experimentados desarrolladores tienen por obligacin su momento "ah ha". Existe mucho en
FoxPro as que es difcil para una persona saberlo todo. En el prximo artculo de esta serie, voy a
hablar de la ventana de comandos, algunos comandos y un conjunto de ideas varias.
FoxPro ha tenido siempre diferentes vas para hacer lo mismo. Cuntas veces ha mirado sobre el
hombro de otro desarrollador y ha dicho, "Hey!, Cmo has hecho eso?" En esta serie de
artculos, Cathy Pountney va a descubrir muchas formas de trabajar dentro del IDE,
especialmente aquellas que no son tan evidentes o no estn documentados. Aprender varias vas
diferentes de mejorar su productividad. Incluso experimentados desarrolladores aprendern algo
nuevo.
Este es el segundo de dos artculos donde estoy exponiendo varios secretos desconocidos del IDE
de VFP. En la primera parte, debat sobre varios diseadores, algunos controles, la ventana
Propiedades, la herramienta Vista del documento y el cuadro de dilogo Buscar. Adems descubr
algunos secretos de IntelliSense y varias herramientas y utilidades incluidas con Visual FoxPro. En
este artculo, voy a revelar secretos de la ventana Comandos, varios comandos y para finalizar,
resumir un popurr de secretos ocultos.

Ventana Comandos y comandos


La ventana Comandos es otro lugar en el que pasamos gran parte de nuestro da. Hay varios
trucos que se pueden utilizar en la ventana Comandos, y otros secretos menos conocidos sobre
algunos comandos de VFP.

Ventana Comandos
Mucha gente ya sabe que puede resaltar una lnea de cdigo en la ventana Comandos, hacer clic
derecho y seleccionar Ejecutar seleccin para ejecutar el cdigo resaltado. Pero saba que puede
resaltar varias lneas de cdigo y ejecutarlas de una vez? Sin embargo, debe tener en cuenta que
este trabajo puede no tener los resultados esperados. Cuando se ejecutan mltiples lneas de
cdigo, se crea un programa temporal y luego se ejecuta. Esto significa que las variables pueden
irse de alcance despus de que un trozo del cdigo sea ejecutado. Esto es ms un "atrape oculto"
que un "secreto oculto"!
Otra cosa que puede hacer con la ventana de comandos es utilizar punto y coma (;), como un
carcter de continuacin justo como hace en su cdigo. Esto es muy bueno, cuando copia cdigo
desde un programa o cuando crea una instruccin SELECT gigante que desea poder ver
ntegramente.

_CLIPTEXT
El primer extra es una variable de sistema llamada _CLIPTEXT. Contiene el contenido del
portapapeles de VFP. Puede utilizarlo para establecer otra informacin basada en qu hay en el
portapapeles, y puede utilizarla precisamente, para definir qu hay en el portapapeles. Es una
variable de dos sentidos que debe aprovechar en tiempo de diseo e incluso en tiempo de
ejecucin dentro de su aplicacin.
Para demostrarlo, resalte una lnea de cdigo en la ventana de comandos y presione Ctrl+C para
guardarlo en el Portapapeles. Ahora, introduzca ? _CLIPTEXT en la ventana Comandos y ver que
la lnea de cdigo que ha resaltado est impresa en la pantalla. Otro ejemplo es ejecutar el
siguiente cdigo para crear un programa:
_cliptext = '? "FOX ROCKS"' + CHR(13) + CHR(10) + ;
'? "VFP 8 ES FANTSTICO"' + CHR(13) + CHR(10)
ERASE JUNK.PRG
MODIFY COMMAND Junk NOWAIT
KEYBOARD '{CTRL+V}'

El cdigo anterior llena el portapapeles con dos lneas de cdigo, crea un archivo de programa, y
luego pega el contenido del portapapeles al programa creado recientemente.

_VFP.DataToClip()
El segundo extra que tiene VFP para ayudarnos con funciones de cortar y pegar es la funcin
_VFP.DataToClip(). Esta funcin toma los datos desde la tabla o cursor y los coloca en el
portapapeles. Desde ah, puede pegarlos en cualquier otro lugar, incluyendo Microsoft Excel. El
tercer parmetro define el formato de los datos. Si utiliza un 1 (uno) en el tercer parmetro, el
dato utiliza un espacio para separar cada campo. Sin embargo, si utiliza un 3 en la tercera
columna, se utilizan tabs para separar cada campo, lo cual es perfecto para insertar en Excel u
otra aplicacin.

Imprimir el portapapeles
Otra caracterstica poco conocida en VFP es el hecho de que pueda imprimir lo que sea que est
en el portapapeles. Esto es muy bueno cuando quiere imprimir un trozo de cdigo de su
programa; pero no un programa entero. Resalte el texto que desee imprimir y seleccione Archivo
Imprimir en el men principal de VFP para llamar al cuadro de dilogo Imprimir (puede utilizar
Ctrl.+P para invocar este mismo dilogo). Desde el dilogo Imprimir, seleccione el botn Opciones
para mostrar el cuadro de dilogo Opciones de impresin. De forma predeterminada el combobox
Tipo aparece relleno con el nombre del programa actual. Sin embargo puede desplegarlo y
seleccionar Porta papeles, seleccionar Aceptar y luego regresar al cuadro de dilogo Imprimir para
finalizar la seleccin del resto de los parmetros de impresin.

Teclas de la ventana Examinar (BROWSE)


Al utilizar el comando BROWSE, existe un grupo de teclas que pueden ayudarlo a realizar
operaciones especiales, como se muestra en la Tabla1.

Combinacin de teclas
Ctrl+F
Ctrl+G
Ctrl+Y
Ctrl+T
Ctrl+Home
Ctrl+W
Ctrl+F10

Qu hace?
Busca el siguiente (Find)
Busca el anterior
Aade un regitro
Alterna la bandera de eliminar
Edita un campo memo
Guarda y cierra
Alterna entre maximizar y restaurar

Tabla1. Teclas con el comando BROWSE.

Qu hay en un NAME?
La clusula NAME puede ser muy til para pasar datos. Los comandos SCATHER, GATHER e
INSERT INTO tienen la clusula NAME. Esto los hace mucho ms poderosos que das anteriores
cuando hubiera utilizado SCATTER con MEMVAR. Ahora puede utilizar SCATTER con un nombre en
NAME, puede pasar el dato a otro objeto como un parmetro. El siguiente cdigo muestra un
ejemplo de cmo hacerlo:
*-- Abrir tablas
CLOSE TABLES ALL
USE MyTable1 IN 0
USE MyTable2 IN 0 EXCLUSIVE

ZAP IN MyTable2
*-- Copiar registros desde MyTable1 hasta MyTable2
SELECT MyTable1
GOTO TOP
SCAN
SCATTER NAME oMyTable
AddToTableGather('MyTable2', oMyTable)
AddToTableInsert('MyTable2', oMyTable)
ENDSCAN
SELECT MyTable2
BROWSE
*-- Cerrar tablas
CLOSE TABLES ALL
RETURN
*************************
FUNCTION AddToTableGather
*************************
LPARAMETERS pcTable, poFields
LOCAL lcAlias
lcAlias = ALIAS()
SELECT (pcTable)
poFields.Descr = ALLTRIM(poFields.Descr) + 'G'
APPEND BLANK
GATHER NAME poFields
SELECT (lcAlias)
RETURN
*************************
FUNCTION AddToTableInsert
*************************
LPARAMETERS pcTable, poFields
poFields.Descr = ALLTRIM(poFields.Descr) + 'I'
INSERT INTO (pcTable) FROM NAME poFields
RETURN
Otro buen ejemplo de la utilizacin de la clusula NAME es con el comando BROWSE. En la
ventana comandos, escriba lo siguiente:
USE MyTable1
BROWSE NAME oBrowse
Ahora, en la ventana Comandos, entre la cadena "oBrowse." (no olvide el punto final) y ver el
impacto de IntelliSense en cuanto escriba el punto. Esto es muy bueno, la ventana Examinar es
ahora un objeto que puede manipular. Empiece a escoger algunas propiedades como FontBold o
RowHeight, desde IntelliSense y puede manipular la ventana examinar precisamente desde la
ventana Comandos.

TRANFORM() implcito
En VFP 8, algunos comandos tienen implementado una caracterstica de TRANSFORM() implcito.
Esto significa que puede utilizar los tipos de datos que no son de carcter, y el comando los
transformar automticamente por usted. Si el elemento ha sido transformado es un objeto, es
utilizado el texto "(Object)".
Intente el siguiente comando y se sorprender de que no lanzar un error.
WAIT WINDOW DATE()
MESSAGEBOX(500)
DEBUGOUT DATE()
? _VFP

Popurr
Existen ms secretos ocultos que se desparraman por todo Visual FoxPro.

Truco tramposo
Utilizar la tecla Maysculas antes de seleccionar una opcin de men, puede cambiar las opciones
de men. Por ejemplo, presionar Mayscula y seleccionar el men Archivos cambia la opcin
Cerrar por Cerrar todo. Utilizar Maysculas desde la ventana de men cambia, Ocultar por Ocultar
todo. Normalmente, la opcin Formato Fuente cambia la fuente en la ventana de Comandos.
Sin embargo, utilizar la tecla Maysculas con el men Formato cambia la fuente de la pantalla, por
tanto, cambia la fuente de la pantalla de VFP.
Otra caracterstica, que tiene ya cerca de aos y aos en FoxPro y VFP, es la caracterstica de
Fuera de vista (outshow) Presionar Ctrl+Alt+Shift oculta todas las ventanas excepto la de salida.
Estn ocultas mientras contine presionando la combinacin de teclas. En cuanto las libere, las
ventanas ocultas aparecen nuevamente. Esto es extremadamente til cuando muestra algo desde
la ventana de comandos con el carcter signo de interrogacin (?) y el resultado final se mostrar
detrs del resto de las ventanas.

Copiar una clase


De inicio, parece como si no hubiera una forma de copiar una clase existente en VFP. Puede crear
una subclase; pero al parecer no hay forma de copiar una clase. Entonces, utilizar el
Administrador de proyectos que puede lograrse bastante fcil con los siguientes pasos:
1.
2.
3.
4.

Arrastre la clase origen desde una biblioteca a otra.


Renombre la clase en la nueva biblioteca.
Arrastre nuevamente la clase renombrada a la biblioteca original.
Elimine la clase de la biblioteca temporal.

Por supuesto, sera agradable si existiera un botn copiar en el men contextual que se activa con
el clic derecho o en algn otro lugar. Pero al diablo!, no podemos tenerlo todo.

Arrastrar y soltar
En VFP 8, el Administrador de proyectos fue mejorado al permitir adicionar mltiples archivos a la
vez. Antes de esta versin, poda aadir solo un archivo cada vez. Sin embargo, puede arrastrar y
soltar mltiples archivos, y esta caracterstica ya est hace algn tiempo. Abra el Administrador de
proyecto y el Explorador, seleccione algunos archivos en el Explorador y luego arrstrelos al
Administrador de proyectos. Una ventaja adicional es que el Administrador de proyectos es
suficientemente inteligente como para colocar cada archivo en su ficha correspondiente, en
dependencia de la extensin del archivo.

_VFP.SetVar()
Esta funcin, tan poco conocida, puede ser utilizada para establecer variables en situaciones
donde no puede ejecutar un comando; pero puede llamar a una funcin. Un ejemplo perfecto de
cuando utilizarla es el Diseador de informes. Yo la utilizo todo el tiempo en expresiones Al Entrar
(OnEntry) y Al Salir (OnExit) de varias bandas del informe. Por ejemplo, en la expresin Al Salir
en el Pie de grupo, puede utilizar _VFP.SetVar('rnRecordCount', 0) para limpiar el valor de la
variable
rnRecordCount.
O,
cuando
utiliza
_VFP.SetVar('rnCountDataGroups',
rnCountDataGroups+1) para incrementar una variable que almacena la cantidad de grupos de
datos procesados.

Caracteres comodn
Algunos comandos aceptan caracteres comodn, y, a pesar de que es grandioso poder trabajar con
ellos, puede ser peligroso. No hay mucho dao en escribir MODI COMM MyProg*. Todo lo que va a
hacer es abrir todos los programas que comiencen con MyProg. Sin embargo, el tema de escribir
DELETE FILE MyProg*.prg Peligro!Peligro!Peligro!... cruzan destellos por mi mente. Sea muy
cuidadoso a la hora de utilizar caracteres comodn!

Slo por diversin


Vaya! Tenemos aqu un artculo lleno de informacin. Hasta ahora, su
probablemente confundido, por eso, voy a finalizar con algunas cosas divertidas.

cerebro

est

Filer
Aos atrs, Filer fue lo ms utilizado por desarrolladores de Visual FoxPro para Buscar y encontrar
archivos. Despus de VFP 3.0, desapareci y muchos desarrolladores se quejaron. Bueno, el
Equipo de Fox ha escuchado y decidido traerlo de regreso. Escriba lo siguiente en la ventana de
Comandos, para ver un ejemplo de cmo ejecutarlo.
DO FORM (HOME(1) + 'Tools\Filer\Filer.scx')
Busque en el archivo de Ayuda de VFP y lea sobre el Nuevo Filer, porque este es orientado a
objetos y puede interactuar con el e implementarlo en sus propias aplicaciones. Supongo que
podr llamarlo FilerX!

Puzzle
Esta es otra caracterstica de VFP que nos ha sido devuelta con VFP 8.0. Escriba lo siguiente en la
ventana de Comandos. Sin embargo, est advertido puede disminuir drsticamente su
productividad en el trabajo!
ACTIVATE WINDOW PUZZLE

Programas libres de errores


Sabe que escribir programas libres de errores, es muy fcil con VFP? Slo necesita escribir la
siguiente lnea de cdigo en su programa de inicio, y ya est cubierto.
ON ERROR *
Por supuesto, esto no significa que sus programas estn libres de fallas. Significa solamente que
no se emitirn mensajes de error por el sistema.

Ame su trabajo!
Estoy segura que ama VFP tanto que nunca quisiera dejarlo ir. Muy bien, no hay problemas. Al
iniciar VFP, escriba la siguiente lnea de cdigo:
ON SHUTDOWN *
No importa, cunto se esfuerce, no podr salir de VFP. Esto es genial ahora puede estar con
VFP 24 horas, 7 das de la semana y nunca tendr que dejarlo! Bien, bien, no es una muy buena
idea. Para reparar los daos hay que escribir el siguiente cdigo:
ON SHUTDOWN

Trabaje Mejor, no Ms!


Este par de artculos estn abarrotados de informacin. Mi objetivo es exponerle tantas
caractersticas como son posibles y dejarle sus momentos "ah ha". Algunas de ellas pueden que
no sean novedosas; pero aquellas que s le han sido descubiertas, le permitirn ahorrar tiempo en
el futuro. Como siempre digo, Trabaje mejor, no ms!
Para encontrar ms sobre FoxTalk y Publicaciones Pinnacle (Pinnacle Publishing) visite su sitio Web
en http://www.pinpub.com [7]
Nota: Este no es un sitio Web de la corporacin Microsoft. Microsoft no es responsable por su
contenido. Este artculo est reproducido de la edicin de este mes de enero de 2004 de FoxTalk,
Copyright 2004, por Pinnacle Publishing, Inc., sin alguna otra nota. Todos los derechos
reservados. FoxTalk es una publicacin independiente de Pinnacle Publishing, Inc. Ninguna parte
de este artculo puede ser reproducido (excepto en breves acotaciones utilizadas en revistas y
artculos especializados) sin previo consentimiento de Pinnacle Publishing, Inc. Para contactar con
Pinnacle Publishing, Inc, favor de llamar al 1-800-788-1900
Enlaces
[1]
[2]
[3]
[4]
[5]
[6]
[7]
[8]
[9]

http://www.portalfox.com/index.php?name=Sections&req=viewarticle&artid=58&allpages=1&theme=Printer
http://www.frontier2000.com
http://msdn.microsoft.com/library/en-us/dnfoxtk04/html/ft04c5.asp
http://www.portalfox.com/mailto:amby@telefonica.net
http://www.PortalFox.com
http://www.portalfox.com/modules.php?op=modload&name=Sections&file=index&req=viewarticle&artid=57
http://www.pinpub.com
http://www.portalfox.com/index.php?name=Sections&req=listarticles&secid=13
http://www.portalfox.com/index.php?name=Sections

Potrebbero piacerti anche