Portal    Foro    Buscar    FAQ    Registrarse    Conectarse


Publicar nuevo tema  Responder al tema 
Página 1 de 1
 
 
Ordenar El Contenido De Una Lista Antes De Mostrarla, O Que El Ojo No Lo Vea.
Autor Mensaje
Responder citando   Descargar mensaje  
Mensaje Ordenar El Contenido De Una Lista Antes De Mostrarla, O Que El Ojo No Lo Vea. 
 
Buenas!

Como estuve con listas dependientes en Calc, hice algo parecido en Gambas.
Pero me encontraba el problema de que no podía ordenar los datos mostrados en la lista.
Me daba problemas el método 2 de este ejemplo

Private Felinos As String[] = ["León", "Tigre", "Leopardo", "Geopardo"]
Private Serpientes As String[] = ["Pitón", "Boa", "Cascabel", "Anaconda", "Cobra"]
Private Aves As String[] = ["Paloma", "Halcón", "Águila"]
Private Tipos As Collection = ["Felinos": Felinos, "Serpientes": Serpientes, "Aves": Aves]

Public Sub Form_Open()
  
  Dim animales As String[]
  
  Me.Title = "Lista dependiente"
  'Llenar el combobox con las llaves de Tipos
  For Each animales In Tipos
    cmbTipos.Add(Tipos.Key)  
  Next
  
End

Public Sub cmbTipos_Click()
  
  Metodo2()  
  
End

Public Sub Metodo1()
  
  Dim unanimal As String  
  Dim listatemp As New String[]
  
  If cmbTipos.Text Then
    listatemp = Tipos[cmbTipos.Text]
    'Usamos la constante gb.natural para que ordene bien las palabras con tildes
    listatemp.Sort(gb.Natural)
    lstAnimales.Clear  
    
    For Each unanimal In listatemp
      lstAnimales.Add(unanimal)
    Next
    
  Endif  
  
End

Public Sub Metodo2()
  
  Dim unanimal As String  
  
  If cmbTipos.Text Then  
    lstAnimales.Clear        
    For Each unanimal In Tipos[cmbTipos.Text]
      lstAnimales.Add(unanimal)
    Next      
    lstAnimales.List.Sort(gb.Natural)
  Endif
  
End
 


Y tuve que dejar el método 2 de esta forma para que funcionase
Public Sub Metodo2()
  
  Dim unanimal As String  
  
  If cmbTipos.Text Then  
    lstAnimales.Clear        
    For Each unanimal In Tipos[cmbTipos.Text].Sort(gb.Natural)    
      lstAnimales.Add(unanimal)
    Next          
  Endif
  
End
 


¿ Cómo es que la primera forma del método 2 no puede ordenar la lista que contiene el listbox y presentarla ?.

Saludos
 




===================
Gambas Básico
"No es un bug, es una característica no documentada"
 
Shell - Ver perfil del usuarioEnviar mensaje privadoVisitar sitio web del usuario 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Ordenar El Contenido De Una Lista Antes De Mostrarla, O Que El Ojo No Lo Vea. 
 
Citar:

¿ Cómo es que la primera forma del método 2 no puede ordenar la lista que contiene el listbox y presentarla ?.


Si puede... pero no la muestra. Si añades un wait 0.01 después de ordenar la lista se mostrará.

Pero... ¿Qué problema tienes con la propiedad sorted del combobox? Con ella todo esto te sobra.

Aún así... ojo con el sort por muy gb.natural que le pongas. No siempre lo que ordena es correcto. Observa qué hace con los acentos, eñes y demás familia.

Saludos.
 




===================
No podemos regresar
 
shordi - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Ordenar El Contenido De Una Lista Antes De Mostrarla, O Que El Ojo No Lo Vea. 
 
Pruebe este código

Felinos As String[] = ["León", "Tigre", "Leopardo", "Geopardo"].Sort(gb.natural)
Serpientes As String[] = ["Pitón", "Boa", "Cascabel", "Anaconda", "Cobra"].Sort(gb.natural)
Aves As String[] = ["Paloma", "Halcón", "Águila"].Sort(gb.natural)
sList As String[] = ["Felinos", "Serpientes", "Aves"].Sort(gb.natural)
Tipos As Collection = ["Felinos": Felinos, "Serpientes": Serpientes, "Aves": Aves]

Public Sub Form_Open()

  Me.Title = "Lista dependiente"
  cmbTipos.List = sList

End

Public Sub cmbTipos_Click()

  lstAnimales.List = Tipos[cmbTipos.Text]

End

 



 
cogier - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Ordenar El Contenido De Una Lista Antes De Mostrarla, O Que El Ojo No Lo Vea. 
 
Shell, lstAnimales es un listbox ? si es así yo trabajaba siempre los datos en un string[] lo ordenaba o lo que fuere y luego hacia que lstAnimales.List sea igual a string[]

Saludos.
 



 
tincho - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Ordenar El Contenido De Una Lista Antes De Mostrarla, O Que El Ojo No Lo Vea. 
 
