EDITOR DE TEXTO

metano
24 de Mayo del 2006
Estoy haciendo un editor de texto y necesito alinear el texto que esta dentro de un JTextArea.(centrado,izquierda,derecha yjustificado),O CUAL COMPONENTE DEBO USAR.

UN SALUDO! GRACIAS

Yuri Lizama
24 de Mayo del 2006
EDITOR DE TEXTO TIPO NOTEPAD POR Y.L.

Hola los que saben o al menos intentan programar en Visual Basic(para Uds va este tutorial, porque yo empec茅 as铆, en 0). En esta ocasi贸n les explicar茅 como crear un editor de texto simple, para no hacer esto aburrido vamos a los hechos, Solo lean bien el contenido ya que ah铆 explico para es cada cosa, Bien a Trabajar:


Primero creamos un Formulario, p贸ngale el nombre que deseen en este caso lo llamare EditorY en el ponemos un TextBox(en sus propiedades ponle multiLine = True y ScrollBars = 3 - Both), y un Men煤 con sus respectivos Submenus de esta forma:

Caption = &Nuevo
Name = mnuNew
------------------------

Caption = &Abrir
Name = mnuOpen
------------------------
Caption = &Guardar
Name = mnuSave
------------------------
Caption = Guar&dar Como...
Name = mnuSaveAs
------------------------
Caption = Imprimir
Name = mnuPrint
------------------------

Caption = &Salir
Name = mnuExit
------------------------
Caption = &Copiar
Name = mnuCopy
------------------------
Caption = C&ortar
Name = mnuCut
------------------------
Caption = Pegar
Name = mnuPaste
------------------------
Caption = Seleccionar Todo
Name = mnuSelectAll
------------------------
Caption = Eliminar
Name = mnuDelete
------------------------
Caption = Fuente
Name = mnuFont

Y me olvida un componente vayan al men煤 Proyecto->Componentes y seleccionen Microsoft Common Dialog control 6.0 (SP3) y en Proyecto-> Referencias seleccionamos Microsoft Word 9.0 Object Library

Ahora que si quieres crear tu propio CommonDilog te explico al final de explicar como se hace un editor de texto parecido a notepad.


Aclaro que pueden poner el nombre que quieran al menu y sus submenus pero aseg煤rense de colocar cada codigo en su respectivos menus. Estos nombres son los que yo estoy utilizando para este ejm.
Ahora vamos al formulario EditorY

Codigo en el EditorY:

Option Explicit

Private Modificado As Boolean 聭verifica si el texto se modifica o no como verdadero o falso

聭FUNCION PUBLICA PARA PASAR EL CONTENIDO DE UN TEXTBOX WORD
Public Sub AbrirWord_Click()
'Pasar el contenido del TextBox a Microsoft Word, para ello decimos que el documento de la aplicaci贸n de word contendra lo escrito en nuestro textBox
Dim MSWord As New Word.Application
Dim Documento As Word.Document
Dim Parrafo As Paragraph


Set Documento = MSWord.Documents.Add
Set Parrafo = Documento.Paragraphs.Add

Parrafo.Range.InsertAfter Text1.Text

MSWord.Visible = True
End Sub

Private Sub Form_Load()
Dim i As Long, tamFic As Long

'Llamamos a Crear Asociacion pasandole la ruta de nuestro Exe, _
luego la extenci贸n a registrar, una descripci贸n , y el 煤ltimo es el _
path opcional para asociar la extenci贸n con un icono, que debe estar _
en una dll o ser谩 un icono personalizado en este ejm. 聯Miicono.ico聰 y la extensi贸n 聯.yal聰.

CrearAsociacion App.Path & "" & App.EXEName, "yal", "Mi Documento Yal", "iconosmiicono.ico" 聭App.Path (es la ruta del .exe ejm. C:Mi exe) y(&) y(&) App.EXEName (es el nombre del .exe ejm. EditorY.exe) lo que nos quedaria la ruta C:Mi exeEditorY.exe, tan facil como eso (para los que recien se inician en la programaci贸n de VB6).

