alberto-moyano   26-05-2023, 20:35
#1
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
Última modificación: 26-05-2023, 20:38 por alberto-moyano.
  
Usuarios navegando en este tema: 1 invitado(s)
Powered By MyBB, © 2002-2025 MyBB Group.
Made with by Curves UI.