La pregunta es muy generalizada. Trataré de darte una idea lo más acertada posible ya que lo que preguntaste no se limita a un punto específico, sino a un punto en general. Lo que primero debes hacer es organizar los archivos en carpetas, los formularios en su carpeta, los prgs. En su carpeta, y así con todos los elementos del programa. Luego creas un prg y lo estableces como principal. Colocas el siguiente código para establecer las rutas de acceso de cada elemento del programa: ** Buscar Directorio de Instalación, en donde se está ejecutando el programa Dir_Ruta = Sys(16) Dir_Ruta = SubStr(Dir_Ruta,1,Atc('\',Dir_Ruta,Occurs('\',Dir_Ruta))) ** Definir rutas de acceso Set Path To (Dir_Ruta + 'Formul,Librerias,Reportes,Datos,BitMaps,Programs,Ayuda') ** Definir directorio predeterminado Set Defa To SubStr(Dir_Ruta,1,Len(Dir_Ruta)-1) ** Cambia la presentación del screen (pantalla principal de VFP) WITH _Screen .Caption = 'MiAplicación' .Icon = 'RutayNombre' && Puedes poner más cosas ENDWITH ** Por último invocas el menu Do menu. Mpr Read events El comando READ EVENTS es estrictamente necesario para que la aplicación pueda leer las acciones del usuario. Si no colocas esto, el programa no seguirá y procesará las acciones del usuario. Eso para empezar. Entonces debes construir el menu y todos los formularios y reportes que llamarás a través de el. Una sugerencia. Para trabajar más fácil personaliza un formulario, de manera que tenga la apariencia que quieras. Una vez terminada, grábalo como una clase. Después en el menú Herramientas/Opciones, en la carpeta Formularios, en la opción Clases de Plantilla, activa la opción Formulario que luego te preguntará en dónde se encuentra la clase que tiene la plantilla del formulario que creaste como clase. Luego Establece la opción como predeterminada. Esto te aligizará mucho las personalizaciones de las pantallas, de modo que cuando crees una nueva ya te saldrá como la quieres. Crea la base de datos y las tablas que creas pertinentes para el sistema. Luego trabaja con el Entorno de datos de los formularios, y configura allí el acceso y orden de cada tabla, así como las relaciones que puedan haber entre ellas. De igual manera con los reportes, salvo en las condiciones que no lo requieras, como por ejemplo, listar información de unas tablas que ya están incluidas en el entorno de datos de un formulario que invoca dicho reporte. Es decir, los reportes que son llamados a través de un formulario pueden usar el mismo entorno de datos del formulario. En la opción salir del sistema deberás cerrar la base de datos y limpiar los eventos antes de salir: IF MESSAGEBOX('¿Desea salir del sistema?,3+32,'Confirmación') = 6 Close databases Clear all QUIT Endif Con este esqueleto podrás crear un ejecutable y que te funcione adecuadamente. Ojalá que te sea de mucha utilidad. Si tienes alguna otra inquietud me puedes consultar cuántas veces quieras.