'Ahora recibimos el valor de la linea de comandos, si es distinta de un a cadena vacia osea a nada entonces
'Leemos el archivo con el m茅todo FreeFile del TextBox, pasandole la ruta, al Command$ es la ruta del documento que contenga la extensi贸n .yal o cualquier extensi贸n que quieran registrar.
If Command$ <> "" Then
i = FreeFile 聭Utilizamos el freeFile para abrir el Texto cuando hagamos doble click en el documento.yal
Open Command$ For Input As I 聭abrimos la ruta del Command$ en donde sea que este en Mis documento en C: o en donde este.
tamFic = LOF(i) 聭le decimos que el textbox abra el documento con la ruta command& utilizando el FreeFile
Text1.Text = Input$(tamFic, i)
Close i 聭cerramos i
Caption = Command$ & " 聳 Mi Editor" 聭colocamos l nombre del documento en el caption del Formulario
Modificado = False 聭le decimos al textBox que no se modifique cuando abrimos el documento
CommonDialog.FileName = Command$ 聭le decimos al commonDialog que la ruta del archivo es igual a la ruta de Command$, esto para que cuando modifiques el documento lo siga guardando en el mismo y no se abra guardar como un documento que no existe.
Else
VerNuevoDoc 'Llamada a la operacion de nuevo documento en caso se abra el .exe sin utilizar un domento de extensi贸n .yal, para que entiendan abrir EditorY.exe de forma normal y se coloque en el caption del formulario 聯Mi Documento 1 聳 Mi Editor聰
End If
End Sub

Private Sub Form_Unload(Cancel As Integer) 聭Esta parte indica que al cerrar el formulario se preguntara si desea guardar los cambios si es que el texto se ha modificado o no
mnuExit_Click 聭 Para ello nos vamos al men煤 salir donde se encuentra el c贸digo de salida
End Sub

Public Sub imprimeLineas(Texto As Object, Linea As Integer)
聭Funcion para imprimir el texto del editor
On Error GoTo NoImprimir 聭el On Error nos sirve para enviar cualquier error que suceda al ejecutar el comando a una determinada funci贸n en este caso NoImprimir (puede ser cualquier nombre que deseen pero recuerden poner ese nombre al final de declarar toda la funci贸n en nuestro ejm NoImprimir:) <- no es una carita feliz es el fin de la funci贸n, NoImprimir:
Dim i As Long
Dim Bloque As String
'Numero de caracteres = NumC
'Numero de Bloques = NumB
Dim NumC, NumB As Integer
NumC = Len(Texto.Text) 聭Numero de caracteres igual ala longitud del texto
If NumC > Linea Then
NumB = NumC Linea
For i = 0 To NumB 聭 Para no complicarnos decimos que imprimimos de 0 lineas hasta las lineas que exista para todo esto utilizamos un bucle, estudien bien cada codigo puesto aqu铆
Texto.SelStart = (Linea * i)
Texto.SelLength = Linea
Bloque = Texto.SelText
Printer.Print Bloque
Next i
Else
Printer.Print Texto.Text
End If
Printer.EndDoc
NoImprimir: 聭No imprime si sucede algun error
End Sub

Private Sub mnuAbrir_Click()
On Error GoTo NoAbrir 聭el On Error nos sirve para enviar cualquier error que suceda al ejecutar el comando a una determinada funci贸n en este caso NoAbrir (puede ser cualquier nombre que deseen pero recuerden poner ese nombre al final de declarar toda la funci贸n en nuestro ejm NoAbrir: y le podemos poner un mensaje el que queramos como lo veremos abajo)

Dim sFile As String
Dim i As Long, tamFic As Long

