alberto-moyano 26-05-2023, 20:35
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
Shordi 26-05-2023, 19:24
Con el tema de los controles en forma de dial, una vez que tengo hecho el comportamiento que quería, me dispongo a darle forma de control y creo la clase "Dial" que, para empezar tiene este código:

Código:
' Gambas class file

Export

Inherits UserControl

Public Const _Properties As String = "*"
Public Const _Group As String = "View"

Compilo para asegurar que no hay errores, miro el IDE a ver si aparece y ¡oh sorpresa! me encuentro con que el IDE me ha regalado un precioso icono que no está ni en el Stock:
[Imagen: PYD1rG0.png]

¿De dónde demonios sale? Huh Huh Confused Confused

Saludos
Shell 25-05-2023, 22:25
Buenas!.

No sé si conocen la clase Style, pues con esta se crea el dibujo del checkbox.  Y más.

Style:

This class is a set of properties that return informations about the current widget style.

Clase Style

En el foro GambasOne, encontré la solución y mejoré un poco el código de BruceSteers. How to add checkbox or switch button column to tableview.
Mostrando el ejemplo esto. Lo utilicé para el traductor de los comentarios.

[Imagen: 9giMP8o.png]

Y este es el código:

Código:
Private pOff As New Picture(24, 24)
Private pOn As New Picture(24, 24)

Public Sub Form_Open()
 
  Me.Title = "CheckBox en TableView"
  Paint.Begin(pOff)
  Style.PaintCheck(0, 0, 24, 24, False)
  Paint.End
 
  Paint.Begin(pon)
  Style.PaintCheck(0, 0, 24, 24, True)
  Paint.End
 
  TableView1.Columns.Count = 1
  TableView1.Columns[0].Title = "Seleccionado"
  TableView1.Columns[0].Alignment = Align.Center
  TableView1.Header = GridView.Both
 
  For c As Integer = 0 To 5
    Inc TableView1.Rows.Count
    TableView1[TableView1.Rows.Max, 0].Picture = pOff
  Next
 
  TableView1.Columns[0].Width = -1
 
End

Public Sub TableView1_Click()
 
  If TableView1.Column = 0 Then    
    TableView1.Current.Picture = IIf(estaseleccionada(TableView1.Current), poff, pOn)
  Endif
 
End

Public Function estaseleccionada(celda As _GridView_Cell) As Boolean  
  Return IIf(celda.Picture = pOn, True, False)  
End

Public Sub btnContar_Click()

  For c As Integer = 0 To TableView1.Rows.Max
    If estaseleccionada(TableView1[c, 0]) Then Print "Fila " & Str(c + 1) & " seleccionada"
  Next

End

Comenten si lo desean sobre la clase Sytle. Toda información es poca.
No sabía que se le podía dar las dimensiones así a un objeto Picture.

Saludos
Archivos adjuntos
.gz
CheckBoxEnTableView-0.0.1.tar.gz (Tamaño: 12.26 KB Descargas: 1)
Páginas (564):    1 174 175 176 177 178 564   
Bienvenido, Invitado
Tienes que registrarte para poder participar en nuestro foro.
Recordarme?
Miembros: 292
Último miembro: DarkWolf
Temas del foro: 1,742
Mensajes del foro: 9,030
Últimos temas
Ordenar en un TableView
Foro: General
Último mensaje por: guizans, Hace 11 horas
Respuestas: 4 - Vistas: 124
Odio a gb.Report
Foro: General
Último mensaje por: guizans, 02-11-2025, 13:36
Respuestas: 9 - Vistas: 1,570
Reportes de Gambas
Foro: Aplicaciones/Fragmentos de Código
Último mensaje por: Alberto59, 27-10-2025, 16:34
Respuestas: 2 - Vistas: 1,335
Ordenando las carpetas
Foro: Programación en otros lenguajes
Último mensaje por: tercoide, 22-10-2025, 15:57
Respuestas: 0 - Vistas: 116
Powered By MyBB, © 2002-2025 MyBB Group.
Made with by Curves UI.