23 de abril de 2015

Secretos ocultos del IDE de VFP (Parte 1)

Texto original: Hidden Secrets of the VFP IDE, Part 1
https://msdn.microsoft.com/en-us/library/ms947595.aspx
Autor: Cathy Pountney
Traducido por: Ana María Bisbé York


FoxPro ha tenido siempre diferentes vías para hacer lo mismo. Cuántas veces ha mirado sobre el hombro de otro desarrollador y ha dicho, "¡Hey!, ¿Cómo has hecho eso?" En esta serie de artículos, Cathy Pountney va a descubrir muchas formas de trabajar dentro del IDE, especialmente aquellas que no son tan evidentes o no están documentados. Aprenderá varias vías diferentes de mejorar su productividad. Incluso experimentados desarrolladores aprenderán 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 comentarán varios diseñadores, unos pocos controles, la ventana Propiedades, la ventana Vista de documento (Document View), el cuadro de diálogo Buscar, Intellisense y un grupo de herramientas y utilidades incluidas con el Visual FoxPro. En la parte 2 se revelarán los secretos de la ventana de comandos y varios comandos, y se resumirán un popurrí de secretos ocultos.

Diseñador de Informes

Por supuesto ya sabe que comenzaré con mi diseñador favorito, ¡El diseñador 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 edición de tal forma que puede cambiar el texto de la etiqueta.

Diseñador 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 página), puede ser difícil a veces. Sin embargo, puede modificar rápidamente 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 más en el nivel. Por ejemplo, si tiene un control optiongroup en una página 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 carácter "\" tiene especial significado al utilizar listBox y combobox – vea Tabla 1 para más detalles.

CarácterDescripción
\Si se utiliza "\" como primer carácter, 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 guión significa que desea dibujar una línea horizontal para este elemento.

Tabla 1. Utilizar el carácter "\" 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 cuadrículas (grid), tienen automáticamente 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 fácil intuir como añadir y eliminar controles de las columnas.

Lo primero que hay que hacer es entrar al grid. Coloque su ratón sobre uno de las líneas de la columna que desea cambiar y presione Ctrl+Clic. Asegúrese 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 todavía 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 cómo eliminar un control indeseado. Es lo más poco intuitivo que hay. Primero, seleccione el control que desee eliminar en la ventana propiedades. Luego, haga clic con el ratón 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.

Navegación

Los grids presentan otro problema para los usuarios finales. Los usuarios están 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, ¿cómo 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).

Método abreviado Descripción
Alt + Doble ClicDesde el diseñador de formularios, esta combinación active la ventana propiedades aún si no se estaba mostrando.
Clic derecho (Ventana propiedades)Al presionar clic derecho en un área de la ventana Propiedades que está inutilizada muestra un menú con opciones adicionales. La opción Sólo propiedades no predeterminadas mostrará sólo las propiedades con valores no predeterminados.
Clic derecho (propiedades)Al presionar clic derecho en una propiedad cuyo valor es de caracteres muestra un menú con la opción Zoom. Seleccione Zoom para mostrar una ventana de edición grande para ver el valor de la propiedad.
Shift+ Flecha arriba / Flecha abajoPresionar esta combinación cuando se está en una propiedad con múltiples valores permite navegar por todos los posibles valores de la propiedad.
.Cuando está en una propiedad con valor lógico, el punto alterna entre .t. y .f.
Ctrl+ Página arriba/ Página AbajoEsta combinación hace que el cursor vaya al objeto siguiente o previo en la ventana Propiedades.
Ctrl+ Inicio/FinEsta combinación hace que el cursor vaya al objeto primero o posterior en la ventana Propiedades.
Ctrl+Alt+<letra>Presione Ctrl+Alt más alguna letra para saltar a la primera propiedad, método o 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 código de VFP. Después de todo, es lo que hacemos – ¡escribir código! 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 código a través de varios procedimientos y funciones. Pero ¿sabe que no necesita activar la ventana Vista de documento para tomar ventaja de esta característica? En cuanto se abre la ventana de Vista de documento, puede presionar Ctrl+PageUp y Ctrl+PageDown para navegar a través del elemento en la lista. No necesita saltar a la Vista de documentos, navegar por el, y luego saltar al programa.

Mayúsculas y minúsculas

Si es un porfiado sobre las mayúsculas y minúsculas, puede utilizar Ctrl.+U para convertir el texto seleccionado a minúsculas y Ctrl+Shift+U para convertirlo a mayúsculas

Marcadores