With CommonDialog 聭solo decimos que con(With) realizamos todas las funciones que contiene este componente.
.DialogTitle = "Abrir Documento..." 聭titulo del commondialod
.FileName = sFile 聭Nombre del Archivo, decimos que es igual a sFile, este para poder asignar la ruta al textBox
'Filter indicadores y atributos del control common dialog
.Filter = "Mi Documento YAL (*.yal; *.txt)|*.yal; *.txt|Todos los archivos(*.*)|*.*"
.ShowOpen 聭abrimos el commonDialog
If Len(.FileName) Then 聭 este punto ya lo explicamos en el Form_Load()
sFile = .FileName
i = FreeFile
Open sFile For Input As i
tamFic = LOF(i)
Text1.Text = Input$(tamFic, i)
Close i
End If
If Len(.FileName) = 0 Then 聭 en este punto decimos que si no hay ningun archivo el caption del formulario es igual al mismo nombre osea 聯Mi documento 1 o sea el numero de documento en que estemos o sea el nombre del ducumento que tengamos abierto en ese momento, esto es para evitar errores cuando pulsemos cancelar y no escojamos ningun documento y no se coloque ningun nombre en el caption del Formulario聰
Caption = Caption
Else 聭si abrimos un documento se asignara el nombre(.FileTitle) del documento que abramos
Caption = .FileTitle & " - Mi Editor"
End If
End With

Modificado = False 聭le decimos que el texto no se modifica cuando se abre
Exit Sub
NoAbrir: 聭si hay error al abrir mandamos el contenido a Microsoft word, porque a Microsoft word... para que sepan como pasar un documento de texto en VB6 a word.
If MsgBox (聯El texto es demasiado grande para abrirlo con Mi Editor...聰 &vbCrLf & _ 驴desea abrirlo con Microsoft Word?聰, vbQuestion + vbYesNo) = vbYes Then 聭Mensaje si hay error en abrir
AbrirWord 聭llamada a funci贸n para abrir word
End Sub
Private Sub mnuCopy_Click()
'Copiar Texto
Clipboard.Clear
Clipboard.SetText Text1.SelText
Text1.SetFocus
End Sub

Private Sub mnuCut_Click()
'Cortar Texto
Clipboard.SetText Text1.SelText
Text1.SelText = ""
Text1.SetFocus
End Sub

Private Sub mnuEliminar_Click()
'Eliminar Texto
Text1.SelText = ""
End Sub

Private Sub mnuExit_Click()
If Modificado Then 'verificar si el texto esta Modificado, fijate bien en esto cuando presionamos salir preguntamos si esta modificado y si(If) en el mensaje presionamos Aceptar (vbYes) entonces se presionar谩 guardar.
If MsgBox("El documento ha sido modificado..." & vbCrLf & _
"驴Desea Guardar el documento antes de salir del editor?", vbQuestion + vbYesNo) = vbYes Then
mnuSave_Click
End If
End If
End
End Sub

Private Sub mnuFont_Click()
CommonDialog.flags = cdlCFBoth Or cdlCFEffects
'observar el tipo de fuente que tendra nuestro textBox
CommonDialog.FontName = "Ms Sans Serif"
CommonDialog.ShowFont
If Err <> 32755 Then

Text1.Font = CommonDialog.FontName
Text1.ForeColor = CommonDialog.Color
Text1.FontItalic = CommonDialog.FontItalic
Text1.FontBold = CommonDialog.FontBold
'Aqu铆 indicamos que la fuente del textbox es igual a la fuente del commonDialog, asi como el color ect,ect,ect...
'como te dije en un comienzo estudia bien los codigos puestos aqu铆 ya que te los estoy explicando no es solo copiar y ya hay que saber porque va cada cosa por las....隆聮?@ no te estoy expklicando paso a paso todo ...Perd贸n pero es que me interesa que aprendan
End If
End Sub

Private Sub mnuNew_Click()
'Si el texto se ha modificado preguntar si se guarda o no
If Modificado Then 聭si el texto se ha modificado preguntar谩 si se guarda o no
If MsgBox("El documento ha sido modificado..." & vbCrLf & _
"驴Desea guardar el documento?", vbQuestion + vbYesNo) = vbYes Then 聭si sale el mensaje de guardar verificar si se presiona aceptar(vbYes) si es igual a este entonces presionamos mnuSave(Guardar). Si no simplemente se pierde la informaci贸n y generamos un nuevo documento ...como? lo veremos en un momento.
mnuSave_Click
End If
End If

'Abrir Documento en blanco
Text1.Text = "" 'Pone el texto en blanco, simplemente borra el contenido escrito en el.
VerNuevoDoc 聭Llama a la funcion que hace que aumente los numeros 1, 2, 3 etc. Recuerda que esto lo hace en el caption de Formulario.
Modificado = False 聭hace que el TextBox(Text1.Text) se vuelva a no modificado.
CommonDialog.FileName = "" 聭hace que el commondDialog no contenga ningun documento para que sea guardado como nuevo y no reemplace nuestro documento que habiamos trabajado anteriormente.
End Sub

