paskola 14-03-2024, 21:18
Hola, recién me suscribí a este foro para aprender más de Gambas. Empiezo por decir que programador no soy sino que hago tareas de sysadmin/dba pero no le temo a tomar un lenguaje de programación para automatizar tareas muy rutinarias. Con eso también quiero decir que mi código no va ser el más bonito. Hoy quiero compartir esta pequeña aplicación que hice para generar contraseñas, que en realidad es un frontend para el programa pwgen que pueden encontrar en cualquier distro de Linux. Como parte de mis actividades debo estar generando usuarios con distintos niveles de complejidad y a los que aveces es encesario no incluir ciertos carácteres. Probé muichas herramientas para esto y finalmente decidi crearme una pequeña app en Gambas que me genera un listado de contraseñas con las especificaciones que le defino. Es miuy sencilla, puede fallar y, debo admitir que es fea. Apreciaría todos sus comentarios, ya de hecho estoy haciendo cambios basado en ejemplos que pude encontrar en este foro lo que agradezco profundamente. 

Anexo va el proyecto en formato tar.gz y un pequeño screenshot de la aplicación. Por el momento mi distro es Archlinux con Plasma 6.

Gracias por su atención
Archivos adjuntos
.gz
Genpasswd-0.0.16.tar.gz (Tamaño: 9.54 KB Descargas: 4)
Shell 14-03-2024, 13:51
Buenos días!

Estoy realizando un ejemplo con un GridView que tengo "algunos" nombres de escritores, poetas con su fecha de nacimiento y la de fallecimiento.

Actualmente solo estoy ordenado la columna de las fechas donde hago click.
Pero me encuentro con el problema de que cuando uso el evento Data no me muestra los cambios si "uso" el array que contiene todo los datos.
Solo lo hace la primera vez.

El gridview si lo hace si lo hago directamente, cambiando su contenido en el evento Sort. ( En este caso ).
'Comentar una opción u otra, para ver las diferencias. Ahora mismo usa la modificación del contenido directamente del gridview.

Código fuente:

Código:
' Gambas class file

'Fecha MM/DD/YYYY

Private nombres As String[][] = [
  ["Federico García Lorca", "06/05/1898", "08/18/1936"],
  ["Miguel de Unamuno", "09/29/1863", "12/31/1936"],
  ["Rosalía de Castro", "02/23/1837", "07/15/1885"],
  ["José Martínez Ruiz", "06/08/1873", "03/02/1967"],
  ["Pío Baroja y Nessi", "12/28/1872", "10/30/1956"]]

Private titulos As String[] = ["Nombre del autor", "Fecha de nacimiento", "Fecha de fallecimiento"]

Public Sub Form_Open()

  With Me
    .Arrangement = Arrange.Vertical
    .Spacing = True
    .Margin = True
    .Title = "Ordenar por fechas"
  End With

  With grd
    .Expand = True
    .Mode = Select.Single
    .Sorted = True
  End With

  ConfigurarGrid()

End

Public Sub ConfigurarGrid()

  With grd
    .Font = Font["Noto Sans,False,10"]
    .Columns.Count = 3
    .Columns[0].Title = titulos[0]
    .Columns[0].Expand = True
    .Columns[1].Title = titulos[1]
    .Columns[1].Expand = True
    .Columns[1].Alignment = Align.Center
    .Columns[2].Title = titulos[2]
    .Columns[2].Expand = True
    .Columns[2].Alignment = Align.Center
    .Header = grd.Both
    .Rows.Count = nombres.Count
  End With

End

Public Sub btnSalir_Click()

  Me.Close

End

Public Sub grd_Data(Row As Integer, Column As Integer)

  'El array nombres se muestra en el grid

  grd[Row, Column].Text = nombres[Row][Column]

End

Public Sub grd_Sort()

  Dim afechas As New Date[]
  Dim asortfechas As New Date[]
  Dim avalores As New String[][] 'Contendrá todos los valores del gridview (más adelante)

  If grd.Columns.Sort > 0 Then
    'Si el contenido de la columna se parece a una fecha
    For nx As Integer = 0 To grd.Rows.Max
      afechas.Add(CDate(grd[nx, grd.Columns.Sort].Text))
    Next

    asortfechas = afechas.Copy()
    asortfechas.Sort(IIf(grd.Columns.Ascending, gb.Ascent, gb.Descent))

    For n As Integer = 0 To asortfechas.Max

      '¿ No se supone que estoy actualizando el array ?
      'Entonces,¿ por qué no cambia los valores en el gridview en el evento data ?.

      'grd.columns.sort, es por la columna que se ordena

      '1ª Opción
      'Modificar el array nombres.
      'nombres[n][grd.Columns.sort] = asortfechas[n]

      '2ª Opción. Mostrar directamente en el gridview el contenido del array asortfechas
      grd[n, grd.Columns.Sort].Text = asortfechas[n]

    Next

  Else
    'Si el contenido de la columna no se parece a una fecha lo mostramos en la consola por ahora
    For n As Integer = 0 To grd.Rows.Max
      Print grd[n, grd.Columns.Sort].Text
    Next
    Print
  Endif

  'Intento de refrescar el gridview para refrescar su contenido, en caso de usar la 1ª opción
  'grd.Refresh()

End

Y el código. Todavía tengo que mostrarlo todo junto, pero por ahora prefiero entender el motivo de que no funciona
si cambio el array de array nombres, que no se actualice luego en el evento data del gridview.

Algo que he visto raro, es que cuando muestro los nombres de los escritores en la consola, se añade dos saltos de línea al principio,
cuando lo hace por primera vez. Huh


Saludos
tercoide 14-03-2024, 00:19
Muchos saben que yo soy fanático de armar equipos de trabajo, probablemente la antítesis del programador solitario, así que aquí voy de nuevo:

que os parece hacer un programa en el que participemos TODOS los usuarios habituales del foro???????????????????

Si somos menos de 10, no vale.

1-Terco
2-...
Páginas (560):    1 95 96 97 98 99 560   
Bienvenido, Invitado
Tienes que registrarte para poder participar en nuestro foro.
Recordarme?
Miembros: 288
Último miembro: shoUsho
Temas del foro: 1,729
Mensajes del foro: 8,985
Últimos temas
Paren...WAIT !!!
Foro: Aplicaciones/Fragmentos de Código
Último mensaje por: guizans, 25-08-2025, 14:49
Respuestas: 3 - Vistas: 397
GambOS
Foro: General
Último mensaje por: guizans, 20-08-2025, 13:58
Respuestas: 0 - Vistas: 268
Gambas y Wayland
Foro: General
Último mensaje por: guizans, 20-08-2025, 13:56
Respuestas: 6 - Vistas: 542
Odio a gb.Report
Foro: General
Último mensaje por: guizans, 19-08-2025, 10:40
Respuestas: 8 - Vistas: 901
Powered By MyBB, © 2002-2025 MyBB Group.
Made with by Curves UI.