domingo, 26 de junio de 2011

Modulo Archivo: Salir

Para salir del programa, utilizaremos la orden ME.Close.
En el Menus/Archivo/Salir, introducimos el siguiente código:
PUBLIC SUB Salir_Click()
ME.Close
END
Esta salida, la hace “bruscamente”, osea que si no hemos salvado los ultimos datos que hemos introducido o modificados se perderan.... ¿que podemos hacer “corregirlo”?
Pues creamos una variable global llamada “cambio”.


En el módulo var:
PUBLIC cambio AS String
Cada vez que introduzcamos,editamos o borramos ,esta variable cambiara de valor a cambio=”si”,
PUBLIC SUB ButtonAceptar_Click()
IF var.estado <> "Edicion" THEN
'añadimos a la matriz los datos
var.id.add("Id" & Str$(Now))
var.dni.add(TextBoxDNI.text)
var.nombre.add(TextBoxNombre.Text)
var.apellidos.add(TextBoxApellidos.Text)
var.empresa.add(TextBoxEmpresa.Text)
var.puesto.add(TextBoxPuesto.Text)
var.telf_empresa.add(TextBoxTelfEmpresa.Text)
var.telf_parti.add(TextBoxTelfParticular.text)
var.fax.add(TextBoxFax.Text)
var.movil_empresa.add(TextBoxMovilEmpresa.Text)
var.movil_parti.add(TextBoxMovilParticular.Text)
var.pag.add(TextBoxWEB.Text)
'en foto guardo la ruta donde esta la imagen
var.foto.add(var.rutaimagen)
var.direccion.add(TextBoxDireccion.Text)
var.observaciones.add(TextBoxObs.Text)
var.fecha_datos.add(TextBoxFecha.Text)
var.correo.Add(TextBoxCorreo.Text)
var.cambio = "si"
ENDIF
IF var.estado = "Edicion" THEN
var.dni[var.RegistroEditado] = TextBoxDNI.text
var.nombre[var.RegistroEditado] = TextBoxNombre.Text
var.apellidos[var.RegistroEditado] = TextBoxApellidos.Text
var.empresa[var.RegistroEditado] = TextBoxEmpresa.Text
var.puesto[var.RegistroEditado] = TextBoxPuesto.Text
var.telf_empresa[var.RegistroEditado] = TextBoxTelfEmpresa.Text
var.telf_parti[var.RegistroEditado] = TextBoxTelfParticular.text
var.fax[var.RegistroEditado] = TextBoxFax.Text
var.movil_empresa[var.RegistroEditado] = TextBoxMovilEmpresa.Text
var.movil_parti[var.RegistroEditado] = TextBoxMovilParticular.Text
var.pag[var.RegistroEditado] = TextBoxWEB.Text
'en foto guardo la ruta donde esta la imagen
var.foto[var.RegistroEditado] = var.rutaimagen
var.direccion[var.RegistroEditado] = TextBoxDireccion.Text
var.observaciones[var.RegistroEditado] = TextBoxObs.Text
var.fecha_datos[var.RegistroEditado] = TextBoxFecha.Text
var.correo[var.RegistroEditado] = TextBoxCorreo.Text
var.cambio = "si"
'se da por compluido el estado de edicion
ENDIF
'ponemos en blanco la propiedad .text de los texbox
PictureBoxFoto.Picture = Picture["icon:/96/gambas"]
TextBoxDNI.text = ""
TextBoxNombre.text = ""
TextBoxApellidos.text = ""
TextBoxEmpresa.text = ""
TextBoxPuesto.text = ""
TextBoxTelfEmpresa.text = ""
TextBoxTelfParticular.text = ""
TextBoxFax.text = ""
TextBoxMovilEmpresa.text = ""
TextBoxMovilParticular.text = ""
TextBoxWEB.text = ""
PictureBoxFoto.Picture = ""
TextBoxDireccion.text = ""
TextBoxObs.text = ""
TextBoxFecha.text = ""
TextBoxCorreo.text = ""
'escribimos en el gridviews el dato introducido
titulo.rellena()
'se da por compluido el estado de edicion
var.estado = ""
'el setfocus lo ponemos justo al inicio de los datos
TextBoxDNI.SetFocus
'hacemos de nuevo accesible el gridViewDatos
gridViewDatos.enabled = TRUE
END
Y cuando borramos:
PUBLIC SUB ButtonBorrar_Click()
IF var.estado <> "Edicion" THEN
'si estamos en mode "introduccion de datos"
PictureBoxFoto.Picture = Picture["icon:/96/gambas"]
TextBoxDNI.text = ""
TextBoxNombre.text = ""
TextBoxApellidos.text = ""
TextBoxEmpresa.text = ""
TextBoxPuesto.text = ""
TextBoxTelfEmpresa.text = ""
TextBoxTelfParticular.text = ""
TextBoxFax.text = ""
TextBoxMovilEmpresa.text = ""
TextBoxMovilParticular.text = ""
TextBoxWEB.text = ""
PictureBoxFoto.Picture = ""
TextBoxDireccion.text = ""
TextBoxObs.text = ""
TextBoxFecha.text = ""
TextBoxCorreo.text = ""
endif
IF var.estado = "Edicion" THEN
'si estamos en modo "edicion
var.id.REMOVE(var.RegistroEditado)
var.dni.REMOVE(var.RegistroEditado)
var.nombre.REMOVE(var.RegistroEditado)
var.apellidos.REMOVE(var.RegistroEditado)
var.empresa.REMOVE(var.RegistroEditado)
var.puesto.REMOVE(var.RegistroEditado)
var.telf_empresa.REMOVE(var.RegistroEditado)
var.telf_parti.REMOVE(var.RegistroEditado)
var.fax.REMOVE(var.RegistroEditado)
var.movil_empresa.REMOVE(var.RegistroEditado)
var.movil_parti.REMOVE(var.RegistroEditado)
var.pag.REMOVE(var.RegistroEditado)
var.foto.REMOVE(var.RegistroEditado)
var.direccion.REMOVE(var.RegistroEditado)
var.observaciones.REMOVE(var.RegistroEditado)
var.fecha_datos.REMOVE(var.RegistroEditado)
var.correo.REMOVE(var.RegistroEditado)
var.cambio = "si"
' Y PONEMOS TODOS LOS CAMPOS EN BLANCO
PictureBoxFoto.Picture = Picture["icon:/96/gambas"]
TextBoxDNI.text = ""
TextBoxNombre.text = ""
TextBoxApellidos.text = ""
TextBoxEmpresa.text = ""
TextBoxPuesto.text = ""
TextBoxTelfEmpresa.text = ""
TextBoxTelfParticular.text = ""
TextBoxFax.text = ""
TextBoxMovilEmpresa.text = ""
TextBoxMovilParticular.text = ""
TextBoxWEB.text = ""
PictureBoxFoto.Picture = ""
TextBoxDireccion.text = ""
TextBoxObs.text = ""
TextBoxFecha.text = ""
TextBoxCorreo.text = ""
'hacemos de nuevo accesible el gridViewDatos
gridViewDatos.enabled = TRUE
ENDIF
'escribimos en el gridviews el dato introducido
titulo.rellena()
'el setfocus lo ponemos justo al inicio de los datos
TextBoxDNI.SetFocus
'se da por compluido el estado de edicion
var.estado = ""
END




