Como Usar Sorted=true En Un Tableview?
Artículo |
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.
última edición por v3ctor el Domingo, 02 Octobre 2016, 19:15; editado 2 veces
|
v3ctor [ Domingo, 02 Octobre 2016, 17:04 ]
|
|
Como Usar Sorted=true En Un Tableview?
Comentarios |
Re: Como Usar Short=true En Un Tableview?
|
Short=true En Un Tableview
la idea es aprender como usar short
short... o Sorted ?
|
vuott [ Domingo, 02 Octobre 2016, 17:49 ]
|
|
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
|
shordi [ Domingo, 02 Octobre 2016, 18:32 ]
|
|
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
|
v3ctor [ Domingo, 02 Octobre 2016, 18:48 ]
|
|
Re: Como Usar Short=true En Un Tableview?
|
short... o Sorted ?
perdón es Sorted
|
v3ctor [ Domingo, 02 Octobre 2016, 18:54 ]
|
|
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
|
Shell [ Lunes, 03 Octobre 2016, 12:40 ]
|
|
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
|
vuott [ Lunes, 03 Octobre 2016, 13:04 ]
|
|
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 |
|
Shell [ Lunes, 03 Octobre 2016, 13:25 ]
|
|
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
última edición por Shell el Lunes, 03 Octobre 2016, 13:40; editado 1 vez
|
Shell [ Lunes, 03 Octobre 2016, 13:39 ]
|
|
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...
|
shordi [ Lunes, 03 Octobre 2016, 17:58 ]
|
|
|
|
Página 1 de 2
|
Usuarios navegando en este tema: 0 registrados, 0 ocultos y 1 invitado Usuarios registrados conectados: Ninguno
|
|
|