| |  |  | Miembros: Mensajes: Temas: Online: Ultimo Miembro: | | |  | | | 
| 
02-04-2006, 16:23:29
| | Un Nuevo Amigo | | Registrado: mar 2006 Posts: 8
| | algo va mal holas foro denuevo yo.
he estado haciendo un mini editor de texto y me sale errores. el editor lo que quiero es que se pueda dar formato al texto(color,negrita,cursiva,tipode letra,etc) pero cuando lo guardo esta bien pongo en nuevo texto abro de denuevo el texto que cree esta bien sale como lo guarde en negrita, color de texto, subrrayado,etc.
pero cuando me salgo del programa es decir pongo en deterner desde VB, entro de nuevo a mi aplicacion pongo abrir el texto que guarde hace segundos ya no carga con formato ni negrita, ni color de letra, ni sbrrayado, ni nada, no sale como lo guarde no se cual sea ni error, aqui les dejo el codigo fuente parar que lo revisen y dejo los archivos para que lo descargen.
Option Explicit
'la variable modificado permitira saber si hubo
'alguna modificacion en el archivo
Dim modificado, rpta As Boolean
'la variable ncanal servira para obtener un numero de canal libre
Dim ncanal As KeyCodeConstants
Private Sub archivo_abrir_Click()
Call abrir 'call llama al procedimiento abrir
End Sub
Private Sub archivo_guardar_Click()
Call guardar 'call llama al procedimiento guardar
End Sub
Private Sub archivo_imprimir_Click()
Call imprimir 'call llama al procedimienteo imprimir
End Sub
Private Sub archivo_nuevo_Click()
Call nuevo 'call llama al procedimiento nuevo
End Sub
Private Sub archivosalir_Click()
End 'termina la ejecucion del programa
End Sub
Private Sub edicion_copiar_Click()
Call copiar 'call llama al procedimiento copiar
End Sub
Private Sub edicion_cortar_Click()
Call cortar 'call llama al procedimiento cortar
End Sub
Private Sub edicion_pegar_Click()
Call pegar 'call llama al procedimiento pegar
End Sub
Private Sub Form_Load()
Dim i As Integer
'centra el formulario en la pantalla
Move (Screen.Width - Width) \ 2, (Screen.Height - Height) \ 2
'establese el titulo de la ventana
Caption = "MI EDITOR"
'establece que el texto que escriba sea de tipo arial
Text1.FontName = "arial"
'establese que por defecto 10 sea el tamaño del texto
Text1.FontSize = 10
'desactiva la opcion cortar del menu edicion
edicion_cortar.Enabled = False
'activa o desactiva la opcoin pegar del menu edicion
'dependiendo de si el portapapeles contiene o no texto
edicion_pegar.Enabled = (Len(Clipboard.GetText()) > 0)
'desactiva la opcion fuente del menu formato
formato_fuente.Enabled = False
'habilita o deshabilita el boton pegar de la barra de herramientas
'dependiendo de si el portapapeles contiene o no texto
Toolbar1.Buttons(7).Enabled = (Len(Clipboard.GetText()) > 0)
'asigna el estado de la tecla caps lock (bloq mayus)
'al panel 2 de la barra de estado
StatusBar1.Panels(2).Style = sbrCaps
'asigna la hora del sistema al panel 3 de la barra de estado
StatusBar1.Panels(3).Style = sbrTime
End Sub
Private Sub Form_Resize()
Text1.Top = 600
Text1.Left = 100
Text1.Width = ScaleWidth
Text1.Height = ScaleHeight - 1000
End Sub
Private Sub Form_Unload(Cancel As Integer)
If modificado Then
rpta = MsgBox("desea guardar los cambios realizados en el documento?", vbYesNo, "MINI EDITOR")
If rpta = vbYes Then
Call guardar
End If
End If
End Sub
Private Sub formato_fuente_Click()
Call fuente 'call llama al procedimiento fuente
End Sub
Private Sub Text1_Change()
modificado = True
End Sub
Private Sub Text1_MouseUp(Button As Integer, Shift As Integer, X As Single, Y As Single)
'habilita/inhabilita el boton copiar si selecciono/noseleciono
'texto en el cuadro de texto text1
Toolbar1.Buttons(5).Enabled = (Text1.SelLength)
'habilita/inhabilita el boton cortar si selecciono/no selecciono
'texto en el cuadro de texto text1
Toolbar1.Buttons(6).Enabled = (Text1.SelLength > 0)
'habilita/inhabilita la opcion copiar si seleciono/noselecciono
'texto en el cuadrod e texto text1
edicion_copiar.Enabled = (Text1.SelLength > 0)
'habilita/inhabilita la opcion cortar si selecciono/no selecciono
'texto en cuadro de texto text1
edicion_cortar.Enabled = (Text1.SelLength > 0)
'habilita/inhabilita la opcion fuente si selecciono/no selecciono
'texto en el cuadro de texto text1
formato_fuente.Enabled = (Text1.SelLength > 0)
End Sub
Private Sub Toolbar1_ButtonClick(ByVal Button As MSComctlLib.Button)
Select Case Button.Key
Case "boton_nuevo"
Call nuevo
Case "boton_abrir"
Call abrir
Case "boton_guardar"
Call guardar
Case "boton_imprimir"
Call imprimir
Case "boton_copiar"
Call copiar
Case "boton_cortar"
Call cortar
Case "boton_pegar"
Call pegar
End Select
End Sub
Public Sub nuevo()
'procedimiento para editar el nuevo archivo
'guardar las modificaion realizadas en el archivo
If modificado Then
rpta = MsgBox("desea guardar los cambios realizados en el documento?", vbYesNo, "MINI EDITOR")
If rpta = vbYes Then
Call guardar
End If
End If
Form1.Caption = "sin titulo" 'titulo por defecto
'borra el contenido actual del cuadro de texto text1
Text1.Text = ""
'desactiva el indicador de modificado
modificado = False
End Sub
Public Sub abrir()
'procedimiento para abrir un archivo de texto
Dim cadena1, cadena2 As String
Dim numero1, numero2 As Long
Dim estado1, estado2, estado3, estado4 As Boolean
'guarda las modificacion realizadas en el archivo
If modificado Then
rpta = MsgBox("desea guardar los cambios en el documento?", vbYesNo, "MINI EDITOR")
If rpta = vbYes Then
Call guardar
End If
End If
'si ocurre un errorejecutar manipularerrorabrir
'On Error GoTo manipularErrorAbrir
'muestra un mensaje en el primer panel de la barra de estado
StatusBar1.Panels(1).Text = "abriendo archivo"
'fijar las propiedades necesarias
With cuadrodedialogo
'genera un error cuando pulse cancelar en el cuadro de dialogo abrir
.CancelError = True
'filtros
.Filter = "archivo de texto|*.txt|todos los archivos|*.*"
'filtro por defecto
.FilterIndex = 2
'extencion por defecto que se añadira al nombre del archivo
.DefaultExt = "txt"
'el usuario solo podra introducir nombres de archivos existentes
.Flags = cdlOFNFileMustExist
'visualizara el cuadro de dialogo abrir
.ShowOpen
'obtener un numero de canal libre
ncanal = FreeFile
Open .FileName For Input As ncanal
'nuestra el nombre del archivo en la barra de titulo del formulaio
Form1.Caption = .FileName
End With
'borra el texto del control text1
Text1.Text = ""
Input #ncanal, cadena1, cadena2, numero1, estado1, estado2, estado3, numero2
With Text1
.Text = cadena1
.FontName = cadena2
.FontSize = numero1
.FontBold = estado1
.FontItalic = estado2
.FontUnderline = estado3
.FontStrikethru = numero2
End With
Close #ncanal 'cierra el archivo
'borra el mensaje del primer panel de la barra de estado
StatusBar1.Panels(1).Text = ""
modificado = False 'desactiva el indicador de modificado
Exit Sub
manipularErrorAbrir:
If Err.Number = 32755 Then
StatusBar1.Panels(1).Text = ""
Exit Sub
Else
MsgBox "error desconocido al abrir el archivo"
End If
End Sub
Public Sub guardar()
'procedimiento para guardar un archivo de texto
On Error GoTo manipularerrorguardar
StatusBar1.Panels(1).Text = "guardando archivo"
With cuadrodedialogo
.CancelError = True
.DefaultExt = "txt"
.Filter = "texto|*.txt|todos los archivos|*.*"
'muestra un mensaje si desea sobreescribir el archivo
.Flags = cdlOFNOverwritePrompt
'muestr el cuadro de dialogo
.ShowSave
ncanal = FreeFile
Open .FileName For Output As ncanal
Form1.Caption = .FileName
End With
'escribir en el archivo los datos necesarios
With Text1
Write #ncanal, .Text, .FontName, .FontStrikethru, .ForeColor
End With
Close #ncanal
StatusBar1.Panels(1).Text = ""
modificado = False
Exit Sub
manipularerrorguardar:
If Err.Number = 32755 Then
StatusBar1.Panels(1).Text = ""
Exit Sub
Else
MsgBox "error desconocido al guardar el archivo"
End If
End Sub
Public Sub imprimir()
'procedimiento pra imprimir el aspecto actual del formulario
Dim copias As Byte
On Error GoTo manipularerrorimprimir
StatusBar1.Panels(1).Text = "imprimiendo archivo"
With cuadrodedialogo
.CancelError = True
.Flags = cdlPDNoSelection Or cdlPDNoPageNums Or cdlPDHidePrintToFile
.PrinterDefault = True
'muestra el cuadro de dialogo imprimir
.ShowPrinter
copias = .Copies
End With
'fijar el numero de copias
Printer.Copies = copias
'tomar el estilo del texto
Printer.Font = Text1.Font
'imprimir el texto actual
Printer.Print Text1.Text
Printer.EndDoc 'fin de la impresion
StatusBar1.Panels(1).Text = ""
Exit Sub
manipularerrorimprimir:
If Err.Number = 32755 Then
StatusBar1.Panels(1).Text = ""
Exit Sub
Else
MsgBox "error desconocido"
End If
End Sub
Public Sub copiar()
'una copia de texto seleccionado en el cuadro de texto
'text1 pasa al portapapeles (clipboard)
Clipboard.SetText Text1.SelText
'activa la opcion pegar de la barra de herramientas
Toolbar1.Buttons(7).Enabled = True
End Sub
Public Sub cortar()
'una copia de textoselecionado ene le cuadro de texto
'text1 pasa al portapapeles (clipborad)
Clipboard.SetText Text1.SelText
'borrar el texto seleccionado
Text1.SelText = ""
'inahabilita la opcion copiar del manu edicion
edicion_copiar.Enabled = False
'inhabilita la opcion cortar del nemu edicion
edicion_cortar.Enabled = False
'habilita la opcion pegar del menu edicion
edicion_pegar.Enabled = True
'inhabilita la opcion fuente del menu formato
formato_fuente.Enabled = False
'inhabilita el boton copiar de la barra de herramientas
Toolbar1.Buttons(5).Enabled = False
'inhabilita el boton cortar de la barra de herraamientas
Toolbar1.Buttons(6).Enabled = False
'inhabilita el boton pegar de la barra de herramientas
Toolbar1.Buttons(7).Enabled = True
End Sub
Public Sub pegar()
'trasfiere el texto desde el portapapeles hacia el cuadro de texto text1
Text1.SelText = Clipboard.GetText()
End Sub
Public Sub fuente()
'procedimiento que modifica el estilo del texto
On Error GoTo manipularerrorfuente
StatusBar1.Panels(1).Text = "aplicando estilo"
With cuadrodedialogo
.CancelError = True
'fijar el estiloactual en el cuadro de dialogo
.FontName = Text1.FontName
.FontSize = Text1.FontSize
.FontBold = Text1.FontBold
.FontItalic = Text1.FontItalic
.FontUnderline = Text1.FontUnderline
.FontStrikethru = Text1.FontStrikethru
.Color = Text1.ForeColor
.Flags = cdlCFBoth Or cdlCFEffects
'muestra el cuadro de dialogo fuente
.ShowFont
'aplicar al cuadro de texto text1 el estilo elegido
Text1.FontName = .FontName
Text1.FontSize = .FontSize
Text1.FontBold = .FontBold
Text1.FontItalic = .FontItalic
Text1.FontUnderline = .FontUnderline
Text1.FontStrikethru = .FontStrikethru
Text1.ForeColor = .Color
End With
StatusBar1.Panels(1).Text = ""
Exit Sub
manipularerrorfuente:
If Err.Number = 32755 Then
StatusBar1.Panels(1).Text = ""
Exit Sub
Else
MsgBox "error desconociodo"
End If
End Sub
Private Sub text1_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)
If Button = 2 Then
Text1.Enabled = False
Text1.Enabled = True
PopupMenu mnuedicion
Text1.Enabled = True
Text1.SetFocus
End If
End Sub
este es todo el codigo.
como les dije tambien les dejo los archivos en VB descargenselo esta comprimido en RAR y prueben los errores que da y ayudenme corregiendolo.
gracias. rr_dj | 
02-04-2006, 17:08:19
| | Gran Participación en el Foro | | Registrado: ene 2005 Ubicación: CF - Argentina Posts: 192
| | hola, reemplaza los siguientes sub Código: Public Sub abrir()
'procedimiento para abrir un archivo de texto
[b]Dim cadena1 As String, cadena2 As String
Dim numero1 As Long, numero2 As Long
Dim estado1 As Boolean, estado2 As Boolean, estado3 As Boolean, estado4 As Boolean[/b]
'guarda las modificacion realizadas en el archivo
If modificado Then
rpta = MsgBox("desea guardar los cambios en el documento?", vbYesNo, "MINI EDITOR")
If rpta = vbYes Then
Call guardar
End If
End If
'si ocurre un errorejecutar manipularerrorabrir
'On Error GoTo manipularErrorAbrir
'muestra un mensaje en el primer panel de la barra de estado
StatusBar1.Panels(1).Text = "abriendo archivo"
'fijar las propiedades necesarias
With cuadrodedialogo
'genera un error cuando pulse cancelar en el cuadro de dialogo abrir
.CancelError = True
'filtros
.Filter = "archivo de texto|*.txt|todos los archivos|*.*"
'filtro por defecto
.FilterIndex = 2
'extencion por defecto que se añadira al nombre del archivo
.DefaultExt = "txt"
'el usuario solo podra introducir nombres de archivos existentes
.Flags = cdlOFNFileMustExist
'visualizara el cuadro de dialogo abrir
.ShowOpen
'obtener un numero de canal libre
ncanal = FreeFile
Open .FileName For Input As ncanal
'nuestra el nombre del archivo en la barra de titulo del formulaio
Form1.Caption = .FileName
End With
'borra el texto del control text1
Text1.Text = ""
[b] Input #ncanal, cadena1, cadena2, numero1, estado1, estado2, estado3, estado4, numero2
With Text1
.Text = cadena1
.FontName = cadena2
.FontSize = numero1
.FontBold = estado1
.FontItalic = estado2
.FontUnderline = estado3
.FontStrikethru = estado4
.ForeColor = numero2
End With[/b]
Close #ncanal 'cierra el archivo
'borra el mensaje del primer panel de la barra de estado
StatusBar1.Panels(1).Text = ""
modificado = False 'desactiva el indicador de modificado
Exit Sub
manipularErrorAbrir:
If Err.Number = 32755 Then
StatusBar1.Panels(1).Text = ""
Exit Sub
Else
MsgBox "error desconocido al abrir el archivo"
End If
End Sub Código: Public Sub guardar()
'procedimiento para guardar un archivo de texto
On Error GoTo manipularerrorguardar
StatusBar1.Panels(1).Text = "guardando archivo"
With cuadrodedialogo
.CancelError = True
.DefaultExt = "txt"
.Filter = "texto|*.txt|todos los archivos|*.*"
'muestra un mensaje si desea sobreescribir el archivo
.Flags = cdlOFNOverwritePrompt
'muestr el cuadro de dialogo
.ShowSave
ncanal = FreeFile
Open .FileName For Output As ncanal
Form1.Caption = .FileName
End With
'escribir en el archivo los datos necesarios
With Text1
[b] Write #ncanal, .Text, .FontName, .FontSize, .FontBold, .FontItalic, .FontStrikethru, .FontUnderline, .ForeColor[/b]
End With
Close #ncanal
StatusBar1.Panels(1).Text = ""
modificado = False
Exit Sub
manipularerrorguardar:
If Err.Number = 32755 Then
StatusBar1.Panels(1).Text = ""
Exit Sub
Else
MsgBox "error desconocido al guardar el archivo"
End If
End Sub suerte | 
02-04-2006, 17:10:28
| | Gran Participación en el Foro | | Registrado: ene 2005 Ubicación: CF - Argentina Posts: 192
| | perdón quita los simbolos y los puse para marcar los cambios pero no funcionó | 
02-04-2006, 17:12:26
| | Gran Participación en el Foro | | Registrado: ene 2005 Ubicación: CF - Argentina Posts: 192
| | | 
03-04-2006, 15:32:00
| | Un Nuevo Amigo | | Registrado: mar 2006 Posts: 8
| | mano no entiendo reeemplazo todo el codigo que me das por el mio?
y que hay con y
explicame?
gracias | 
03-04-2006, 15:36:52
| | Un Nuevo Amigo | | Registrado: mar 2006 Posts: 8
| | este con y | 
03-04-2006, 16:09:13
| | Gran Participación en el Foro | | Registrado: ene 2005 Ubicación: CF - Argentina Posts: 192
| | lo que modifique a tu código fue lo siguiente:
en el procedimiento abrir:
1)
las variables estaban mal declaradas por que cuando los haces por ejemplo así:
Dim cadena1, cadena2 As String
cadena1 queda como variable variant
lo correcto es así:
Dim cadena1 As String, cadena2 As String
Dim numero1 As Long, numero2 As Long
Dim estado1 As Boolean, estado2 As Boolean, estado3 As Boolean, estado4 As Boolean
2)
en la linea siguiente faltó el estado4
Input #ncanal, cadena1, cadena2, numero1, estado1, estado2, estado3, numero2
lo correcto es:
Input #ncanal, cadena1, cadena2, numero1, estado1, estado2, estado3, estado4, numero2
3)
en esta parte le asignabas mal a .FontStrikethru = numero2 y faltaba el forecolor
With Text1
.Text = cadena1
.FontName = cadena2
.FontSize = numero1
.FontBold = estado1
.FontItalic = estado2
.FontUnderline = estado3
.FontStrikethru = numero2
End With
lo correcto es:
With Text1
.Text = cadena1
.FontName = cadena2
.FontSize = numero1
.FontBold = estado1
.FontItalic = estado2
.FontUnderline = estado3
.FontStrikethru = estado4
.ForeColor = numero2
End With
En el procedimiento guardar:
1)
falta pasar algunos parametros
Write #ncanal, .Text, .FontName, .FontStrikethru, .ForeColor
lo correcto es:
Write #ncanal, .Text, .FontName, .FontSize, .FontBold, .FontItalic, .FontStrikethru, .FontUnderline, .ForeColor
Espero haber ayudado y olvidate de los simbolos fué un error mío al escribir en la página porque cuando uno escribe en formato codigo las etiquetas de negrita no sirven.
Arregla los puntos que te marque y la aplicación debe funcionar. | 
04-04-2006, 20:36:53
| | Un Nuevo Amigo | | Registrado: mar 2006 Posts: 8
| | gracias por responder a mi pregunta .
rr_dj | 
07-04-2006, 16:13:32
| | Un Nuevo Amigo | | Registrado: mar 2006 Posts: 8
| | holas foro de nuevo sobre el posque puese anteriormente me dan un error cuando le doy en abrir se abre el cuadro de dialogo abrir y deseo cancelarlo y me da un error no se cual sea pues le he dado al cuadro de dialogo en su propiedad cancelerror=true en el siguiente codigo revisenlo.
una cosa mas digamos he abierto un archivo existente que guarde anteriormente lo abro hago modificaciones y cierro el formulario quiero que me salga un mensaje de desea guardar los cambios le doy en si y quiero que lo guarde. pero que no me abra en cuadro de dialogo guardar si no que lo guarde en el archivo que abri defrente sin abrir el cuadro de dialogo.
otro es que paradar formato a texto seleccionado se le asigne color tamaño tipode letra subrrayado, etc pero solo al texto selexxionado y no a todo al textbox como lo esta haciendo yo eso seria todo gracias antemano por todo.
gracias
rr_dj | 
07-04-2006, 18:25:11
|  | Administrator | | Registrado: dic 2002 Ubicación: BURGOS - ESPAÑA Posts: 5.404
| | Debes depurar tu código y darle salida a los puntos en que te produzca error. Por ejemplo, en Abrir Código: If modificado Then
rpta = MsgBox("desea guardar los cambios en el documento?", vbYesNo, "MINI EDITOR")
If rpta = vbYes Then
Call guardar
' Como puedes observar, si le dices que No quieres guardar los cambios... ¿Qué hace? Sigue leyendo !!!
' Tienes que añadir estas líneas
Else
Exit Sub
End If
End If | | Herramientas | | | | Desplegado | Mode Lineal |
Normas de Publicación
| no Puedes crear nuevos temas no Puedes responder a temas no Puedes adjuntar archivos no Puedes editar tus mensajes Código [IMG] está habilitado Código HTML está deshabilitado | | |
Temas Similares | | Tema | Autor | Foro | Respuestas | Último Mensaje | | Falta Algo | Insomnia17 | VBA (Excel, Word, Outlook, Access) | 11 | 03-01-2005 16:05:22 | | Algo raro... | zambito | Crystal Reports | 1 | 17-09-2004 01:00:00 | | ALGO DE ASP???? | SNKEYES | Visual Basic.NET 2003 & 2005 | 0 | 17-09-2004 01:00:00 | | DataGrid y algo más. | PrimerosPasos | Visual Basic.NET 2003 & 2005 | 0 | 17-09-2004 01:00:00 | | algo basico | fede_17 | Visual Basic 6.00 | 12 | 16-03-1970 08:36:00 | La franja horaria es GMT. Ahora son las 22:54:22.
Powered by vBulletin® Version 3.6.8 Copyright ©2000 - 2008, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO 3.1.0
A vBSkinworks Design
|  |