|
Página 1 de 2
|
Como Usar Sorted=true En Un Tableview?
Autor |
Mensaje |
v3ctor
Analista Programador
Registrado: May 2013
Mensajes: 1786
Edad: 44 Ubicación: Uruguay
|
Como Usar Sorted=true En Un Tableview?
buenas,
la idea es aprender como usar sorted, y que al hacer clic en el encabezado de la tabla cuando la flecha cambie de dirección hacia arriba o abajo,
se ordenen los datos incluidos en la actual tabla.
ejemplo de datos a ordenar:
en la imagen de ejemplo tenemos el objetivo de ordenar por palabras de forma ascendente o descendente, y lo otra forma es por la otra columna que es la cantidad, de 0 a mayor o de mayor a 0
saludos y espero sus comentarios o ejemplos si es que hay alguno.
=================== Software libre, programación libre, vida libre es la Public function Libertad()as Invendible
Proyectos: VisorRV1960,Taller2015,Tanteador
https://sourceforge.net/u/v3ctor-full/profile/
Blog: http://novatocodegambas.blogspot.com.uy/
última edición por v3ctor el Domingo, 02 Octobre 2016, 19:15; editado 2 veces
|
#1 Domingo, 02 Octobre 2016, 17:04 |
|
|
vuott
Analista Programador
Registrado: Agosto 2013
Mensajes: 2086
Edad: 60 Ubicación:
|
Re: Como Usar Short=true En Un Tableview?
Short=true En Un Tableview
la idea es aprender como usar short
short... o Sorted ?
|
#2 Domingo, 02 Octobre 2016, 17:49 |
|
|
shordi
Analista Programador
Registrado: Septiembre 2009
Mensajes: 4982
Edad: 64 Ubicación: Albacete
|
Re: Como Usar Short=true En Un Tableview?
Depende de la fuente de datos que uses, si es una base de datos, con repetir la consulta estableciendo el orden, cláusula "order by", es suficiente. Si la fuente es un array, vale con utilizar la propiedad .sort que tienen los arrays en gambas.
Saludos
=================== No podemos regresar
|
#3 Domingo, 02 Octobre 2016, 18:32 |
|
|
v3ctor
Analista Programador
Registrado: May 2013
Mensajes: 1786
Edad: 44 Ubicación: Uruguay
|
Re: Como Usar Short=true En Un Tableview?
Depende de la fuente de datos que uses, si es una base de datos, con repetir la consulta estableciendo el orden, cláusula "order by", es suficiente. Si la fuente es un array, vale con utilizar la propiedad .sort que tienen los arrays en gambas.
Saludos
uso una colección
' gambas class file
' Public EsteTexto As String = "Y les dijo: Esto es lo que ha dicho Jehová: Mañana es el santo día de reposo*, el reposo consagrado a Jehová; lo que habéis de cocer, cocedlo hoy, y lo que habéis de cocinar, cocinadlo; y todo lo que os sobrare, guardadlo para mañana."
Public EsteTexto As String
Public Eliminando As String
' Public PalabraAhora As String
Public DerechaLimpia As Boolean
Public IzquierdaLimpia As Boolean
Public Diccionario As New String[][]
' Private LibroElegido As String
Public DicContador As New Collection
Public CaracteresProhibidos As String = "(.);,*:-¡!?¿ "
Public VocalesConTilde As String = "áéíóú"
Public Sub Form_Open()
ArmarTablaPalabras()
End
Private Sub ArmarTablaPalabras()
Dim c As Integer
With tvPalabras
.Clear
.Columns.Count = 2
.Columns[c].Title = ("Palabra")
.Columns[c].Width = 200
.Columns[c].Background = Color.White
Inc c
.Columns[c].Title = ("Cantidad")
.Columns[c].Width = 50
.Columns[c].Background = Color.White
.Columns[c].Alignment = Align.Center
End With
End
Public Sub ProcesarPalabraLimpia(palabraX As String)
Print palabraX
If IsNull(palabraX) Then Return
If DicContador.Exist(String.LCase(palabraX)) = False Then
DicContador.Add(1, String.LCase(palabraX))
Else
DicContador.Add(DicContador[String.LCase(palabraX)] + 1, String.LCase(palabraX))
Endif
End
'
Public Sub btnSalir_Click()
Me.Close
End
Public Sub btnEjecutar_Click()
Dim valor As String
Dim a As Integer
Inc Application.Busy
DicContador = New Collection
BuscarTextoElegido(subR1.ObtenerNombreTabla(cbxLibros.Current.Text))
Print "DicContador=" & DicContador.Count
tvPalabras.Rows.Count = DicContador.Count
For Each valor In DicContador
tvPalabras[a, 0].Text = DicContador.Key
tvPalabras[a, 1].Text = valor
Inc a
Next
Dec Application.Busy
End
Private Sub BuscarTextoElegido(tabla As String)
Dim ResultadoSql As Result
Dim TextoAcumulado As String
Dim sql As String
sql = Subst$("Select texto from '&1'", tabla)
ResultadoSql = FMain.Conexion.Exec(sql)
Do While ResultadoSql.Available
' Print ResultadoSql!texto
TextoAcumulado &= ResultadoSql!texto
ResultadoSql.MoveNext
Loop
EsteTexto = TextoAcumulado
Print EsteTexto
' Print SacarTitulos(EsteTexto)
SepararPalabras(SacarCaracteres(SacarParentesisRectos(EsteTexto), True))
End
Public Sub SacarTitulos(texto As String) As String
Dim Titulo As String
Dim inicio, final As Integer
' Print texto
Repeat
Print "inicio=" & InStr(texto, "- ")
Print "final=" & InStr(texto, " -")
inicio = InStr(texto, "- ")
final = InStr(texto, " -")
Titulo = Mid$(texto, inicio, (final - inicio) + 1)
Print "Titulo a cortar es=" & Titulo
texto = Replace$(texto, Titulo, " ")
' Print texto
Until InStr(texto, "[") = 0
Return texto
End
Public Sub SacarParentesisRectos(texto As String) As String
Dim palabraAcortar As String
Dim inicio, final As Integer
If InStr(texto, "[") = 0 Then Return texto
Repeat
Print "inicio=" & InStr(texto, "[")
Print "final=" & InStr(texto, "]")
inicio = InStr(texto, "[")
final = InStr(texto, "]")
palabraAcortar = Mid$(texto, inicio, (final - inicio) + 1)
Print "Palabra a cortar es=" & palabraAcortar
texto = Replace$(texto, palabraAcortar, " ")
' Print texto
Until InStr(texto, "[") = 0
Return texto
End
Public Sub SacarCaracteres(texto As String, contitulo As Boolean) As String
Dim NuevoTexto As String
If contitulo Then texto = Replace$(texto, "-", " ")
texto = Replace$(texto, ".", " ")
texto = Replace$(texto, ":", " ")
texto = Replace$(texto, ",", " ")
texto = Replace$(texto, ";", " ")
texto = Replace$(texto, "?", " ")
texto = Replace$(texto, "¿", " ")
texto = Replace$(texto, "!", " ")
texto = Replace$(texto, "¡", " ")
texto = Replace$(texto, "*", " ")
texto = Replace$(texto, "(", " ")
texto = Replace$(texto, ")", " ")
texto = Replace$(texto, gb.NewLine, " ")
' texto = Replace$(texto, "[", " ")
' texto = Replace$(texto, "]", " ")
NuevoTexto = texto
Return NuevoTexto
End
Public Sub SepararPalabras(texto As String) As String[]
Dim Palabras As String[]
Dim palabra As String
Palabras = Split(texto, " ", Null, True)
For Each palabra In Palabras
Print palabra
ProcesarPalabraLimpia(palabra)
Next
Return Palabras
End
Public Sub cbxDonde_Click()
Print cbxDonde.Index
If cbxDonde.Index = 3 Then
cbxLibros.Enabled = True
cbxLibros.List = subR1.ObtenerListaDeTodosLosLibros()
Else
cbxLibros.Enabled = False
cbxLibros.Clear()
Endif
End
este código pretende extraer de un texto x, ya sea de un libro, un versículo o todos los versículos de la base de datos, separar las palabras por los espacios, limpiar cada palabra de caracteres especiales (?¡-_:.,; etc) y contabilizar repeticiones y esos datos lo guarda en una colección.
después se muestra en un tableview
=================== Software libre, programación libre, vida libre es la Public function Libertad()as Invendible
Proyectos: VisorRV1960,Taller2015,Tanteador
https://sourceforge.net/u/v3ctor-full/profile/
Blog: http://novatocodegambas.blogspot.com.uy/
|
#4 Domingo, 02 Octobre 2016, 18:48 |
|
|
v3ctor
Analista Programador
Registrado: May 2013
Mensajes: 1786
Edad: 44 Ubicación: Uruguay
|
Re: Como Usar Short=true En Un Tableview?
short... o Sorted ?
perdón es Sorted
=================== Software libre, programación libre, vida libre es la Public function Libertad()as Invendible
Proyectos: VisorRV1960,Taller2015,Tanteador
https://sourceforge.net/u/v3ctor-full/profile/
Blog: http://novatocodegambas.blogspot.com.uy/
|
#5 Domingo, 02 Octobre 2016, 18:54 |
|
|
Shell
Analista Programador
Registrado: Marzo 2010
Mensajes: 5278
Edad: 53 Ubicación: Al otro lado de la pantalla
|
Re: Como Usar Sorted=true En Un Tableview?
v3ctor:
Creo que seria una buena idea reproducir el problema en un ejemplo más simple.
De esta forma se ve más rápidamente un error. A menos que estés mas interesando en un
problema concreto de tu código.
Hemos visto que hay controles "View" que carecen de la posibilidad de ordenar los datos.
Si, podemos ver sorted, pero parece trabajo que debe realizar el programador.
Dice TableView de la propiedad sorted:
Citar:
Sorting the data is not done automatically. It must be done by user code.
A pesar de todo, ahora Benoit ha añadido en la ayuda un código que hace esta función y la puedes usar
para ordenar.
Aunque se muestra para Gridview debe ser valido para TableView.
Propiedad Sorted en controles View
Supongo que Benoit tendrá alguna razón de no añadir esa posibilidad todavía. Esperara un código mejor.
Saludos
=================== Gambas Básico
"No es un bug, es una característica no documentada"
|
#6 Lunes, 03 Octobre 2016, 12:40 |
|
|
vuott
Analista Programador
Registrado: Agosto 2013
Mensajes: 2086
Edad: 60 Ubicación:
|
Re: Como Usar Sorted=true En Un Tableview?
pero parece trabajo que debe realizar el programador.
Dice TableView de la propiedad sorted:
Citar:
Sorting the data is not done automatically. It must be done by user code.
Señalo por analogia:
http://www.gambas-it.org/wiki/index..._di_una_colonna
http://www.gambas-it.org/wiki/index..._ad_una_colonna
|
#7 Lunes, 03 Octobre 2016, 13:04 |
|
|
Shell
Analista Programador
Registrado: Marzo 2010
Mensajes: 5278
Edad: 53 Ubicación: Al otro lado de la pantalla
|
Re: Como Usar Sorted=true En Un Tableview?
He creado un ejemplo "sencillo". No me he detenido a estudiar bien el código de la ayuda.
He creado este TableView. En este caso desordenado. Tengo dos columnas, una de letras
y la otra de números.
Ordenando por ejemplo por letras en orden descendente queda así:
Os subo el ejemplo.
Saludos
Descripción: |
|
Descargar |
Nombre del archivo: |
OrdenarTableView.tar.gz |
Tamaño: |
13.17 KB |
Descargado: |
39 veces |
Descripción: |
|
Descargar |
Nombre del archivo: |
OrdenarTableView.tar.gz |
Tamaño: |
13.17 KB |
Descargado: |
39 veces |
Descripción: |
|
Descargar |
Nombre del archivo: |
OrdenarTableView.tar.gz |
Tamaño: |
13.17 KB |
Descargado: |
39 veces |
=================== Gambas Básico
"No es un bug, es una característica no documentada"
|
#8 Lunes, 03 Octobre 2016, 13:25 |
|
|
Shell
Analista Programador
Registrado: Marzo 2010
Mensajes: 5278
Edad: 53 Ubicación: Al otro lado de la pantalla
|
Re: Como Usar Sorted=true En Un Tableview?
Como me acuerdo de la ultima "regañina" de Shordi.
No debemos usar números mágicos, gambas nos ofrece sus constantes.
Public Sub titulos()
With Tabla
.Columns.Count = 2
.Rows.Count = 0
'.Header = 3
.Header = .Both
.Columns[0].Title = "Campo1"
.Columns[0].Width = 150
.Columns[1].Title = "Campo2"
.Columns[1].Width = 150
End With
End
Lo que le asignamos a Tabla.Header es igual que Tabla.Both
Saludos
=================== Gambas Básico
"No es un bug, es una característica no documentada"
última edición por Shell el Lunes, 03 Octobre 2016, 13:40; editado 1 vez
|
#9 Lunes, 03 Octobre 2016, 13:39 |
|
|
shordi
Analista Programador
Registrado: Septiembre 2009
Mensajes: 4982
Edad: 64 Ubicación: Albacete
|
Re: Como Usar Sorted=true En Un Tableview?
Citar: Como me acuerdo de la ultima "regañina" de Shordi.
Creo que tengo que conseguir éste libro...
=================== No podemos regresar
|
#10 Lunes, 03 Octobre 2016, 17:58 |
|
|
|
Temas parecidos
Temas parecidos
|
Página 1 de 2
|
Usuarios navegando en este tema: 0 registrados, 0 ocultos y 1 invitado Usuarios registrados conectados: Ninguno
|
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
|
|
|
|
|