Problema con delegados
Publicado por Juan Carlos Moreno (2 intervenciones) el 05/06/2009 03:13:18
Saludos Amigos
Agradezco de atemano su ayuda, tengo el siguiente problema: estoy tratando de desarrollar una librería, en la cual hay un método para dar formato automáticamente a una grilla, pasando como parámetro la misma. adicionalmente tengo otro método que permite configurar la posición (izquierda, derecha, centro) de los datos en cada una de las columnas de la grilla, lo que deseo hacer es crear un delegado a travez del evento CellFormatting de la grilla, mi problema está en cómo poder enviar como parámetro la grilla y el origen de datos, aquí una muestra del código:
Public Shared Sub ConfiguraGrilla(ByVal mCampos As String, ByVal mCabecera As String, ByVal mAnchoColumna As String, ByVal dgvGrilla As DataGridView, _
ByVal objDatos As Object)
mListaCampos = mCampos.Split(",")
mListaCabecera = mCabecera.Split(",")
mListaAnchoColumna = mAnchoColumna.Split(",")
mFuenteCabecera = My.Settings.CfgFontHeaderGrid
mColorCabecera = My.Settings.CfgColorHeaderGrid
mColorFuente = My.Settings.CfgColorHeaderForecolorGrid
mColorFondoGrid = My.Settings.CfgColorFondoGrid
mColorForeGrid = My.Settings.CfgColorForeGrid
mColorGridLinea = My.Settings.CfgColorGridLinea
dgvGrilla.AutoGenerateColumns = False
dgvGrilla.DataSource = objDatos
For I = 0 To mListaCampos.Length - 1
dgvGrilla.Columns.Add(mListaCampos(I), mListaCabecera(I))
dgvGrilla.Columns(I).DataPropertyName = mListaCampos(I)
dgvGrilla.Columns(I).Width = mListaAnchoColumna(I)
Next
dgvGrilla.ColumnHeadersDefaultCellStyle.BackColor = mColorCabecera
dgvGrilla.ColumnHeadersDefaultCellStyle.ForeColor = mColorFuente
dgvGrilla.ColumnHeadersDefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleCenter
dgvGrilla.DefaultCellStyle.BackColor = mColorFondoGrid
dgvGrilla.DefaultCellStyle.ForeColor = mColorForeGrid
dgvGrilla.GridColor = mColorGridLinea
dgvGrilla.ColumnHeadersHeightSizeMode = DataGridViewColumnHeadersHeightSizeMode.DisableResizing
dgvGrilla.ColumnHeadersHeight = My.Settings.CfgColumnHeaderHeigth
AddHandler dgvGrilla.CellFormatting, AddressOf AlinearDatos
End Sub
Public Shared Sub AlinearDatos(ByVal sender As Object, ByVal e As _ System.Windows.Forms.DataGridViewCellFormattingEventArgs)
If e.ColumnIndex > -1 Then
If e.RowIndex > -1 Then
Dim Propiedad As PropertyInfo = ORIGENDEDATOS(e.RowIndex).GetType.GetProperty(GRILLA.Columns(e.ColumnIndex).Name)
If Propiedad.PropertyType.ToString = "System.Int8" Or Propiedad.PropertyType.ToString = "System.Int16" Or Propiedad.PropertyType.ToString = "System.Int32" Or Propiedad.PropertyType.ToString = "System.Decimal" Then
e.CellStyle.Alignment = DataGridViewContentAlignment.MiddleRight
e.CellStyle.Format = "n2"
End If
If Propiedad.PropertyType.ToString = "System.String" Then
e.CellStyle.Alignment = DataGridViewContentAlignment.MiddleLeft
End If
End If
End If
End Sub
Muchas gracias!!!!
Agradezco de atemano su ayuda, tengo el siguiente problema: estoy tratando de desarrollar una librería, en la cual hay un método para dar formato automáticamente a una grilla, pasando como parámetro la misma. adicionalmente tengo otro método que permite configurar la posición (izquierda, derecha, centro) de los datos en cada una de las columnas de la grilla, lo que deseo hacer es crear un delegado a travez del evento CellFormatting de la grilla, mi problema está en cómo poder enviar como parámetro la grilla y el origen de datos, aquí una muestra del código:
Public Shared Sub ConfiguraGrilla(ByVal mCampos As String, ByVal mCabecera As String, ByVal mAnchoColumna As String, ByVal dgvGrilla As DataGridView, _
ByVal objDatos As Object)
mListaCampos = mCampos.Split(",")
mListaCabecera = mCabecera.Split(",")
mListaAnchoColumna = mAnchoColumna.Split(",")
mFuenteCabecera = My.Settings.CfgFontHeaderGrid
mColorCabecera = My.Settings.CfgColorHeaderGrid
mColorFuente = My.Settings.CfgColorHeaderForecolorGrid
mColorFondoGrid = My.Settings.CfgColorFondoGrid
mColorForeGrid = My.Settings.CfgColorForeGrid
mColorGridLinea = My.Settings.CfgColorGridLinea
dgvGrilla.AutoGenerateColumns = False
dgvGrilla.DataSource = objDatos
For I = 0 To mListaCampos.Length - 1
dgvGrilla.Columns.Add(mListaCampos(I), mListaCabecera(I))
dgvGrilla.Columns(I).DataPropertyName = mListaCampos(I)
dgvGrilla.Columns(I).Width = mListaAnchoColumna(I)
Next
dgvGrilla.ColumnHeadersDefaultCellStyle.BackColor = mColorCabecera
dgvGrilla.ColumnHeadersDefaultCellStyle.ForeColor = mColorFuente
dgvGrilla.ColumnHeadersDefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleCenter
dgvGrilla.DefaultCellStyle.BackColor = mColorFondoGrid
dgvGrilla.DefaultCellStyle.ForeColor = mColorForeGrid
dgvGrilla.GridColor = mColorGridLinea
dgvGrilla.ColumnHeadersHeightSizeMode = DataGridViewColumnHeadersHeightSizeMode.DisableResizing
dgvGrilla.ColumnHeadersHeight = My.Settings.CfgColumnHeaderHeigth
AddHandler dgvGrilla.CellFormatting, AddressOf AlinearDatos
End Sub
Public Shared Sub AlinearDatos(ByVal sender As Object, ByVal e As _ System.Windows.Forms.DataGridViewCellFormattingEventArgs)
If e.ColumnIndex > -1 Then
If e.RowIndex > -1 Then
Dim Propiedad As PropertyInfo = ORIGENDEDATOS(e.RowIndex).GetType.GetProperty(GRILLA.Columns(e.ColumnIndex).Name)
If Propiedad.PropertyType.ToString = "System.Int8" Or Propiedad.PropertyType.ToString = "System.Int16" Or Propiedad.PropertyType.ToString = "System.Int32" Or Propiedad.PropertyType.ToString = "System.Decimal" Then
e.CellStyle.Alignment = DataGridViewContentAlignment.MiddleRight
e.CellStyle.Format = "n2"
End If
If Propiedad.PropertyType.ToString = "System.String" Then
e.CellStyle.Alignment = DataGridViewContentAlignment.MiddleLeft
End If
End If
End If
End Sub
Muchas gracias!!!!
Valora esta pregunta


0