Private Sub mnuPaste_Click()
'Pegar Texto
Text1.SelText = Clipboard.GetText()
Text1.SetFocus
End Sub

Private Sub mnuPrint_Click()
'Imprime X lineas, X es 60 en este ejmplo
imprimeLineas Text1, 60 聭Llamamos a la funcion imprime lineas
End Sub

Private Sub mnuSave_Click()
Dim sFile As String
Dim i As Integer

If Len(CommonDialog.FileName) = 0 Then 聭Aqu铆 decimos que si el commonDialog es igual a 0 osea que no contiene ningun achivo se abra el commonDialog con
mnuSaveAs_Click 聭el menu guardar como...
Else 聭y si hay un archivo abierto simplemente se omitira abrir guardar como y se guardara lo modificado el documento ya abierto con la funcion commonDialog.FileName
i = FreeFile
Open CommonDialog.FileName For Output As i
Print #i, Text1.Text
Close i
End If

mnuSave.Enabled = False 聭colocamos el menu guardar a Enabled = False
Modificado = False 聭le decimos al editor que como se guardo no hay nada que quede modificado hasta que se vuelva a escribir en el.
End Sub

Private Sub mnuSaveAs_Click()
On Error GoTo NoGuardar 聭lo mismo explicado anteriormente que si hay error no guarde
Dim sFile As String
Dim i As Long

With CommonDialog 聭Esta funci贸n hace que el commondialog se abra siempre que queremos guardar un nuevo documento (est煤dienlo bien ya que parte de este codigo ha sido explicado anteriormente).
.DialogTitle = "Guardar Documento..."
.FileName = sFile
'establecer los indicadores y atributos del control common dialog en Filter
.Filter = "Mi Documento YAL (*.yal)|*.yal|Documento de texto (*.txt; *.wri)|*.txt; *.wri|Todos los archivos (*.*)|*.*"
.ShowSave 聭abre el commonDialog para guaradra documento.
If Len(.FileName) Then 聭recuerda que .FileName es la ubicaci贸n del archivo ejm. C:Mis documentosmi documento.yal. Que .FileTitle es el nombre del documento ejm. Mi documento.yal, asi que lo que nos quiere decir esto es que si(If) la longitud(Len) es .fileName(C:Mis do......) entonces(then) se guarda el documento con el FreeFile en la ubicaci贸n del .FileName
sFile = .FileName
i = FreeFile
Open .FileName For Output As i
Print #i, Text1.Text
Close i
End If
If Len(.FileName) = 0 Then 聭Aqu铆 decimos que si se presiona cancelar y no se guarda el documento sigue conservando el nombre que tiene sea documento 1 o el nombre del documento con que se esta trabajando actualmente.
Caption = Caption
Else 聭 y si lo guardamos se colocara el nombre con que lo guardamos
Caption = .FileTitle & " - Mi Editor"
End If
End With
Modificado = False 聭 le decimos al textbox que ya no hay nada modificado
NoGuardar: 聭 si hay error se viene aqu铆
End Sub

Private Sub mnuSelect_Click()
'Seleccionar todo el texto
Text1.SetFocus
Text1.SelStart = 0
Text1.SelLength = Len(Text1.Text)
End Sub

Private Sub VerNuevoDoc()
'Esta funcion hace que el nombre del nuevo documento aumente progresivamente
'Ejm. documento 1, documento 2,3,4.... ect, ect, cada vez que se presione Nuevo Documento.
Static lDocumentCount As Long 聭se crea un valor estatico
lDocumentCount = lDocumentCount + 1 聭se indica que el valor estatico sea igual a este mas 1, en pocas palabras que aumente cada vez que sea llamado.
Caption = "Mi Documento " & lDocumentCount & " 聳 Mi Editor聰 聭Hacemos que el caption del formulario se escriba lo siguiente: Mi documento 1 聳 Mi Editor.
End Sub

