Bugs y correcciones...

Componente Supergridviews: Mejoras
Nota:14 de Agosto de 2011
Añadido metodo .add, el cual añade una nueva fila con una serie de datos separados entre ellos por "|".


'---------------------------------------------------------
'añadir fila de datos, separados por el caracter "|"
'--------------------- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
PUBLIC SUB Add(cadena AS String)
DIM scad AS String[]
DIM a AS Integer
DIM introduce AS Integer
'separo datos
scad = Split(cadena, "|")
'añado una fila mas
ME.Rows.Count = ME.Rows.Count + 1

introduce = Min(scad.count, ME.columns.count)

FOR a = 0 TO introduce - 1
ME[ME.rows.count - 1, a].text = scad[a]
NEXT

ME.colorear()

END
 




Nota:18 de noviembre de 2010
Corregido el codigo fuente y el instalardor .db, del control gridviews, ya que al ordenar columnas numericas no lo hacia bien:
Este es el código cambiado:
‘ver método de ordenacion….
FOR i = 0 TO limite – 2
FOR j = i TO limite – 1
‘mejora version 1.01, comprobar si estamos comparando numeros o cadenas de letras
IF IsNull(Val(ME[j, a].Text)) = TRUE THEN
IF UCase$(ME[i, a].Text) <= UCase$(ME[j, a].Text) THEN
FOR col = 0 TO ME.Columns.Count – 1
cambio1 = ME[j, col].Text
ME[j, col].text = ME[i, col].Text
ME[i, col].text = cambio1
NEXT
ENDIF
ENDIF
‘se trata de un numero
IF IsNull(Val(ME[j, a].Text)) = FALSE THEN
IF Val(ME[i, a].Text) <= Val(ME[j, a].Text) THEN FOR col = 0 TO ME.Columns.Count – 1 cambio1 = ME[j, col].Text ME[j, col].text = ME[i, col].Text ME[i, col].text = cambio1 NEXT ENDIF ENDIF NEXT NEXT y FOR i = 0 TO limite – 1 FOR j = 0 TO limite – 2 ‘mejora version 1.01, comprobar si estamos comparando numeros o cadenas de letras IF IsNull(Val(ME[j, a].Text)) = TRUE THEN IF UCase$(ME[j, a].Text) >= UCase$(ME[j + 1, a].Text) THEN
FOR col = 0 TO ME.Columns.Count – 1
cambio1 = ME[j, col].Text
ME[j, col].text = ME[j + 1, col].Text
ME[j + 1, col].text = cambio1
NEXT
ENDIF
ENDIF

y

FOR i = 0 TO limite – 1
FOR j = 0 TO limite – 2
‘mejora version 1.01, comprobar si estamos comparando numeros o cadenas de letras
IF IsNull(Val(ME[j, a].Text)) = TRUE THEN
IF UCase$(ME[j, a].Text) >= UCase$(ME[j + 1, a].Text) THEN
FOR col = 0 TO ME.Columns.Count – 1
cambio1 = ME[j, col].Text
ME[j, col].text = ME[j + 1, col].Text
ME[j + 1, col].text = cambio1
NEXT
ENDIF
ENDIF
‘se trata de un numero
IF IsNull(Val(ME[j, a].Text)) = FALSE THEN
IF Val(ME[j, a].Text) >= Val(ME[j + 1, a].Text) THEN
FOR col = 0 TO ME.Columns.Count – 1
cambio1 = ME[j, col].Text
ME[j, col].text = ME[j + 1, col].Text
ME[j + 1, col].text = cambio1
NEXT
ENDIF
ENDIF
NEXT
NEXT

Nota:20 de noviembre de 2010
Señalar la fila actual:
Se ha añadido el siguiente código en la subrutina ponercolorear, para que señale la fila actual (.current)
‘añadido para colorear la fila que este “seleccionada” actual’mejora 20 de nov. 2010
FOR a = 0 TO ME.Columns.count – 1
ME[ME.row, a].BackgRound = Color.Blue
NEXT

Modificacion 22 noviembre de 2010:
-Se ha cambiado el método de ordenación al quicksort (mucho mas rápido y eficiente)
-Se le ha quitado el mensaje de error cuando sumaba columnas de letras o que no existian (devuelve 0)
-Si tarda mucho en ordenar aparece el reloj del sistema.