Discussion:
color de filas en datagrid
(demasiado antiguo para responder)
Jose
2006-05-18 18:32:54 UTC
Permalink
Estimados. Como hacer para que una o varias filas de mi datagrid muestren un
color dependiendo del status de una columna.
La idea es que si el registro es igual a 1 se pinte todo ese registro de un
color, si es igual a 2 de otro color etc.

Gracias por la ayuda.

Uso vb.net 2003
Luis Miguel Blanco
2006-05-19 06:16:02 UTC
Permalink
Hola Jose

Prueba a utilizar un estilo para el datagrid acompañado de estilos de
columna para cada una de las columnas que quieras mostrar. Adicionalmente,
cada columna debería ser una clase heredada de DataGridTextBoxColumn, en la
que reemplazarías el evento Paint(), de forma que personalizaras el color a
pintar en cada celda cuando se de el caso de que la fila a mostrar sea una de
las que te interese destacar. Te adjunto a continuación un bloque de código
con un ejemplo para que lo pruebes, y en caso de que te sea válido, lo
adaptes a tu caso.

'/////////////////////////////////
Public Class Form1
Inherits System.Windows.Forms.Form

Private oConnection As SqlConnection
Private oDataAdapter As SqlDataAdapter
Private oDataSet As DataSet

Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles MyBase.Load
oConnection = New
SqlConnection("Server=localhost;Database=Northwind;uid=sa;pwd=")
oDataAdapter = New SqlDataAdapter("SELECT
ProductID,ProductName,QuantityPerUnit FROM Products", oConnection)
oDataSet = New DataSet

oConnection.Open()
oDataAdapter.Fill(oDataSet, "Products")
oConnection.Close()

Dim oTableStyle As New DataGridTableStyle
oTableStyle.MappingName = "Products"

Me.DataGrid1.DataSource = oDataSet
Me.DataGrid1.DataMember = "Products"

Dim colProductID As New DGTxtColColor
colProductID.MappingName = "ProductID"
colProductID.HeaderText = "Código"
colProductID.ColorFondoCondicion = Color.Gold

Dim colProductName As New DGTxtColColor
colProductName.MappingName = "ProductName"
colProductName.HeaderText = "Nombre"
colProductName.ColorFondoCondicion = Color.Gold

Dim colCantidad As New DGTxtColColor
colCantidad.MappingName = "QuantityPerUnit"
colCantidad.HeaderText = "Cantidad"
colCantidad.ColorFondoCondicion = Color.Gold

oTableStyle.GridColumnStyles.AddRange(New DataGridColumnStyle() _
{colProductID, colProductName, colCantidad})

Me.DataGrid1.TableStyles.Add(oTableStyle)
End Sub
End Class

Public Class DGTxtColColor
Inherits DataGridTextBoxColumn

Private mColorFondoCondicion As Color

Public Property ColorFondoCondicion() As Color
Get
Return mColorFondoCondicion
End Get
Set(ByVal Value As Color)
mColorFondoCondicion = Value
End Set
End Property

Protected Overloads Overrides Sub Paint(ByVal g As
System.Drawing.Graphics, _
ByVal bounds As System.Drawing.Rectangle, _
ByVal source As System.Windows.Forms.CurrencyManager, _
ByVal rowNum As Integer, _
ByVal backBrush As System.Drawing.Brush, _
ByVal foreBrush As System.Drawing.Brush, _
ByVal alignToRight As Boolean)

Dim oBrush As SolidBrush

Select Case rowNum
Case 1, 3, 7, 8
oBrush = New SolidBrush(mColorFondoCondicion)
Case Else
oBrush = backBrush
End Select

MyBase.Paint(g, bounds, source, rowNum, _
oBrush, _
foreBrush, _
alignToRight)
End Sub
End Class
'/////////////////////////////////

Espero que te sea de utilidad.
--
Un saludo
Luis Miguel Blanco
http://www.dotnetmania.com
Post by Jose
Estimados. Como hacer para que una o varias filas de mi datagrid muestren un
color dependiendo del status de una columna.
La idea es que si el registro es igual a 1 se pinte todo ese registro de un
color, si es igual a 2 de otro color etc.
Gracias por la ayuda.
Uso vb.net 2003
sagma
2006-05-19 16:12:02 UTC
Permalink
una consulta, como haria para que el dato este entre ACTIVO y PASIVO, y no asi como esta con numeros

gracia

--
sagma

-----------------------------------------------------------------------
Ver este tema: http://www.softwaremix.net/viewtopic-516825.htm

Enviado desde http://www.softwaremix.net
Jesús M.I
2006-05-20 10:20:01 UTC
Permalink
no entiendo, lo explicas?
una consulta, como haria para que el dato este entre ACTIVO y PASIVO, y no asi como esta con numeros?
gracias
--
sagma
------------------------------------------------------------------------
Ver este tema: http://www.softwaremix.net/viewtopic-516825.html
Enviado desde http://www.softwaremix.net
sagma
2006-05-20 14:19:33 UTC
Permalink
Claro, el ejemplo que muestra nuestro amigo Luis Miguel Blanco,
funciona pero solo posecionandose los colores a las filas 1,3,7,8, y mi
pregunta es para que lo haga a todas las filas que estan con el campo o
nombre ACTIVO y/o PASIVO.

Y por sierto, Gracias LMB, por tu ejemplo que ayudo, ya que hacia rato
que esta buscando este ejemplo.

gracias
Luis Miguel Blanco
2006-05-24 06:02:01 UTC
Permalink
Hola sagma

No hay de qué, celebro que te sea de utilidad 8-)
--
Un saludo
Luis Miguel Blanco
http://www.dotnetmania.com
Post by sagma
Claro, el ejemplo que muestra nuestro amigo Luis Miguel Blanco,
funciona pero solo posecionandose los colores a las filas 1,3,7,8, y mi
pregunta es para que lo haga a todas las filas que estan con el campo o
nombre ACTIVO y/o PASIVO.
Y por sierto, Gracias LMB, por tu ejemplo que ayudo, ya que hacia rato
que esta buscando este ejemplo.
gracias
sagma
2006-05-23 16:04:29 UTC
Permalink
Hola que tal, saben pille esto un poco mas abajo, el mismo LMB, lo escribio, pero aun no me muestra nada, esto es lo que he puesto