Private Sub Text1_Change()
Modificado = True 聭Aqu铆 solo indicamos que si se modifica el texto Modificado cambia a verdadero
lblGuardar.Enabled = True 聭 hace que le quite el enabled al men煤 guardar
End Sub
EN UN MODULO .BAS COPIA LO SIGUIENTE y como te dije analiza lo que va aqu铆 no seas flojo... J

Option Explicit


'Funciones Api para leer, abrir, cerrar y escribir en el registro
Public Declare Function RegCloseKey Lib "advapi32.dll" (ByVal hKey As Long) As Long
Public Declare Function RegCreateKeyEx Lib "advapi32.dll" Alias "RegCreateKeyExA" (ByVal hKey As Long, ByVal lpSubKey As String, ByVal Reserved As Long, ByVal lpClass As String, ByVal dwOptions As Long, ByVal samDesired As Long, ByVal lpSecurityAttributes As Long, phkResult As Long, lpdwDisposition As Long) As Long
Public Declare Function RegOpenKeyEx Lib "advapi32.dll" Alias "RegOpenKeyExA" (ByVal hKey As Long, ByVal lpSubKey As String, ByVal ulOptions As Long, ByVal samDesired As Long, phkResult As Long) As Long
Public Declare Function RegSetValueExString Lib "advapi32.dll" Alias "RegSetValueExA" (ByVal hKey As Long, ByVal lpValueName As String, ByVal Reserved As Long, ByVal dwType As Long, ByVal lpValue As String, ByVal cbData As Long) As Long
Public Declare Function RegSetValueExLong Lib "advapi32.dll" Alias "RegSetValueExA" (ByVal hKey As Long, ByVal lpValueName As String, ByVal Reserved As Long, ByVal dwType As Long, lpValue As Long, ByVal cbData As Long) As Long

'Constantes varias para las funciones Api del registro
Public Const REG_SZ As Long = 1
Public Const REG_DWORD As Long = 4

Public Const HKEY_CURRENT_USER = &H80000001
Public Const HKEY_LOCAL_MACHINE = &H80000002
Public Const HKEY_USERS = &H80000003
Public Const ERROR_NONE = 0
Public Const ERROR_BADDB = 1
Public Const ERROR_BADKEY = 2
Public Const ERROR_CANTOPEN = 3
Public Const ERROR_CANTREAD = 4
Public Const ERROR_CANTWRITE = 5
Public Const ERROR_OUTOFMEMORY = 6
Public Const ERROR_INVALID_PARAMETER = 7
Public Const ERROR_ACCESS_DENIED = 8
Public Const ERROR_INVALID_PARAMETERS = 87
Public Const ERROR_NO_MORE_ITEMS = 259
Public Const KEY_ALL_ACCESS = &H3F
Public Const REG_OPTION_NON_VOLATILE = 0

Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal _
hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Long) As Long


Public Declare Function OSRegOpenKey Lib "advapi32" Alias "RegOpenKeyA" (ByVal hKey As Long, ByVal lpszSubKey As String, phkResult As Long) As Long
Global Const HKEY_CLASSES_ROOT = &H80000000
Public Const ERROR_SUCCESS = 0&

Private Declare Sub SHChangeNotify Lib "shell32.dll" _
(ByVal wEventId As Long, _
ByVal uFlags As Long, _
dwItem1 As Any, _
dwItem2 As Any)

Const SHCNE_ASSOCCHANGED = &H8000000
Const SHCNF_IDLIST = &H0&


Public Sub CrearAsociacion(RutadelExe As String, EXT As String, Descripci贸n As String, LibreriaIcono As String)
聭Aqu铆 decimos que RutadelExe es igual a donde estara ubicado nuestro .exe, EXT es la extensi贸n que utilizaremos y descripci贸n es la descripci贸n que va como identificador del documento ejemplo documento.yal su descripci贸n es Documento de YAL, y librer铆aIcono es el icono que tendra nuestro documento .yal
Dim sPath As String

sPath = App.Path & "" & "EditorY.exe" & " %1"

CreateNewKey "." & EXT, HKEY_CLASSES_ROOT
SetKeyValue "." & EXT, "", RutadelExe, REG_SZ