Cada vez que se guarde o abra un archivo esta variable valdra cambio=”no”
En el módulo Archivar / salva():
…...
File.Save(destino, lineas)
var.cambio=no' se ha grabado toda la informacion, ha dejado de haber cambios
fins: ' hemos pulsado el boton de cancelar en el cuadro de dialogo Dialog.SaveFile()
'fin de la subrutina
END
En el módulo Archivar / abrir()
…...
NEXT
titulo.rellena()
var.cambio=no' se ha abrierto un archivo de datos, no hay cambios
ENDIF
finlectura:
END


y cuando salgamos, mediante un If...Then y un Message.Info, se nos preguntara si deseamos salir o no, sin guardar cambios.


PUBLIC SUB Salir_Click()
Form_close()
END


PUBLIC SUB Form_Close()
DIM res AS Integer
IF var.cambio = "si" THEN
res = Message.Question("¿Desea salir sin salvar?", "si", "no")
IF res = 1 THEN
ME.Close
ELSE
STOP EVENT 'paramos este evento y no salgo del programa
ENDIF
ELSE
ME.Close
ENDIF
'no salgo del programa
End






De esta manera conseguirmos que cada vez que se modifique o altere los datos siempre nos pregunte si queremos salir sin guardar los datos.
¡¡¡ Un toque profesional a nuestro programa !!!!






Nota Importante:
Ahora con Form_Close() , cuando pulsamos el boton “X” el programa te pregunta si quieres salir o no. El formulario puede tener borde, lo suyo es que sea fijo. Fmain.Border=fixed

No hay comentarios:

Publicar un comentario