Hola colisteros, no encuentro que hago mal en el siguiente caso. Tengo un formulario (con un editor) que puedo instanciar tantas veces como lo necesite, la cuestión es que cuando quiero guardar cambios en cualquiera de los formularios abiertos, no lo obtengo y solo guarda los cambios en el primero, no entiendo si mi error es de lógica o de código, el código que desarrollé es el siguiente.
Gracias por cualquier comentario
Código:
[code]
Private formulariosAbiertos As New FormMAESTRO[]
Private activeForm As FormMAESTRO
' Evento GotFocus para cada formulario
Public Sub Form_GotFocus()
activeForm = Me
End
Public Sub menuSAVE_Click()
If activeForm = Null Then
Return
End If
If activeForm.Dialog.Path = "" Then
guardarComo(activeForm, True)
Else
File.Save(activeForm.Dialog.Path, activeForm.TextEditor.Text)
End If
End Sub
Public Sub menuSAVE_AS_Click()
guardarComo(True)
End
Public Sub guardarComo(formulario As FormMAESTRO, local As Boolean)
formulario.Dialog.Title = "Guardar como..."
formulario.Dialog.Filter = ["*.tex", "Archivos LaTeX", "*.adoc", "Archivos Asciidoc", "*.md", "Archivos Markdown"]
If formulario.Dialog.SaveFile() Then
' Proceso cancelado por el usuario
Return
Else
If formulario.Dialog.Path = "" Then
Message.Info("El archivo no tiene un nombre válido.")
Return
End If
If local Then
File.Save(formulario.Dialog.Path, formulario.TextEditor.Text)
' Actualizar el título del formulario con la nueva ubicación
formulario.Title = formulario.Dialog.Path
Else
' Otras acciones a resolver
Endif
Endif
End
[/code]
y el código que utilizo para abrir las diferentes instancias y guardarlas en una lista es
Código:
Public Sub menuABRIRarch_Click()
Abrir(True)
End
Public Sub Abrir(local As Boolean)
Dim cadena As String
Dialog.Title = "Escoger archivo"
Dialog.Filter = ["*.tex", "Archivos LaTeX", "*.adoc", "Archivos Asciidoc", "*.md", "Archivos Markdown"]
If Dialog.OpenFile() Then
' Proceso cancelado por el usuario
Return
Else
If Dialog.Path = "" Then
Message.Info("El archivo no tiene un nombre válido.")
Return
End If
If local Then
cadena = File.Load(Dialog.Path)
Dim newForm As New FormMAESTRO
newForm.TextEditor.Text = cadena
newForm.TextEditor.SetFocus
newForm.Show
newForm.Title = Dialog.Path
' Añadir el formulario a la matriz de formularios abiertos
formulariosAbiertos.Add(newForm)
Else
' Otras acciones según sea necesario
Endif
Endif
End