Shordi:

Citar:

Si puede... pero no la muestra. Si añades un wait 0.01 después de ordenar la lista se mostrará.


No se me había ocurrido eso.  

Citar:

Pero... ¿Qué problema tienes con la propiedad sorted del combobox? Con ella todo esto te sobra.


Puedo añadir en el main del formulario la propiedad sorted=True, que no recordaba eso.
Pero me encuentro el problema cuando ordena palabras con tildes.

Citar:

Aún así... ojo con el sort por muy gb.natural que le pongas. No siempre lo que ordena es correcto. Observa qué hace con los acentos, eñes y demás familia.


¿ Ordenarías de otra forma cuando se usan tildes o eñes ?.  

Cogier:

Quizás no es necesario ordenar los arrays individualmente.
Te va a parecer raro, pero esto funciona.

Public Sub cmbTipos_Click()
  
  lstAnimales.List = Tipos[cmbTipos.Text].Sort(gb.Natural)
  
End
 


Tipos[cmbTipos.Text] devuelve un array, entonces se le podría aplicar ordenar.  

Tincho:

Citar:

Shell, lstAnimales es un listbox ? si es así yo trabajaba siempre los datos en un string[] lo ordenaba o lo que fuere y luego hacia que lstAnimales.List sea igual a string[]


Si. Eso seria una opción.

Os subo el ejemplo. Fijaros el orden de los felinos al seleccionarlo en el combobox y el de las aves.

 felinos

 aves

Saludos

ListasDependientes01.tar.gz
Descripción:  
Descargar
Nombre del archivo: ListasDependientes01.tar.gz
Tamaño: 12.99 KB
Descargado: 26 veces
ListasDependientes01.tar.gz
Descripción:  
Descargar
Nombre del archivo: ListasDependientes01.tar.gz
Tamaño: 12.99 KB
Descargado: 26 veces
ListasDependientes01.tar.gz
Descripción:  
Descargar
Nombre del archivo: ListasDependientes01.tar.gz
Tamaño: 12.99 KB
Descargado: 26 veces

 




===================
Gambas Básico
"No es un bug, es una característica no documentada"
 
última edición por Shell el Jueves, 24 Enero 2019, 01:33; editado 1 vez 
Shell - Ver perfil del usuarioEnviar mensaje privadoVisitar sitio web del usuario 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Ordenar El Contenido De Una Lista Antes De Mostrarla, O Que El Ojo No Lo Vea. 
 
A los que habéis bajado el ejemplo. ¿ Habéis visto el efecto que causa al cambiar el tamaño de la ventana del formulario manualmente ?.
Lo hace con el fondo que tengáis.

 efectoresizable_a_true

El arrangement del formulario está a Horizontal y la propiedad de Resizable esta a True.
De paso comentar que "también" que Autoresize está a True.

El efecto se elimina cambiando la propiedad Resizable a False que es como debe estar.
Si se ajusta automáticamente el formulario al contenido no se debería cambiar manualmente su tamaño.  

Saludos
 




===================
Gambas Básico
"No es un bug, es una característica no documentada"
 
Shell - Ver perfil del usuarioEnviar mensaje privadoVisitar sitio web del usuario 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Ordenar El Contenido De Una Lista Antes De Mostrarla, O Que El Ojo No Lo Vea. 
 
Shell escribió: [Ver mensaje]
A los que habéis bajado el ejemplo. ¿ Habéis visto el efecto que causa al cambiar el tamaño de la ventana del formulario manualmente ?

Todavía no probé el ejemplo, luego cuando lo haga comento.
Saludos.
 



 
tincho - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Mostrar mensajes anteriores:    
 
OcultarTemas parecidos
Tema Autor Foro Respuestas último mensaje
No hay nuevos mensajes Poner Valores Antes Del Textbox 2fast2good General 4 Lunes, 28 Junio 2010, 19:30 Ver último mensaje
2fast2good
No hay nuevos mensajes Pensando Antes De Codear... v3ctor General 0 Viernes, 12 Junio 2015, 19:54 Ver último mensaje
v3ctor
No hay nuevos mensajes Configurar Tamaño De Hoja Antes De Imprimir Ricardo Prieto General 9 Viernes, 11 Marzo 2016, 16:05 Ver último mensaje
Ricardo Prieto
No hay nuevos mensajes Antes De Compilar Completamente, DateChoos... gambafeliz Controles/Librerías/Componentes 17 Domingo, 01 Septiembre 2019, 13:35 Ver último mensaje
gambafeliz
 

Publicar nuevo tema  Responder al tema  Página 1 de 1
 

Usuarios navegando en este tema: 0 registrados, 0 ocultos y 1 invitado
Usuarios registrados conectados: Ninguno


 
Lista de permisos
No puede crear mensajes
No puede responder temas
No puede editar sus mensajes
No puede borrar sus mensajes
No puede votar en encuestas
No puede adjuntar archivos
Puede descargar archivos
No puede publicar eventos en el calendario



  

 

cron