Los marcadores son muy buenos cuando trabaja con mucho código. Puede leer a través de algún código y ver referencias de otro método o función. Por supuesto, necesita echar un vistazo a ese código y luego saltar atrás a donde estaba antes, al finalizar. Puede hacerlo más rápido empleando marcadores (bookmarks). Hay que marcar la ubicación existente presionando Alt+Shift+F2. Ahora vaya al otro código que necesita mirar y al finalizar, presione F2 o Shift+F2 para regresar al código anterior. El saltar entre diferentes secciones de código, puede permitirle ahorrar mucho tiempo si marca cada sección con un marcador.

Cuadro de diálogo Buscar

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

CarácterDescripción
\tBusca caracteres Tab
\rBusca el final de cada línea
\nBusca el inicio de cada línea
\\Busca el carácter "\"

Tabla 3. Utilizar el carácter "\" en el diálogo Buscar.

Las búsquedas "\r" y "\n" tienen algunas trampas. Escriba "\r" en el cuadro de diálogo Buscar y presione el botón Buscar siguiente. Al inicio parece como si nada hubiera ocurrido, sin embargo, mantenga presionado el botón Buscar siguiente y verá un cuadro en su código en la primera línea en blanco.

Lo que ocurre es que como Buscar "\r" va al final de cada línea de código; el cursor no se ilumina; pero realmente está situado al final de la línea. Cada vez que presiona Buscar siguiente, va al final de la línea siguiente pero no tiene ninguna pista visual hasta que choca con una línea en blanco. Para demostrar que está trabajando realmente, active el editor y escriba una letra. Verá la letra al final de la línea. Lo mismo es válido cuando se hace una búsqueda por "\n" excepto que el cursor va al inicio de cada línea. 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 carácter a ser buscado. Por lo tanto, la búsqueda por "\\" encontrará una sola barra inversa. Sin embargo, esto en realidad no es necesario, porque una barra inversa en el cuadro de diálogo Buscar, encontrará todas las barras inversas.

Cuadro de diálogo Buscar – caracteres comodín

Una de las casillas de verificación del cuadro de diálogo Buscar es Usar caracteres comodín, Seleccionar esta opción le permitirá utilizar caracteres especiales para establecer la coincidencia. Tabla 4 muestra que está disponible.

CarácterCoincidencia con comodín
?Único carácter
*Múltiples caracteres
#Único dígito
<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 diálogo Buscar.

Los símbolos "?", "*", y "#" se explican por si solos; pero algunos de los otros elementos necesitan mayor explicación. Buscando por "<Fox" encontrará sólo 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 sólo 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 actualización, aunque sea sólo por esta característica. Personalmente, no puedo vivir más sin IntelliSense. Si tengo que trabajar en un proyecto de VFP previo a VFP 7, me volvería loca. De hecho, usualmente hago todas mis modificaciones en VFP 7 o VFP 8, y luego utilizo las versiones antiguas sólo para compilarlas.

Operador expansión

Con IntelliSense viene un grupo de características de teclas, así como el operador expansión. ¿Cuántas veces ha escrito lnCount = lnCount + 1? Juro que lo he hecho un millón de veces hasta ahora. Pero, estos días, 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 expansión disponible.

Esto...Expande a…
cVar++cVar = cVar + 1
cVar--cVar = cVar - 1
cVar+=cVar = cVar +
cVar-=cVar = cVar -
cVar/=cVar = cVar /
cVar*=cVar = cVar *

Tabla 5. Opciones de operador expansión.

Teclas de acceso directo IntelliSense

He visto gran número 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 atrás hasta el punto. Puede utilizar además Ctrl+J después del signo igual para listar los valores asociados con una propiedad particular, y Ctrl+I puede ser utilizado para mostrar información rápida.

Ponga el siguiente código 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 después del punto)
loForm.
*-- CTRL+J para listar los valores 
*-- (coloca el cursor después del signo igual)
loform.alwaysontop = 
loForm.BorderStyle =
*-- CTRL+I for Quick Info 
*-- (coloca el cursor en uno de los parámetros)
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 cómo 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 código de método.

Esto...Expande como …
MFModify File
MCModify Command
DCDefine Class
ZdefMuestra #DEFINEs
ZlocMuestra variables locales
DOCASEDO CASE
CASE
OTHERWISE
ENDCASE
DOWHILEDO WHILE
ENDDO
IFENDIF
ENDIF
IFELSEIF
ELSE
ENDIF
TRYENDTRY
CATCH
FINALLY
ENDTRY
FOREACHFOR EACH
ENDFOR
FORENDFOR
ENDFOR
SCANENDSCAN
ENDSCAN
TEXTENDTEXT TO NOSHOW TEXTMERGE
ENDTEXT
WITHENDWITH
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 más productivo cada día. Algunas de estas herramientas tienen ya años y años, y otras, son nuevas en VFP 8.0. No escribiré mucho sobre cómo utilizar estas herramientas, porque eso merece un artículo por si mismo. Sólo quiero que sea consciente de estas herramientas para que pueda utilizarlas.

