Guardar al cerrrar el form

Iniciado por pedraosone, 16 Marzo 2008, 14:12 PM

0 Miembros y 2 Visitantes están viendo este tema.

pedraosone

hola de nuevo amigos
ya se como guardar el contenido de un texbox en un archivo txt, mi duda surge ahora
al pulsar el boton de cerrar el formulario ese que esta en la parte alta junto al de minimizar y maximizar, quiero que me haga la misma accion pero  no se como hacerlo

otra duda que tengo es que he visto algunos programas que tienen un boton extra junto a los tres de siempre( minimizar, maximizar y cerrar) el cual cuando se pulsa recoge el formulario sobre si mismo y me gustaria saber si eso es posible sin usar controles ocx ni dll ya que me gustaria distribuir mi programa solo como ejecutable.

desde ya muchas gracias

~~

Para guardar antes de cerrar usa el evento form unload, para lo del tercer boton buscate por google algun api, q ahora mismo no caigo en ninguna con la q lo puedas hacer

cassiani

Cita de: pedraosone en 16 Marzo 2008, 14:12 PM
hola de nuevo amigos
ya se como guardar el contenido de un texbox en un archivo txt, mi duda surge ahora
al pulsar el boton de cerrar el formulario ese que esta en la parte alta junto al de minimizar y maximizar, quiero que me haga la misma accion pero  no se como hacerlo

Ya lo dijo EON, para eso usas el eveto Unload del formulario, puedes agregarle un mensaje de advertencia y que se efectue determinada acción dependiendo de la respuesta, mira este ejemplo:

Código (vb) [Seleccionar]
Private Sub Form_Unload(Cancel As Integer)
    Cancel = (MsgBox("¿Realmente desea Salir?", vbQuestion + vbYesNo, _
                   "Salir") = vbNo)
    If Cancel = 0 Then
        Guardar 'llamamos a la rutina encargada de guardar
    End If
End Sub


Incluso podrías usar una variable booleana que indique cuando se ha realizado un cambio en el textbox y de esta manera al cerrar el form solo guarde si se ha producido un cambio o si nunca se ha guardado.

¡S4lu2!

pedraosone

Cita de: C@ss¡@n¡ en 16 Marzo 2008, 14:38 PM
Incluso podrías usar una variable booleana que indique cuando se ha realizado un cambio en el textbox y de esta manera al cerrar el form solo guarde si se ha producido un cambio o si nunca se ha guardado.
¡S4lu2!
podrias ponerme un ejemplo con un txt de eso de la variable boleana que me comentas
gracias por todo

SheKeL_C$

Dim Cambio              As Boolean
'Variable [TRUE|FALSE]


Private Sub Command1_Click()
'Este boton representaria el 'Guardar' de los editores d texto
Cambio = False
End Sub

Private Sub Form_Load()
Cambio = True
End Sub

Private Sub Form_Unload(Cancel As Integer)
   
    If Cambio = False Then Exit Sub 'CERRAMOS SIN PREGUNTAR

    Cancel = (MsgBox("¿Realmente desea Salir?", vbQuestion + vbYesNo, _
                   "Salir") = vbNo)
    If Cancel = 0 Then
        Cambio = False
        'Guardar 'llamamos a la rutina encargada de guardar
    End If
End Sub

Private Sub Text1_Change()
    Cambio = True
End Sub



Una pregunta C@ssi@ani, que etiquetas pones para los colores ???

~~

Offtopic - SheKeL_C$, vete al combo box de la derecha, en el que pone GeSHi y las eliges. Para VB son:
[ code=vb ][ /code]

pedraosone

Ante todo quiero daros las gracias  por las respuestas recibidas.
ahora os paso a intentar explicar otra duda que me surge
supongamos que la rutina guardar hace lo siguiente:
Código (vb) [Seleccionar]

NumFic = FreeFile
Open "C:\fichero.txt" For Append As NumFic
Print #NumFic, Text10.Text  'Guardamos el valor de Cadena en el fichero.
Close NumFic 'Cerramos el fichero y liberamos el canal.

si no exisitiera c:\fichero.txt el programa lo crea. 'hasta hay lo entiendo
pero supongamos que existe ya ese archivo:
como hago yo para que si existe cree uno llamado por ejemplo
fichero+ la fecha corta de hoy
os pido perdon por tantas molestias pero aprendo mas practicando vuestros ejemplos que leyendo largos manuales aunque tambien los miro a veces  ;D
desde ya muchas gracias amigos


cassiani

#7
Cita de: pedraosone en 18 Marzo 2008, 02:02 AM
os pido perdon por tantas molestias pero aprendo mas practicando vuestros ejemplos que leyendo largos manuales aunque tambien los miro a veces  ;D

De seguir así te mal acostumbraras, trata de leer un poco mas...

Código (vb) [Seleccionar]
Option Explicit

Private Sub Guardar()
Dim NumFic As Integer
    NumFic = FreeFile
   
    If ExisteArchivo("C:\fichero.txt") = False Then
        'Si el archivo no existe lo abrimos con este nombre
        Open "C:\fichero.txt" For Output As NumFic
    Else
        'Si existe lo abrimos con el nombre anterior pero _
        agregandole la fecha actual al final
        Open "C:\fichero-" & Format(Now, "dd-mm-yy") & ".txt" For Output As NumFic
    End If
   
    'Escribiendo en el fichero
    Print #NumFic, Text10.Text  'Guardamos el valor de Cadena en el fichero.
    Close NumFic 'Cerramos el fichero y liberamos el canal.
End Sub

Public Function ExisteArchivo(Archivo As String) As Boolean
On Error Resume Next
    ExisteArchivo = IIf(Dir$(Archivo) = "", False, True)
End Function

Private Sub CmdGuardar_Click()
    Guardar 'Llamando a la rutina guardar
End Sub


Aunque lo que no entiendo es para que quieres crear archivos de diferentes nombres cuando puedes seguir agregándole info al final del primero  :huh: otra cosa, si deseas seguir creando archivos con el mismo patrón y en el mismo día, faltaría agregarle la hora de creación al final del nombre del fichero para separarlos por tiempo de creación ¡idea! (pero eso no preguntes como se hace, es muy básico).



¡S4lu2!

pedraosone

muchas gracias a todos por la aportacion
CitarAunque lo que no entiendo es para que queres crear archivos de diferentes nombres cuando podes seguir agregándole info al final del primero 
pues muy sencillo,o al menos eso pense yo:
si ya existe un fichero con la fecha de ese dia que cierre y salga sin guardarlo  ;D

creo que con esto puedo dar el post por concluido
nuevamente gracias a todos.