Borrado De Filas En Control TableView


Objetivo: Borrado De Filas En Control TableView
Hola a todos...

Para saber si una fila esta seleccionada uso:

TableView.Rows[Fila].Selected


Si quiero borrar una no hay problema...

TableView.Rows.Remove(Fila, 1)


Pero cuando quiero borrar todas las filas seleccionadas, no encuentro un método que me deuelva solo las filas seleccionadas para no tener que iterar en todas las filas del control.

En la documentación del control no veo algo al respecto: http://gambaswiki.org/wiki/comp/gb.form/tableview
y buscando en internet y este foro tampoco he encontrado algo al respecto.

¿alguna idea?

Gracias y saludos

S.O. Mint 17.1, Cinamon
gambas 3.1.1, gb.QT

Perfil MP  
Objetivo: Re: Borrado De Filas En Control TableView
Hola Mauricio.

Existe una propiedad que contiene las filas seleccionadas.
Tabla.Rows.Selections

Es un array de las filas seleccionadas. Así si tienes seleccionadas las filas 1 y 3. Los elementos del array que contienen Tabla.Rows.Selections serian:

Tabla.Rows.Selections[0] = 1
Tabla.Rows.Selections[1] = 3

Pero, veo un problema. ¿ Que pasa si eliminas una fila ?. Pues que el valor de las filas cambian por lo tanto el valor que contiene ese array es un fila menos.
Solo no debemos tocar el primero. Así que al borrar el primero.

El siguiente elemento:
Tabla.Rows.Selections[1] = 3

El valor de la fila pasa a uno menos.

Tabla.Rows.Selections[1] = 3 -1
Tabla.Rows.Selections[1] = 2

Hice este ejemplo, a ver si se puede mejorar, es funcional. Casi.

' gambas class file

Public Sub _new()

End

Public Sub Form_Open()

tblEjemplo = titulos(tblEjemplo)
LlenarTabla(tblEjemplo)

End

Public Function titulos(hTabla As TableView) As TableView

With hTabla
.Header = 3
.Columns.Count = 5
.Rows.Count = 5
.Columns.Resizable = True
.Columns[0].Title = "A"
.Columns[1].Title = "B"
.Columns[2].Title = "C"
.Columns[3].Title = "D"
.Columns[4].Title = "E"
End With
Return hTabla

End

Public Sub LlenarTabla(hTabla As TableView)

Dim columnas, filas As Integer

For columnas = 0 To hTabla.Columns.Count - 1
For filas = 0 To hTabla.Rows.Count - 1
hTabla[filas, columnas].Text = "F: " & filas & " " & "C: " & columnas
Next
Next

End

Public Sub btnEliminarFIlas_Click()

Dim fseleccionadas As New Integer[]
Dim x As Integer

If BorrarFilas(tblEjemplo) Then
If tblEjemplo.Rows.Selection.Count = 1 Then
tblEjemplo.Rows.Remove(tblEjemplo.Rows.Selection[0])
Else
For x = 0 To tblEjemplo.Rows.Selection.Max
If x = 0 Then
fseleccionadas.Add(tblEjemplo.Rows.Selection[x])
Else
fseleccionadas.Add(tblEjemplo.Rows.Selection[x] - 1)
Endif
Next
Endif

For x = 0 To fseleccionadas.Max
tblEjemplo.Rows.Remove(fseleccionadas[x])
Next

Endif

End

Public Sub BorrarFilas(hTabla As TableView) As Boolean

If hTabla.Rows.Selection.Count > 0 Then Return True

End


Aquí tienes el ejemplo para que lo pruebes. Como ves elimina cada fila seleccionada.

P.d ¿ La Linux Mint 17 No trae la gambas 3.5 ?.

Saludos

última edición por Shell el Sabado, 07 Febrero 2015, 11:29; editado 4 veces

TableViewEleminarVariasFIlas.tar.gz
Descripción:  
Descargar
Nombre del archivo: TableViewEleminarVariasFIlas.tar.gz
Tamaño: 5.78 KB
Descargado: 38 veces
TableViewEleminarVariasFIlas.tar.gz
Descripción:  
Descargar
Nombre del archivo: TableViewEleminarVariasFIlas.tar.gz
Tamaño: 5.78 KB
Descargado: 38 veces
TableViewEleminarVariasFIlas.tar.gz
Descripción:  
Descargar
Nombre del archivo: TableViewEleminarVariasFIlas.tar.gz
Tamaño: 5.78 KB
Descargado: 38 veces

Objetivo: Re: Borrado De Filas En Control TableView
Errores observados:

Primero y principal: Llega un momento que da Argumento invalido en:

For x = 0 To fseleccionadas.Max
tblEjemplo.Rows.Remove(fseleccionadas[x])
Next


Y lo más curioso, si elimino todas las filas,¿ cómo es que en tblEjemplo.Rows.Selection sigue existiendo el índice 0 con valor 0 ?.
He tenido que cambiar el procedimiento Borrar Filas:
Public Sub BorrarFilas(hTabla As TableView) As Boolean

If hTabla.Rows.Count <> 0 And hTabla.Rows.Selection.Count > 0 Then Return True

End


Otras observaciones:

- Si elimino una fila. ¿ Cómo es que se queda seleccionada una nueva fila si yo no la he seleccionado ? ( color )
- Seleccionamos todas las filas. Ahora selecciono una sola fila de las seleccionadas.:
¿ Cómo es que no se ha deseleccionado las anteriores y no queda solo una fila seleccionada ?.



Saludos

Objetivo: Re: Borrado De Filas En Control TableView
Hola Compañero...

Muchas gracias por tu respuesta...

En mi versión de gambas no veo esa propiedad y cuando la intento usar me da el error "simbolo desconocido", mismo mensaje cuando pruebo tu ejemplo. Desafortunadamente por ahora dependo totalmente de usar gambas 3.1, es algo grande el proyecto y la veces que he intentado migrar a la ultima versión me rompe muchas cosas... tantas que voy a aprovechar para reescribir el sistema en la ultima versión, en cuanto pueda...

Si, es posible instalar sin problemas la ultima versión de gambas en Mint, pero ahora que usaré la ultima versión ya podré trabajar en mi distribución de cabecerá que es ArchLinux...

Saludos y gracias de nuevo

Perfil MP  

Página 1 de 1


  
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

   

Está utilizando la versión (Lo-Fi). Para ver la versión completa del foro, haga clic aquí.

Powered by Icy Phoenix based on phpBB
Design by DiDiDaDo

Página generada en:: 0.4622s (PHP: -71% SQL: 171%)
Consultas SQL: 48 - Debug off - GZIP Activado