Public Class DGTxtColColo

Inherits DataGridTextBoxColum

Private mColorFondoCondicion As Colo

Protected Overloads Overrides Sub Paint(ByVal g As System.Drawing.Graphics,
ByVal bounds As System.Drawing.Rectangle,
ByVal source As System.Windows.Forms.CurrencyManager,
ByVal rowNum As Integer,
ByVal backBrush As System.Drawing.Brush,
ByVal foreBrush As System.Drawing.Brush,
ByVal alignToRight As Boolean

Dim oBrush As SolidBrus
Dim ofiladatos As DataRowView = source.List(rowNum

If ofiladatos("rhcondes1") = "BAJA" The
oBrush = New SolidBrush(Color.Cyan
Els
oBrush = backBrus
End I
'Select Case rowNu
'Case 1, 3, 7,
'oBrush = New SolidBrush(Color.Aquamarine
'oBrush = New SolidBrush(mColorFondoCondicion
'Case Els
'oBrush = backBrus
'End Selec

MyBase.Paint(g, bounds, source, rowNum,
oBrush,
foreBrush,
alignToRight
End Su

End Clas

no me da ningun error, pero no lo muestra como era el otro, cuando le ponia, lo que esta comentado

gracia

--
sagma

-----------------------------------------------------------------------
Ver este tema: http://www.softwaremix.net/viewtopic-516825.htm

Enviado desde http://www.softwaremix.net
Luis Miguel Blanco
2006-05-24 06:22:01 UTC
Permalink
Hola sagma

Acabo de revisar este código y a mí me funciona correctamente. Lo que
hacemos aquí es obtener el número de fila que el datagrid va a "pintar", a
continuación, utilizando dicho número de fila, extraemos la correspondiente
fila del dataset que tenemos conectado al grid, en forma de datarowview, y
por último usamos este datarowview para comprobar el valor de uno de sus
campos; en el caso de que se cumpla la condición, cambiamos el color de fondo
de la celda.

Puede ser que te falte algo en la creación de los objectos columna que luego
asignas al estilo del grid. Revisa esta parte y compárala con la del ejemplo
original, en la que también incluí dicha creación de las columnas, grid,
dataset, etc; quizá sea aquí donde está el problema.
--
Un saludo
Luis Miguel Blanco
http://www.dotnetmania.com
Post by Luis Miguel Blanco
Public Class DGTxtColColor
Inherits DataGridTextBoxColumn
Private mColorFondoCondicion As Color
Protected Overloads Overrides Sub Paint(ByVal g As System.Drawing.Graphics, _
ByVal bounds As System.Drawing.Rectangle, _
ByVal source As System.Windows.Forms.CurrencyManager, _
ByVal rowNum As Integer, _
ByVal backBrush As System.Drawing.Brush, _
ByVal foreBrush As System.Drawing.Brush, _
ByVal alignToRight As Boolean)
Dim oBrush As SolidBrush
Dim ofiladatos As DataRowView = source.List(rowNum)
If ofiladatos("rhcondes1") = "BAJA" Then
oBrush = New SolidBrush(Color.Cyan)
Else
oBrush = backBrush
End If
'Select Case rowNum
'Case 1, 3, 7, 8
'oBrush = New SolidBrush(Color.Aquamarine)
'oBrush = New SolidBrush(mColorFondoCondicion)
'Case Else
'oBrush = backBrush
'End Select
MyBase.Paint(g, bounds, source, rowNum, _
oBrush, _
foreBrush, _
alignToRight)
End Sub
End Class
no me da ningun error, pero no lo muestra como era el otro, cuando le ponia, lo que esta comentado.
gracias
--
sagma
------------------------------------------------------------------------
Ver este tema: http://www.softwaremix.net/viewtopic-516825.html
Enviado desde http://www.softwaremix.net
sagma
2006-05-24 15:12:12 UTC
Permalink
Hola LMB, cuando pongo el = 3, me sale este error

If ofiladatos("rhcondes1") = 3 The
oBrush = New SolidBrush(Color.Cyan
Els
oBrush = backBrus
End I

"Exepcion no controlada del tipo "System.InvalidCastException" en System.windows.forms.dll

Informacion adicional: la conversion de la cadena "ACTIVO" al tipo double no es valida

y si le pongo de esta forma: no me da ningun error, pero no me muestra la linea marcada

If ofiladatos("rhcondes1") = "ACTIVO" The
oBrush = New SolidBrush(Color.Cyan
Els
oBrush = backBrus
End I

gracia

--
sagma

-----------------------------------------------------------------------
Ver este tema: http://www.softwaremix.net/viewtopic-516825.htm

Enviado desde http://www.softwaremix.net
Luis Miguel Blanco
2006-05-25 06:36:01 UTC
Permalink
Hola sagma

Parece un error un tanto extraño 8-¿?¿?

¿Me podrías indicar qué valor tiene realmente el campo rhcondes1 de tu base
de datos, o la estructura de la tabla?
--
Un saludo
Luis Miguel Blanco
http://www.dotnetmania.com
Hola LMB, cuando pongo el = 3, me sale este error.
If ofiladatos("rhcondes1") = 3 Then
oBrush = New SolidBrush(Color.Cyan)
Else
oBrush = backBrush
End If
"Exepcion no controlada del tipo "System.InvalidCastException" en System.windows.forms.dll"
Informacion adicional: la conversion de la cadena "ACTIVO" al tipo double no es valida.
If ofiladatos("rhcondes1") = "ACTIVO" Then
oBrush = New SolidBrush(Color.Cyan)
Else
oBrush = backBrush
End If
gracias
--
sagma
------------------------------------------------------------------------
Ver este tema: http://www.softwaremix.net/viewtopic-516825.html
Enviado desde http://www.softwaremix.net
sagma
2006-05-25 16:31:10 UTC
Permalink
Claro, LMB, esto tengo en el LOAD

Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Loa

ds = emp.consulta("SELECT suempcemp,suempnemp,suempruni,suempdemp,suemptelf,rhcondes1 " &
"FROM suemp,rhcon " &
"WHERE rhcongrup = 500 " &
" AND rhconsubg = suempstat " &
"ORDER BY suempcemp"
DataGrid1.DataSource = ds.Tables("suemp"

'Cargando los status para la hor
panelTime.BorderStyle = StatusBarPanelBorderStyle.Sunke
panelTime.AutoSize = StatusBarPanelAutoSize.Sprin
panelTime.Alignment = HorizontalAlignment.Righ

'Cargando los status para la fech
panelDate.BorderStyle = StatusBarPanelBorderStyle.Raise
panelDate.ToolTipText = System.DateTime.Today.ToShortDateStrin
panelDate.Text = System.DateTime.Today.ToLongDateStrin
panelDate.AutoSize = StatusBarPanelAutoSize.Content

'Llenando el statusba
StatusBar1.ShowPanels = True 'para que muestre varios panele
StatusBar1.Panels.Add(panelTime
StatusBar1.Panels.Add(panelDate
StatusBar1.Panels.Add(panelEmp

'para que cambie la hora y la fech
Timer1.Start(

Call ConfigurarGrilla(

End Su

Sub ConfigurarGrilla(

Dim myEstiloGrid As DataGridTableStyle = New DataGridTableStyl
myEstiloGrid.MappingName = "suemp

'Codigo del emplead
Dim myEstiloCol As New DataGridTextBoxColum
myEstiloCol.MappingName = "suempcemp
myEstiloCol.HeaderText = "Codigo
'myEstiloCol.ColorFondoCondicion = Color.Cya
myEstiloCol.Width = 4

'Descripcion o nombre del emplead
Dim myEstiloCol2 As New DataGridTextBoxColum
myEstiloCol2.MappingName = "suempnemp
myEstiloCol2.HeaderText = "Nombre
'myEstiloCol2.Alignment = HorizontalAlignment.Cente
'myEstiloCol2.ColorFondoCondicion = Color.Cya
myEstiloCol2.Width = 22

'estado en que se encuentra el trabajado
Dim myEstiloCol6 As New DGTxtColColo
myEstiloCol6.MappingName = "rhcondes1
myEstiloCol6.HeaderText = "Estado
'myEstiloCol6.ColorFondoCondicion = Color.Cya
myEstiloCol6.Width = 6

myEstiloGrid.GridColumnStyles.Add(myEstiloCol
myEstiloGrid.GridColumnStyles.Add(myEstiloCol2
myEstiloGrid.GridColumnStyles.Add(myEstiloCol6

Me.DataGrid1.TableStyles.Add(myEstiloGrid

' Set up the grid tooltips
Me.hitRow = -
Me.toolTip1 = New ToolTi
Me.toolTip1.InitialDelay = 30
AddHandler Me.DataGrid1.MouseMove, AddressOf dataGrid1_MouseMov

end sub

como veras, rhcondes1 es un char (digo char, por que estos tomando datos de una tabla de informix

hago el JOIN entre suemp y rhcon, de donde la tabla suemp esta solo el codigo 1 y/o 2,ya que uno es ACTIVO y 2 es BAJA, y estos datos de ACTIVO y BAJA estan en la tabla rhcon, de donde rhcon es rhconcond SERIAL, rhcondesc CHAR(60

gracia

--
sagma

-----------------------------------------------------------------------
Ver este tema: http://www.softwaremix.net/viewtopic-516825.htm

Enviado desde http://www.softwaremix.net
Luis Miguel Blanco
2006-05-26 15:59:02 UTC
Permalink
Hola sagma

Con esta información que me has dado, creo que tengo una posible pista sobre
el origen del problema.

Si he entendido bien, en el campo rhcondes1 debería haber la cadena "ACTIVO"
o "BAJA", pero también dices que este campo es de tipo CHAR(60), por lo que
es probable que cuando grabes una cadena en él, te rellene con espacios en
blanco desde el final de la cadena que añades, hasta completar la longitud de
60.

Si esto es así, cuando en el evento Paint() de la clase personalizada para
estilo de columna vas a comprobar el valor del campo, puede que el campo del
objeto DataRowView tenga la cadena "BAJA" más los espacios en blanco hasta
completar una cadena con longitud 60, por lo que la expresión:

'///////////////////
If ofiladatos("rhcondes1") = "BAJA" Then
'///////////////////

no se cumpliría.

Prueba a eliminar primero los espacios en blanco de forma parecida a la
siguiente:

'///////////////////
If CType(ofiladatos("rhcondes1"), String).Trim() = "BAJA" Then
'///////////////////

a ver si de esta manera ya consigues el comportamiento necesario.
--
Un saludo
Luis Miguel Blanco
http://www.dotnetmania.com
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
ds = emp.consulta("SELECT suempcemp,suempnemp,suempruni,suempdemp,suemptelf,rhcondes1 " & _
"FROM suemp,rhcon " & _
"WHERE rhcongrup = 500 " & _
" AND rhconsubg = suempstat " & _
"ORDER BY suempcemp")
DataGrid1.DataSource = ds.Tables("suemp")
'Cargando los status para la hora
panelTime.BorderStyle = StatusBarPanelBorderStyle.Sunken
panelTime.AutoSize = StatusBarPanelAutoSize.Spring
panelTime.Alignment = HorizontalAlignment.Right
'Cargando los status para la fecha
panelDate.BorderStyle = StatusBarPanelBorderStyle.Raised
panelDate.ToolTipText = System.DateTime.Today.ToShortDateString
panelDate.Text = System.DateTime.Today.ToLongDateString
panelDate.AutoSize = StatusBarPanelAutoSize.Contents
'Llenando el statusbar
StatusBar1.ShowPanels = True 'para que muestre varios paneles
StatusBar1.Panels.Add(panelTime)
StatusBar1.Panels.Add(panelDate)
StatusBar1.Panels.Add(panelEmp)
'para que cambie la hora y la fecha
Timer1.Start()
Call ConfigurarGrilla()
End Sub
Sub ConfigurarGrilla()
Dim myEstiloGrid As DataGridTableStyle = New DataGridTableStyle
myEstiloGrid.MappingName = "suemp"
'Codigo del empleado
Dim myEstiloCol As New DataGridTextBoxColumn
myEstiloCol.MappingName = "suempcemp"
myEstiloCol.HeaderText = "Codigo"
'myEstiloCol.ColorFondoCondicion = Color.Cyan
myEstiloCol.Width = 40
'Descripcion o nombre del empleado
Dim myEstiloCol2 As New DataGridTextBoxColumn
myEstiloCol2.MappingName = "suempnemp"
myEstiloCol2.HeaderText = "Nombre"
'myEstiloCol2.Alignment = HorizontalAlignment.Center
'myEstiloCol2.ColorFondoCondicion = Color.Cyan
myEstiloCol2.Width = 225
'estado en que se encuentra el trabajador
Dim myEstiloCol6 As New DGTxtColColor
myEstiloCol6.MappingName = "rhcondes1"
myEstiloCol6.HeaderText = "Estado"
'myEstiloCol6.ColorFondoCondicion = Color.Cyan
myEstiloCol6.Width = 60
myEstiloGrid.GridColumnStyles.Add(myEstiloCol)
myEstiloGrid.GridColumnStyles.Add(myEstiloCol2)
myEstiloGrid.GridColumnStyles.Add(myEstiloCol6)
Me.DataGrid1.TableStyles.Add(myEstiloGrid)
' Set up the grid tooltips.
Me.hitRow = -1
Me.toolTip1 = New ToolTip
Me.toolTip1.InitialDelay = 300
AddHandler Me.DataGrid1.MouseMove, AddressOf dataGrid1_MouseMove
end sub
como veras, rhcondes1 es un char (digo char, por que estos tomando datos de una tabla de informix.
hago el JOIN entre suemp y rhcon, de donde la tabla suemp esta solo el codigo 1 y/o 2,ya que uno es ACTIVO y 2 es BAJA, y estos datos de ACTIVO y BAJA estan en la tabla rhcon, de donde rhcon es rhconcond SERIAL, rhcondesc CHAR(60)
gracias
--
sagma
------------------------------------------------------------------------
Ver este tema: http://www.softwaremix.net/viewtopic-516825.html
Enviado desde http://www.softwaremix.net
sagma
2006-05-29 14:26:48 UTC
Permalink
muchas, pero muchas gracias, funco como lo queria

vas ha disculpar las molestias, pero tengo una duda, esta haciendo que en el mismo datagrid, con otro valor me muestro otro color
Osea como veras BAJA, lo tendre de un color, pero para que otra descripcion como EGRESADO, sea de otro color, como seria

gracia

--
sagma

-----------------------------------------------------------------------
Ver este tema: http://www.softwaremix.net/viewtopic-516825.htm

Enviado desde http://www.softwaremix.net
Luis Miguel Blanco
2006-05-31 05:44:02 UTC
Permalink
Hola segma

Celebro que finalmente te funcionara 8-)

Para conseguir esta otra funcionalidad que me comentas supongo que podrías
utilizar una estructura Select Case de forma parecida a la siguiente:

'/////////////////////////////
Dim sValorCampo As String
sValorCampo = CType(ofiladatos("rhcondes1"), String).Trim()

Select Case sValorCampo
Case "BAJA"
oBrush = New SolidBrush(Color.Cyan)
Case "EGRESADO"
oBrush = New SolidBrush(Color.Yellow)
Case Else
oBrush = backBrush
End Select
'/////////////////////////////

Con alguna adaptación supongo que te puede servir.
--
Un saludo
Luis Miguel Blanco
http://www.dotnetmania.com
muchas, pero muchas gracias, funco como lo queria.
vas ha disculpar las molestias, pero tengo una duda, esta haciendo que en el mismo datagrid, con otro valor me muestro otro color.
Osea como veras BAJA, lo tendre de un color, pero para que otra descripcion como EGRESADO, sea de otro color, como seria?
gracias
--
sagma
------------------------------------------------------------------------
Ver este tema: http://www.softwaremix.net/viewtopic-516825.html
Enviado desde http://www.softwaremix.net
sagma
2006-05-31 15:34:06 UTC
Permalink
Mil gracias, de nuevo, mi querido LMB.

funco a la Perfect

Gracias
Post by Luis Miguel Blanco
Hola segma
Celebro que finalmente te funcionara 8-)
Para conseguir esta otra funcionalidad que me comentas supongo que podrías
'/////////////////////////////
Dim sValorCampo As String
sValorCampo = CType(ofiladatos("rhcondes1"), String).Trim()
Select Case sValorCampo
Case "BAJA"
oBrush = New SolidBrush(Color.Cyan)
Case "EGRESADO"
oBrush = New SolidBrush(Color.Yellow)
Case Else
oBrush = backBrush
End Select
'/////////////////////////////
Con alguna adaptación supongo que te puede servir.
--
Un saludo
Luis Miguel Blanco
http://www.dotnetmania.com
muchas, pero muchas gracias, funco como lo queria.
vas ha disculpar las molestias, pero tengo una duda, esta haciendo que en el mismo datagrid, con otro valor me muestro otro color.
Osea como veras BAJA, lo tendre de un color, pero para que otra descripcion como EGRESADO, sea de otro color, como seria?
gracias
--
sagma
------------------------------------------------------------------------
Ver este tema: http://www.softwaremix.net/viewtopic-516825.html
Enviado desde http://www.softwaremix.net
Luis Miguel Blanco
2006-06-01 05:29:01 UTC
Permalink
Hola sagma

Estupendo, me alegro mucho de que funcionara y de haber aportado algo de
ayuda 8-)
--
Un saludo
Luis Miguel Blanco
http://www.dotnetmania.com
Post by sagma
Mil gracias, de nuevo, mi querido LMB.
funco a la Perfect
Gracias
Post by Luis Miguel Blanco
Hola segma
Celebro que finalmente te funcionara 8-)
Para conseguir esta otra funcionalidad que me comentas supongo que podrías
'/////////////////////////////
Dim sValorCampo As String
sValorCampo = CType(ofiladatos("rhcondes1"), String).Trim()
Select Case sValorCampo
Case "BAJA"
oBrush = New SolidBrush(Color.Cyan)
Case "EGRESADO"
oBrush = New SolidBrush(Color.Yellow)
Case Else
oBrush = backBrush
End Select
'/////////////////////////////
Con alguna adaptación supongo que te puede servir.
--
Un saludo
Luis Miguel Blanco
http://www.dotnetmania.com
muchas, pero muchas gracias, funco como lo queria.
vas ha disculpar las molestias, pero tengo una duda, esta haciendo que en el mismo datagrid, con otro valor me muestro otro color.
Osea como veras BAJA, lo tendre de un color, pero para que otra descripcion como EGRESADO, sea de otro color, como seria?
gracias
--
sagma
------------------------------------------------------------------------
Ver este tema: http://www.softwaremix.net/viewtopic-516825.html
Enviado desde http://www.softwaremix.net
Loading...