sábado, 30 de julio de 2011

8.1 Colorear lineas pares e impares

En este capitulo vamos a añadir 4 nuevas propiedades a nuestro supergridviews:
  • color de fondo en filas impares
  • color de fondo en filas pares
  • color de letras en filas impares
  • color de letras en filas pares
Y la subrutina colorear que haga posible esto.

Empezamos:
Abrimos el proyecto de supergridviews, nos vamos al archivo de clase llamado supergridviews, y
1) En la linea :
PUBLIC CONST _Properties AS String = "*,Tag2
vamos a añadir nuestra nuevas variables para que aparezcan en el cuadro de propiedades:
PUBLIC CONST _Properties AS String = "*,Tag2,colorfondoimpar,colorfondopar,colorletraimpar,colorletrapar"

2) Definimos nuestras variables
'---------------------------------------------------------------
'variables de colore de fondo y de letras segun fila impar o par
'----------------------------------------------------------------
PROPERTY colorfondoimpar AS Integer
PRIVATE hcolorfondoimpar AS Integer
PRIVATE FUNCTION colorfondoimpar_Read() AS Integer
RETURN hcolorfondoimpar
END
PRIVATE SUB colorfondoimpar_Write(Value AS Integer)
hcolorfondoimpar = value
END

PROPERTY colorfondopar AS Integer
PRIVATE hcolorfondopar AS Integer
PRIVATE FUNCTION colorfondopar_Read() AS Integer
RETURN hcolorfondopar
END
PRIVATE SUB colorfondopar_Write(Value AS Integer)
hcolorfondopar = value
END

PROPERTY colorletraimpar AS Integer
PRIVATE hcolorletraimpar AS Integer
PRIVATE FUNCTION colorletraimpar_Read() AS Integer
RETURN hcolorletraimpar
END
PRIVATE SUB colorletraimpar_Write(Value AS Integer)
hcolorletrapar = value
END

PROPERTY colorletrapar AS Integer
PRIVATE hcolorletrapar AS Integer
PRIVATE FUNCTION colorletrapar_Read() AS Integer
RETURN hcolorletrapar
END
PRIVATE SUB colorletrapar_Write(Value AS Integer)
hcolorletrapar = value
END

3- Definimos la subrutina “pública que hará el trabajo:
'------------------------------------
'nueva funcion/subrutina de colorear
'------------------------------------
PUBLIC SUB colorear()
Ponercolorear(hcolorfondoimpar, hcolorletraimpar, hcolorfondopar, hcolorletrapar)
END

4- Definimos las subrutinas y funciones internas:
'-----------------------------------------------------------------------------
' colorear tabla....
'-----------------------------------------------------------------------------
PRIVATE SUB Ponercolorear(fondoimpar AS Integer, letraimpar AS Integer, fondopar AS Integer, letrapar AS Integer)
DIM a AS Integer
DIM b AS Integer
FOR a = 0 TO ME.rows.count - 1
IF Par(a) = FALSE THEN
FOR b = 0 TO ME.columns.count - 1
ME[a, b].BackgRound = fondoimpar
ME[a, b].Foreground = letraimpar
NEXT
ELSE
FOR b = 0 TO ME.columns.count - 1
ME[a, b].Background = fondopar
ME[a, b].Foreground = letrapar
NEXT
END IF
NEXT
ME.Refresh
END

PRIVATE FUNCTION Par(a AS Integer) AS Boolean
IF Round(a / 2, 0) * 2 = a THEN
'el numero es par
RETURN 1
ELSE
RETURN 0
END IF
END

Nota Importante:

Comentar que podemos dividir en 4 zonas o secciones, un archivo de clases:
1) Donde definimos la herencia y la orden export
INHERITS gridview
EXPORT

2) Añadimos las propiedades que aparecerán en el cuadro de propiedades
PUBLIC CONST _Properties AS String = "*,Tag2,colorfondoimpar,colorfondopar,colorletraimpar,colorletrapar"


3) Definimos las variables tanto Públicas como Privadas de la clase
PROPERTY tag2 AS String
PRIVATE htag2 AS String

'función de lectura
PRIVATE FUNCTION tag2_Read() AS String
RETURN htag2
END

'función de escritura
PRIVATE SUB tag2_Write(Value AS String)
htag2 = value
END

4) Definirmos las subrutinas y funciones que podran ser públicas o privadas.
PUBLIC SUB colorear()
...............
END
PRIVATE SUB Ponercolorear(fondoimpar AS Integer, letraimpar AS Integer, fondopar AS Integer, letrapar AS Integer)
...
End


Una vez añadido el código, tendremos que hacer de nuevo el ejecutable, con las mismas opciones que hicimos de supergridviews cuando definimos la propiedad tag2. No lo voy a explicar aquí ya que sino sera recursivo, estando ya explicado con todo detalle anteriormente.

Vamos a probar el componente ampliado, abrimos de nuevo proyecto “pruebacomponente”, y vamos a añadirle el siguiente código:

Un módulo al que llamaremos Titulos, con el siguiente código:

PUBLIC SUB ponertitulo()
WITH FMain.supergridviews1
.header = 3
.rows.count = 4
.columns.count = 3
.Columns[0].title = "Articulo"
.Columns[1].title = "Precio"
.Columns[2].title = "Id"
.Columns[0].width = 50
.Columns[1].width = 84
.Columns[2].width = 350
.font.name = "Sans"
.font.size = 7
.Background = 16777215
.Foreground = 0
END WITH
'los colores los he cogido con el programa definir_gridviews_tableviews, aunque se pueden coger 'desde la propiedad backGROUND (elegimos en el cuadro de color el color que queremos) y 'copiar el numero que nos sale en la propiedes que nos interesen)
FMain.supergridviews1.colorfondoimpar = 16162098
FMain.supergridviews1.colorletraimpar = 676630
FMain.supergridviews1.colorfondopar = 16134706
FMain.supergridviews1.colorletrapar = 2566525
fMain.supergridviews1.colorear()
END

PUBLIC SUB dibujo(tabla AS supergridviews)
DIM a AS Integer
DIM b AS Integer
FOR a = 0 TO tabla.rows.count - 1
IF Par(a) = FALSE THEN
FOR b = 0 TO tabla.columns.count - 1
tabla[a, b].text = "prueba"
NEXT
ELSE
FOR b = 0 TO tabla.columns.count - 1
tabla[a, b].text = "prueba"
NEXT
END IF
NEXT
tabla.Refresh
END

'averigua si un numero es par o impar
PUBLIC FUNCTION Par(a AS Integer) AS Boolean
IF Round(a / 2, 0) * 2 = a THEN
'el numero es par
RETURN 1
ELSE
RETURN 0
END IF
END

En el formulario Fmain:

PUBLIC SUB Form_Open()
titulos.ponertitulo
titulos.dibujo(supergridviews1)
END




Importante: Nos tenemos que ir a Proyecto/Propiedades/ Pestaña Opciones, y poner “Simbolos en módulos son publicos...” como “Sí” y “Los controles en formularios son públicos” como “Sí”



Si lo ejecutamos, tendremos el siguiente resultado:







No hay comentarios:

Publicar un comentario