FoxPro/Visual FoxPro - Diseño de formularios

 
Vista:
sin imagen de perfil

Diseño de formularios

Publicado por José Luis (4 intervenciones) el 02/08/2014 21:09:24
Con el fin de aumentar mis conocimientos en Visual Fox Pro, estoy desarrollando una pequeña aplicación de facturación tomando como base el ejemplo del laboratorio nº 4 de la Universidad Nacional de Ingeniería - Centro de Extensión y Proyección social de Perú, implementado por Juan José Allaucca Paucar con el cual me es imposible contactar vía email porque los correos que he enviado a todas las direcciones que poseo de dicho señor me son rechazados.
Dicho ejemplo lo descargué del portal http://Mygnet.com
Nombre: ejemplos en visual fox 6
Archivo: vf2lab4438.zip

He notado que en dicho ejemplo falta el formulario para dar de alta/baja modificación a los artículos y el formulario para las mismas funciones aplicado a clientes para los cuales se ha de emitir la factura correspondiente.
He empezado diseñando un formulario relativo a los artículos.

Mi problema, y para cuya solución pido ayuda, es que no consigo dar con las instrucciones que permitan presentar el formulario en pantalla y que las casillas/cuadros de texto aparezcan en blanco. Cuando ejecuto el formulario siempre muestra el primer registro de la tabla.

Cada casilla está vinculada mediante la propiedad controlsource a la tabla "articulo" y si las desvinculo para que aparezca cada casilla en blanco entonces la tabla no se actualiza cuando intento añadir, modificar o eliminar un registro.

Los botones del formulario son los siguientes:
Primer registro (funciona)
Registro anterior ( Id. Id.)
Registro siguiente (Id. Id.)
Ultimo registro (Id. Id.)


y también:

Examinar (funciona)
Añadir (No funciona por lo indicado anteriormente)
Modificar ( Id. Id.)
Eliminar (Id. Id.)
Cerrar (funciona)

Las casillas tienen el sisguiente "name":
ArtCod1 (Código del artículo)
ArtDet1 (Nombre del artículo)
ArtPre1 (Precio)
Artstk1 (Unidades en almacén)

La tabla de artículos se titula "articulo" y tiene los siguientes campos:
ArtCod (Carácter) (ancho 4) (índice)
ArtDet (Carácter) (ancho 40)
ArtPre (Numérico) (ancho 10,2)
Artstk (Numérico) (ancho 4,0)

Lo que pretendo es que, al cargar el formulario, aparezca con las casillas de texto en blanco de tal forma que si el usuario desea añadir, modificar o eliminar registros pueda hacerlo escribiendo en dichas casillas para, a continuación, pulsar el botón correspondiente y que el formulario vuelva a presentar las casillas en blanco para la siguiente operación.

Incluso he intentado poner en el formulario un botón titulado "Nuevo" para que el usuario pulse en él antes de iniciar la escritura, pero no he logrado tampoco hacerlo funcionar.

EL codigo fuente escrito para cada evento es el siguiente:
-------------
Form1 Init
*Carga del formulario y presentación en pantalla

Set echo off
Set talk off
*Pasar la dirección de la base de datos
set default to c:\proyfactur\data
mTabla="articulo.dbf" && Asigna a una variable el nombre del archivo

if !file(mTabla) && Si no encuentra la tabla
mMensaje = messagebox("No existe el archivo",0+64, "Atención")
endif

sele 1
* Activa la tabla con el índice mediante variable macro y asigna alias
use &mTabla order tag artcod alias articulo

scatter memvar memo && Carga el registro activo en una matriz/vector de memoria
thisform.refresh

*ir al objeto principal
thisform.artcod1.setfocus
return
--------------------------
BtnAñadir Click
*Agregar un registro con los datos escritos en pantalla
SELE 1

*Verificar si hay datos en blanco en alguna casilla
if empty(thisform.ArtCod1.value)
wait window "Código incorrecto..." &&nowait
thisform.ArtCod1.setfocus
return
endif

if empty(thisform.ArtDet1.value)
wait window "Nombre incorrecto..." &&nowait
thisform.ArtDet1.setfocus
return
endif

if empty(thisform.ArtPre1.value)
wait window "Precio incorrecto..." &&nowait
thisform.ArtPre1.setfocus
return
endif

if empty(thisform.Artstk1.value)
wait window "Unidades incorrectas..." &&nowait
thisform.Artstk1.setfocus
return
endif