CreateNewKey RutadelExe & "shellopencommand", HKEY_CLASSES_ROOT
CreateNewKey RutadelExe & "DefaultIcon", HKEY_CLASSES_ROOT

SetKeyValue RutadelExe, "", Descripci贸n, REG_SZ
SetKeyValue RutadelExe & "shellopencommand", "", sPath, REG_SZ
SetKeyValue RutadelExe & "DefaultIcon", "", LibreriaIcono, REG_SZ
SHChangeNotify SHCNE_ASSOCCHANGED, SHCNF_IDLIST, 0, 0

End Sub

聭Ahora las funciones para el registro
Private Sub CreateNewKey(sNewKeyName As String, lPredefinedKey As Long)
'handle para la nueva clave
Dim hKey As Long
'retorno de la funci贸n RegCreateKeyEx
Dim r As Long
r = RegCreateKeyEx(lPredefinedKey, sNewKeyName, 0&, vbNullString, REG_OPTION_NON_VOLATILE, KEY_ALL_ACCESS, 0&, hKey, r)
Call RegCloseKey(hKey)
End Sub

Public Sub SetKeyValue(sKeyName As String, sValueName As String, vValueSetting As Variant, lValueType As Long)
'retorno de funcion SetValueEx
Dim r As Long
'handle
Dim hKey As Long
'Abrimos la clave especifica
r = RegOpenKeyEx(HKEY_CLASSES_ROOT, sKeyName, 0, KEY_ALL_ACCESS, hKey)
r = SetValueEx(hKey, sValueName, lValueType, vValueSetting)
'cerramos la clave abierta pasandole el handle
Call RegCloseKey(hKey)
End Sub


Private Function SetValueEx(ByVal hKey As Long, sValueName As String, lType As Long, vValue As Variant) As Long
Dim nValue As Long, sValue As String

Select Case lType
'Valor de Cadena
Case REG_SZ
sValue = vValue & Chr$(0)
'Establecemos el valor en el registro
SetValueEx = RegSetValueExString(hKey, sValueName, 0&, lType, sValue, Len(sValue))
'Valor entero
Case REG_DWORD
nValue = vValue
'Establecer el valor en el registro
SetValueEx = RegSetValueExLong(hKey, sValueName, 0&, lType, nValue, 4)
End Select
End Function

Esto solo es adicional no coloquen dentro del codigo del formulario es solo si quieren crear un efecto con un Label, vamos al ejemplo, solo coloquen un Label que tenga el color blanco:

Private Sub Form_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
Label1.ForeColor = vbWhite 聭si pasamos el roton por el formulario el Label tendra el color Blanco y si lo ponemos encima del Label se pondra de Color Rojo.
End Sub

Private Sub Label1_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
Label1.ForeColor = vbRed
End Sub

Bueno como les dije en alguna parte de este tutorial les explicare como hacer un commond dialog, en un Modulo con nombre 聯MiDialogo.bas聰 pongan lo siguiente:

Private Type OPENFILENAME
lStructSize As Long
hwndOwner As Long
hInstance As Long
lpstrFilter As String
lpstrCustomFilter As String
nMaxCustFilter As Long
nFilterIndex As Long
lpstrFile As String
nMaxFile As Long
lpstrFileTitle As String
nMaxFileTitle As Long
lpstrInitialDir As String
lpstrTitle As String
flags As Long
nFileOffset As Integer
nFileExtension As Integer
lpstrDefExt As String
lCustData As Long
lpfnHook As Long
lpTemplateName As String
End Type

Private Declare Function GetOpenFileName Lib "comdlg32.dll" Alias "GetOpenFileNameA" (pOpenfilename As OPENFILENAME) As Long
Private Declare Function GetSaveFileName Lib "comdlg32.dll" Alias "GetSaveFileNameA" (pOpenfilename As OPENFILENAME) As Long
Dim OFName As OPENFILENAME

Public Function AbrirArchivo(f As Form, extenciones As String, titulo As String) As String
With OFName
.lStructSize = Len(OFName)
.hwndOwner = f.hWnd
.hInstance = App.hInstance
.lpstrFilter = extenciones
.lpstrFile = Space$(254)
.nMaxFile = 255
.lpstrFileTitle = Space$(254)
.nMaxFileTitle = 255
.lpstrInitialDir = "C:Mis documentos"
.lpstrTitle = titulo
.flags = 0

If GetOpenFileName(OFName) Then
AbrirArchivo = Trim$(OFName.lpstrFile)
Else
AbrirArchivo = ""
End If
End With
End Function

Public Function GuardarComo(f As Form, extenciones As String, titulo As String) As String
With OFName
.lStructSize = Len(OFName)
.hwndOwner = f.hWnd
.hInstance = App.hInstance
.lpstrFilter = extenciones
.lpstrFile = Space$(254)
.nMaxFile = 255
.lpstrFileTitle = Space$(254)
.nMaxFileTitle = 255
.lpstrInitialDir = "C:Mis documentos"
.lpstrTitle = titulo
.flags = 0
If GetSaveFileName(OFName) Then
GuardarComo = Trim$(.lpstrFile)
Else
GuardarComo = ""
End If
End With
End Function


Ahora en un formulario coloquen un TextBoxy un CommandButton:

Private Sub Command1_Click()
Dim NomArchivo As String, tipoArchivos As String

tipoArchivos = "Text Files (*.txt)" + Chr$(0) + "*.txt" + Chr$(0) + "All Files (*.*)" + Chr$(0) + "*.*" + Chr$(0)
NomArchivo = MiDialogo.AbrirArchivo(Me, tipoArchivos, "Selecciona un archivo") 聭Aqu铆 MiDialogo es el modulo donde estan las funciones, tipo de Archivo es el archivo seleccionado y 聯seleccionar un archivo es el nombre que tendra nuestro commonDialog como titulo mejor dicho el DialogTitle de VB6聰
If NomArchivo <> "" Then
Text1.Text = NomArchivo 聭 en el textbox aparecera la direccion abierta si desean abrir el contenido solo reemplacen el contenido del FreeFile del Texbox por este.
End If
聭SI QUIEREN GUARDAR SOLO REEMPLACEN MiDialogo.AbrirArchivo por MiDialogo.GuardarComo y ponerle como titulo guardarComo聟 o lo que quieran en 聯seleccionar archivo聰.
End Sub

Bueno muchachos esto es todo por hoy ojal谩 lo sepan aprovechar y si hay algo que no esta bien explicado pues me disculpara pero yo soy un AUTODIDACTA DE LA PROGRAMACI脫N VISUAL BASIC, pero empece como Uds. queriendo hacer programas y teniendo muchas veces frustaciones porque no encontraba todo lo que queria encontrar para hacer mis programas. Hay que dar gracias a muchas personas de buen coraz贸n que publican articulos con peque帽as ayudas para nosotros como el Guille, el guro y muchos mas de los cuales obtuve muchas peque帽as ayudas para aprender un poco cada dia aunque lastima que siempre no estaba todo lo que queria pero despu茅s de mucha b煤squeda al de programaci贸n se, No es que me queje de ellos al contrario dan mucha ayuda para aprender, pero como se que hay muchos de nosotros que quieren aprender todo y mucho mas as铆 que me tome el tiempito para explicar y aclarar todas las dudas al menos creo yo (si falta algo me lo hacen saber) de los que recien se inician en este mundo de la programaci贸n, en este caso la unica tarea para la casa es analizar el codigo explicado en este tutorial no hay como piar texto capitulo 10 NO NO todo esta aqu铆 que es la mejor forma de aprender analizando tu mismo para sirve cada cosa si no lo haces as铆 ponte una etiqueta en la frente soy uno del monton... un proximo capitulo, bueno adios y aqu铆 le dejo una imagen del editor que cre茅 que obviamente tiene mas funciones que las explicadas aqu铆 y es gratis para los 6 primeros que me soliciten el programa como cortecia para que los ayude en la edici贸n de programas ya que esta creado para eso.





Buena Suerte y Hasta Pronto
Puedes comunicarte a:
[email protected] | http://www.rgperu.dgrafico.net.ar M&M
[email protected]
(051-1-99481064) Yuri A. Lizama A
1997 聳 2003 聳2006 V.A.



rolextreme
24 de Mayo del 2006
Esto es Java