Visual Basic - No puedo hacer funcionar el showsave

Life is soft - evento anual de software empresarial
 
Vista:

No puedo hacer funcionar el showsave

Publicado por DTrix (4 intervenciones) el 14/04/2001 14:43:36
Hola
yo tengo este codigo :

Private Sub mnuSalirElem_Click()
If datos = 1 Then
respuesta = MsgBox(\"Los datos no han sido guardados\" + Chr(10) + \"Desea guardarlos ahora ?\", vbYesNoCancel + vbQuestion + vbDefaultButton1, \"Editor De Textos\")
If respuesta = vbCancel Then
Exit Sub
If respuesta = vbNo Then
End
If respuesta = vbYes Then
If archivonuevo = \"\" Then
CommonDialog1.Filter = \"Texto Enriquecido (*.rtf)|*.rtf|Texto (*.txt)\"
CommonDialog1.ShowSave
archivonuevo = CommonDialog1.FileName
End If
If CommonDialog1.FilterIndex = 1 Then
RichTextBox1.SaveFile CommonDialog1.FileName, RichTextBox
Else
RichTextBox1.SaveFile CommonDialog1.FileName, rtfText
End If
Form1.Caption = archivonuevo
datos = 0
End If
End If
End If
End If
End
End Sub

Bueno ,y el problema es que cuando el usuario pulse en el vbyes el programa lanse el commondialog del showsave, pero en ves de hacer eso ,cuando se pulsa en el vbyes ,el programa termina. La variables significan : datos = si hay texto en el richtextbox ,entonces igual a 1 ,si no hay ,es igual a 0.
archivonuevo = A la direccion del archivo guardado, por ejemplo : c:/hola.txt
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

RE:No puedo hacer funcionar el showsave

Publicado por Javi (44 intervenciones) el 14/04/2001 18:38:11
Creo que tu problema está en la línea:
If archivonuevo = \"\" Then
y en el la instrucción End que hay antes del End Sub.

Te he escrito este otro código, que creo hará lo mismo que el tuyo pero de una manera más corta y más sencilla, que es lo que tienes que buscar siempre.

Private Sub mnuSalirElem_Click()
If datos = 1 Then
If MsgBox("Los datos no han sido guardados" + Chr(10) + "Desea guardarlos ahora ?\", vbYesNoCancel + vbQuestion + vbDefaultButton1, "Editor De Textos") = vbYes Then
CommonDialog1.Filter = "Texto Enriquecido (*.rtf)|*.rtf|Texto (*.txt)"
CommonDialog1.ShowSave
RichTextBox1.SaveFile CommonDialog1.filename, CommonDialog1.FilterIndex - 1
Form1.Caption = CommonDialog1.filename
datos = 0
End If
End If
End Sub

Lo único que veo un poco difícil de que entiendas es la línea:
RichTextBox1.SaveFile CommonDialog1.filename, CommonDialog1.FilterIndex - 1

Verás. La propiedad 'FilterIndex' puede tener dos valores:
1 --> Extensión .rtf
2 --> Extensión .txt
En esta línea tu ponías, las constantes, rtfRTF y rtfText, que equivalen a los valores 0 y 1, por tanto, restándole una unidad al valor de la propiedad 'FilterIndex' obtienes el mismo resultado que con tu código pero en una sola línea.

Con este código, creo que tienes solucionado tu problema.

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

Falta algo.

Publicado por Javi (44 intervenciones) el 15/04/2001 17:11:30
Falta poner las siguientes lineas al código anterior antes del 'End Sub':

if respuesta=Cancel then Exit Sub
End
End sub

... y volver a introducir el valor devuelto por la función MsgBox en la variable 'respuesta'.

Si no el programa nunca finaliza.

Lo siento, no soy un pooofesional.

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

Falta otra cosa.

Publicado por DTrix (6 intervenciones) el 15/04/2001 17:50:00
Eso ya lo hice lo arregle y me quedo asi el codigo pero no funciona una parte y no se por que, mira :

Private Sub mnuSalirElem_Click()
On Error GoTo Solucion
If datos = 1 Then
Respuesta = MsgBox("Los datos no han sido guardados." + Chr(10) + "Desea guardarlos ahora ?", vbYesNoCancel + vbQuestion + vbDefaultButton1, "Editor De Textos")
If Respuesta = vbYes Then
CommonDialog1.Filter = "Texto Enriquecido (*.rtf)|*.rtf|Texto (*.txt)"
CommonDialog1.ShowSave
Solucion:
If Err.Number = 32755 Then
Exit Sub
RichTextBox1.SaveFile CommonDialog1.FileName, CommonDialog1.FilterIndex - 1
Form1.Caption = CommonDialog1.FileName
datos = 0
End
If Respuesta = vbCancel Then
Exit Sub
If Respuesta = vbNo Then
End
End If
End If
End If
End If
End If
If datos = 0 Then End
End Sub

Fijate donde dice :

If Respuesta = vbNo Then
End
End If
End If
End If
End If
End If
If datos = 0 Then End
End Sub

Cuando se hace click en el boton " NO " ,pasa un cancelar
y tendria que salir del programa sin guardar nada
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

RE:Falta otra cosa.

Publicado por Javi (44 intervenciones) el 16/04/2001 01:55:02
Creo que tu problema está en las condiciones anidadas que has puesto. En el foro tu código aparece sin los espacios iniciales de cada linea y no llego a entenderlo.

Esto es lo que dice la ayuda sobre la instrucción If...Then...Else

If condición Then
[instrucciones]
[Else]
[instrucciones]
End If

Creo que no lo haces bien. Mándame el código por e-mail y lo miro.

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