Class Browser (Examinador de clases)

El examinador de clases tiene una pequeña lista MRU - Utilizado más 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 botón Galería de componentes.

Utilizar clic derecho con el botón Ver código de clases cambia ligeramente el comportamiento. La ventana de edición que aparece con el código es pequeña y cabe dentro del marco derecho del examinador de clases. De hecho, puede hacer clic en el botón Ver código de clase (View Class Code) para traer el código para una clase, y luego utilizar clic derecho para traer el código de una segunda clase.

Una de las características más ú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 además arrastrar el icono de la clase a la ventana de comandos y el código 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 Inspección. Esto puede ahorrar tiempo ya que no necesita escribir variables con largos nombres, y reduce las posibilidades de errores de escritura incorrecta. Puede además arrastrar una variable desde las ventanas Inspeccionar o Local a la ventana Comandos o el editor.

Otra fantástica característica del editor es que puede cambiar los valores de variables a voluntad. Una vez que una variable está en la ventana Inspección 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 ejecución para ver si el resto va bien. Además de escribir un nuevo valor, puede escribir una expresión 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 código – nuevo en VFP 8.0

En mi opinión, esta herramienta no tiene el nombre correcto, ya que es en realidad una fabulosa herramienta de búsqueda – que trabaja más allá que con el código. Esta herramienta permite buscar por un proyecto entero determinada cadena. Puede buscar programas, clases, informes, y todo tipo de archivos en un proyecto. Busca además propiedades y en los códigos de los métodos.

Además de ser una herramienta de búsqueda, es una herramienta que permite sustituir. Puede decirle que sustituya todas las ocurrencias que encuentre o algunas ocurrencias específicas. Esto hace cambios masivos en su aplicación 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 más interno, llegando al corazón mismo. La personalización puede ser distribuida a otros al exportar e importar archivos XML sencillos. Se espera que más 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 más que eso. Puede agregar todas sus clases más comúnmente utilizadas a esta herramienta y esto le hará diseñar con más facilidad sus formularios. Pero puede aprovechar muchas otras ventajas que no son muy conocidas.

Una categoría del ToolBox es Text Scraps (fragmentos de texto). Significa que le permite predefinir un conjunto de texto y luego pegarlo en sus programas y sus códigos de métodos. Además, no está limitado a VFP, puede pegar fragmentos 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 característica 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, colóquelos en el ToolBox con accesos rápidos.

Otra cosa que puede hacer con la opción 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 opción desde el ToolBox, el Explorador emergerá con este directorio como predeterminado. Si ve que siempre navega por el mismo directorio, agréguelo al ToolBox y ahorre tiempo.

Foundation Clases

Déle un vistazo al directorio FFC en el directorio raíz 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 termómetro 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 código para ver cómo se hace. Es una gran herramienta de aprendizaje, para entender cómo 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 cómo 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 código necesario para re-crear su DBC. Puede ser muy útil para crear e instalar una nueva aplicación. No necesita enviar todos lo archivos de datos. En su lugar, está listo para distribuir su aplicación, con sólo ejecutar este programa en su PC y poner el programa creado en su proyecto. Haga que su programa de instalación ejecute el programa generado por el GenDBC, y la nueva instalación se inicializará y ejecutará sin pérdida de tiempo.

Es además, una gran vía 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 código que genera los pocos archivos que desea. Cambie el nombre de la DBC en el programa y re-ejecútelo 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 vía para aprender acerca de algo es bucear en el código que hay detrás. Muchas de las herramientas y utilidades de VFP estás actualmente escritas ¡con el propio código de VFP! El código fuente para todas estas herramientas están 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 cómo 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 artículo. Incluso experimentados desarrolladores tienen por obligación su momento "ah ha". Existe mucho en FoxPro así que es difícil para una persona saberlo todo. En el próximo artículo de esta serie, voy a hablar de la ventana de comandos, algunos comandos y un conjunto de ideas varias.

Para encontrar más sobre FoxTalk y Publicaciones Pinnacle (Pinnacle Publishing) visite su sitio Web en http://www.pinpub.com

Nota: Este no es un sitio Web de la corporación Microsoft. Microsoft no es responsable por su contenido. Este artículo está reproducido de la edición 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 publicación independiente de Pinnacle Publishing, Inc. Ninguna parte de este artículo puede ser reproducido (excepto en breves acotaciones utilizadas en revistas y artículos especializados) sin previo consentimiento de Pinnacle Publishing, Inc. Para contactar con Pinnacle Publishing, Inc, favor de llamar al 1-800-788-1900.

Continua en ... Secretos ocultos del IDE de VFP (Parte 2)

No hay comentarios. :

Publicar un comentario

Los comentarios son moderados, por lo que pueden demorar varias horas para su publicación.