*Agregar nuevo registro con los datos escritos en el formulario
SELE 1
append blank
gather memvar

*Dejar en blanco la matriz/vector de memoria
scatter memvar blank

*Ir a la primera casilla de texto del formulario
thisform.ArtCod1.setfocus
thisform.refresh
-----------------------
BtnModificar Click
*Actualizar/modificar el contenido de un campo

*Verificar si hay datos en blanco
if empty(thisform.ArtCod1.value)
wait window "Código incorrecto..." nowait
thisform.ArtCod1.setfocus
return
endif

if empty(thisform.ArtDet1.value)
wait window "Nombre incorrecto..." nowait
thisform.ArtDet1.setfocus
return
endif

if empty(Thisform.ArtPre1.value)
wait window "Precio incorrecto..." nowait
thisform.ArtPre1.setfocus
return
endif

if empty(Thisform.Artstk1.value)
wait window "Unidades incorrectas..." nowait
thisform.Artstk1.setfocus
return
endif




*Actualizar datos del campo índice
SELE 1
ArtCod = alltrim(thisform.ArtCod1.value)
seek ArtCod
if found() && Actualizar registro hallado"
gather memvar memo &&Vuelca los datos de la matriz/vector en memoria al registro
wait window "Datos actualizados..." nowait
else
mMens1 = "Imposible actualizar el código "+ArtCod+" no existe"+chr(13)
mMens2 = "Utilice otro código e intente actualizar de nuevo..."
mOpc = messagebox(mMens1+ mMens2,0+64, "Atención")
thisform.ArtCod1.setfocus
return
endif
return
------------------------
BtnEliminar Click
*Borrar un registro

SELE 1


ArtCod = alltrim(thisform.ArtCod1.value)
seek ArtCod
if !found() && No existe el código
mMens1 = "Imposible retirar el código " + ArtCod + " no existe"+chr(13)
mMens2 = "Utilice otro código e intentelo de nuevo..."
nOpc = messagebox(mMens1 + mMens2,0+64,"Atención")
thisform.ArtCod1.setfocus
return
endif

mMens1 = "¿Desea borrar el código "+ ArtCod + " del sistema?"+chr(13)
mOpc =messagebox(mMens1,1+32, "Borrar registro")

if mOpc = 1 && Clic en botón Aceptar
SELE 1
delete
wait window "Registro borrado del sistema..." nowait

*Mover el puntero al próximo registro disponible

if !eof()
skip 1
endif
if eof()
go bottom
endif
endif

scatter memvar memo
thisform.refresh
return
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de JOSE
Val: 46
Ha disminuido 1 puesto en FoxPro/Visual FoxPro (en relación al último mes)
Gráfica de FoxPro/Visual FoxPro

Diseño de formularios

Publicado por JOSE (4 intervenciones) el 18/07/2016 02:06:33
hola mira creo que puedo ayudarte confirmamelo ya hace 2 años de esto un saludo..
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de JOSE
Val: 46
Ha disminuido 1 puesto en FoxPro/Visual FoxPro (en relación al último mes)
Gráfica de FoxPro/Visual FoxPro

Diseño de formularios

Publicado por JOSE (14 intervenciones) el 31/07/2016 16:00:15
Hola amigo mira veras yo tengo también ese interés igual q tu lo q pasa es que no lo termine por q no pude escribirlo por que creo q hay un error de tipografía , a eso le sumo q soy muy verde en la rama y aun me cuesta mas trabajo te agradecería si puedes adjuntar solo el ejercicio terminado o almenos intentar a ayudarme a terminarlo por que me que do aquí


Antes de continuar con mas cambios, vamos a insertar objetos Combo y Spinner en la columna1 y columna2 del Grid respectivamente, para ello prepare el control de Formularios luego:
Seleccione el objeto: Grid
Presione sobre ella : Botón Derecho
Seleccione : Modificar
Hacemos Click en : Combo
Luego Click sobre ab debajo de: Header1 de la primera columna del grid
Hacemos Click en : Spinner
Luego Click sobre ab debajo de: Header1 de la Segunda columna del grid
Salimos de edición haciendo Click fuera del Grid



no entiendo tampoco esto

Luego Click sobre ( AB debajo de: )



hay ya me lio por que no veo ningún Spinner en el fron por lo demás todo bien , en el documento o estoy ciego o no lo veo , te pido por favor me ayudes almenos a terminarlo como se supone tendría que ser ... GRACIAS
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar