Como Usar Sorted=true En Un Tableview?


Goto page 1, 2  Next

Subject: 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:

palabrasx

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.

Last edited by v3ctor on Sunday, 02 October 2016, 19:15; edited 2 times in total
Subject: Re: Como Usar Short=true En Un Tableview?
v3ctor escribió: [Ver mensaje]
Short=true En Un Tableview

la idea es aprender como usar short


short... o Sorted ?

sorted

Profile PM  
Subject: 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

Profile PM  
Subject: Re: Como Usar Short=true En Un Tableview?
shordi escribió: [Ver mensaje]
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

Subject: Re: Como Usar Short=true En Un Tableview?
vuott escribió: [Ver mensaje]


short... o Sorted ?



perdón es Sorted

Subject: 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

Subject: Re: Como Usar Sorted=true En Un Tableview?
Shell escribió: [Ver mensaje]
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

Profile PM  
Subject: 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.

sinordenar

Ordenando por ejemplo por letras en orden descendente queda así:

ordenadoporlaprimeracolumna

Os subo el ejemplo.

Saludos


OrdenarTableView.tar.gz
Description:  
Download
Filename: OrdenarTableView.tar.gz
Filesize: 13.17 KB
Downloaded: 39 Time(s)
OrdenarTableView.tar.gz
Description:  
Download
Filename: OrdenarTableView.tar.gz
Filesize: 13.17 KB
Downloaded: 39 Time(s)
OrdenarTableView.tar.gz
Description:  
Download
Filename: OrdenarTableView.tar.gz
Filesize: 13.17 KB
Downloaded: 39 Time(s)

Subject: 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

Last edited by Shell on Monday, 03 October 2016, 13:40; edited 1 time in total
Subject: 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...
libro-leopoldo-abadia-2014

Profile PM  
Goto page 1, 2  Next

Page 1 of 2


  
You cannot post new topics
You cannot reply to topics
You cannot edit your posts
You cannot delete your posts
You cannot vote in polls
You cannot attach files
You can download files
You cannot post calendar events

   

This is a "Lo-Fi" version of our main content. To view the full version with more information, formatting and images, please click here.

Powered by Icy Phoenix based on phpBB
Design by DiDiDaDo

Generation Time: 0.3262s (PHP: 40% SQL: 60%)
SQL queries: 26 - Debug Off - GZIP Enabled