Jump to content
diego_10

Colorir DatagridView

Recommended Posts

diego_10

Boas,

Preciso de colorir a minha datagrid para realçar alguns dados, mas na estou a conseguir fazer aquilo que pretendo.

Vou aqui dizer o que pretendo e mostrar o codigo que tenho a ver se alguem me consegue ajudar.

tenho uma datagrid toda ela preenchida dinamicamente, pretendo o seguinte apartir da 18(inclusive) coluna e na linha 0 que ele me começe a ler a datagrid ate ao fim e que verifique se o conteudo da celula e > 0 se sim coloca uma cor nessa celula, senao coloca outra.

o codigo que tenho é o seguinte:

Dim columnscount As Integer
Dim rowscount As Integer

columnscount = dgvProducao.Columns.Count - 1
rowscount = dgvProducao.Rows.Count - 1

For i = 18 To columnscount 
     For j = 0 To rowscount
                If dgvProducao.Item(i, j).Value > 0 Then
                    dgvProducao.Rows(j).Cells(j).Style.BackColor = Color.Gainsboro
                   dgvProducao.DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleCenter
                Else                    
                    dgvProducao.Rows(j).Cells(j).Style.BackColor = Color.White
                   dgvProducao.DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleCenter
                End If            
    Next        
Next

Cumprimentos a todos!

Share this post


Link to post
Share on other sites
Caça

O que é que não estás a conseguir fazer?


Pedro Martins

Não respondo a duvidas por PM

Share this post


Link to post
Share on other sites
diego_10

Nao estou a conseguir colorir as celulas onde o conteudo dela seja > 0

Cumprimentos

Share this post


Link to post
Share on other sites
Caça

Coloca assim

Dim columnscount As Integer
Dim rowscount As Integer

columnscount = dgvProducao.Columns.Count - 1
rowscount = dgvProducao.Rows.Count - 1

For i = 18 To columnscount
     For j = 0 To rowscount
                If CInt(dgvProducao.Rows(j).Cells(j).Value) > 0 Then
                    dgvProducao.Rows(j).Cells(j).Style.BackColor = Color.Gainsboro
                   dgvProducao.DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleCenter
                Else                    
                    dgvProducao.Rows(j).Cells(j).Style.BackColor = Color.White
                   dgvProducao.DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleCenter
                End If            
    Next        
Next


Pedro Martins

Não respondo a duvidas por PM

Share this post


Link to post
Share on other sites
diego_10

Obrigado,

Era mesmo isso que pretendia.

Tenho mais 2 duvidas em relaçao a ediçao da datagridview

1-Consigo dentro da mesma celula fazer uma soma e o resultado aparecer na mesma celula.

Ex: 10+10 e Substitui o 10+10 por 20

2-Sera que consigo fixar por exemplo colunas no datagridview para quando usar o Scroll essas colunas que pretendo fixar e so as outras movimentar?

Obrigado pela disponibilidade!

Cumprimentos a todos!

Share this post


Link to post
Share on other sites
Caça

1-Consigo dentro da mesma celula fazer uma soma e o resultado aparecer na mesma celula.

Ex: 10+10 e Substitui o 10+10 por 20

Consegues, mas devias fazer isso quando estás a carregar os dados..

Esse 10+10 é uma string? Se for tens de separar os dois números para depois somar

2-Sera que consigo fixar por exemplo colunas no datagridview para quando usar o Scroll essas colunas que pretendo fixar e so as outras movimentar?

Acho que isso não é possível..


Pedro Martins

Não respondo a duvidas por PM

Share this post


Link to post
Share on other sites
diego_10

Boas,

Consegues, mas devias fazer isso quando estás a carregar os dados..

Esse 10+10 é uma string? Se for tens de separar os dois números para depois somar

Mas eu nao quero carregar dados, estou a falar numa questao de introduzir dados no instante, imagina que se coloca 50 e mais a frente temos de somar + 51. se existe a possibilidade de chega a celula e fazer +51 e quando mudar de celula ela fazer 50 + 51 = 101 e ficar la o 101.

Acho que isso não é possível..

Já consegui arranjar maneira

For i = 0 to 18

DatagridView.Columns(i).Frozen = True

next

Cumprimentos a todos!

Share this post


Link to post
Share on other sites
Caça

Vais ter de usar o evento CellEnter para pegar o valor actual e colocar-lo numa variável e também i evento CellLeave para somar o valor antigo ao novo.


Pedro Martins

Não respondo a duvidas por PM

Share this post


Link to post
Share on other sites
diego_10

Boas, ja que estamos numa de ediçao de datagrid,

Tenho um cliclo que me soma Coluna na datagrid. como faço depois para criar uma linha nova e colocar a soma da coluna na coluna correspondente?

Cumprimentos

Share this post


Link to post
Share on other sites
Caça
Dgv.Rows.Add("Valor da coluna 1", "Valor da coluna 2", etc)


Pedro Martins

Não respondo a duvidas por PM

Share this post


Link to post
Share on other sites
diego_10

Pois o metodo que pesquisei é esse, mas da-me um erro

Rows cannot be programmatically added to the DataGridView's rows collection when the control is data-bound

Cumprimentos a todos!

Share this post


Link to post
Share on other sites
Caça

Se estás a carregar via DataSource não dá.

Para isso tens de adicionar a nova linha ao datasource


Pedro Martins

Não respondo a duvidas por PM

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.