Faccruz 0 Denunciar post Postado Novembro 5, 2010 Tenho esse código for (Int32 i = 0; i <= lista.Items.Count - 1; i++) { DateTime DataInformativo = Convert.ToDateTime(lista.Items[i].SubItems[1].Text); if ((int)DataInformativo.DayOfWeek == 0) { if (DataInformativo != DateTime.Today.AddDays(-2)) { lista.Items[i].BackColor = System.Drawing.Color.Red; } } if (DataInformativo <= DateTime.Today.AddDays(-2)) { lista.Items[i].BackColor = System.Drawing.Color.Red; } if (DataInformativo == DateTime.Today) { lista.Items[i].BackColor = System.Drawing.Color.White; } if (DataInformativo == DateTime.Today.AddDays(-1)) { lista.Items[i].BackColor = System.Drawing.Color.White; } if (lista.Items[i].SubItems[2].Text == "Informativo não localizado") { lista.Items[i].BackColor = System.Drawing.Color.Yellow; } } Esse código serve para pintar a ListBox. As regras são as seguintes: 1 - Pintar em vermelho a linha onde a data for menor ou igual a 2 dias da data atual 2 - Se for domingo, comparar subtraindo 2 dias da data atual 3 - Caso alguma filial não envie o arquivo, pintar em amarelo Teria como deixar mais apresentavel? Compartilhar este post Link para o post Compartilhar em outros sites
Daniel LM Costa 2 Denunciar post Postado Novembro 7, 2010 Quais os dias da semana em que é feito o informativo? Por que no caso o domingo você compara com a sexta, mas a segunda você compara com o domingo e sábado, e terça você chega a comparar com o domingo. Se bem entendi não podem existir dois dias sem informativos correto ??? Compartilhar este post Link para o post Compartilhar em outros sites
kobutiii 0 Denunciar post Postado Novembro 7, 2010 Faccruz. Primeiramente, no topo da aplicação, utilize o using System.Drawings A partir daí você reduz de System.Drawing.Color.Red para Color.Red Segundo, esse if tá muito estranho. Você utilizou um método que adiciona dias, a partir de uma data específica para comparar valores. OUtra, considere a opção do switch ao invés dos if's. Ou mesmo o else if ficaria mais legível do que isso que está sendo apresentado. tem 2 if retornando o mesmo resultado e.g if (DataInformativo == DateTime.Today) { lista.Items[i].BackColor = System.Drawing.Color.White; } if (DataInformativo == DateTime.Today.AddDays(-1)) { lista.Items[i].BackColor = System.Drawing.Color.White; } Considere a utilização dos operadores lógicos. E.g. if (DataInformativo == DateTime.Today || DataInformativo == DateTime.Today.AddDays(-1)){ lista.Items[i].BackColor = System.Drawing.Color.White;} Dê uma olhada nisso que te falei, escolha algumas opções e poste o novo código quando terminar. Daí poderemos o ajudar melhor. Compartilhar este post Link para o post Compartilhar em outros sites
Faccruz 0 Denunciar post Postado Novembro 8, 2010 Quais os dias da semana em que é feito o informativo? Por que no caso o domingo você compara com a sexta, mas a segunda você compara com o domingo e sábado, e terça você chega a comparar com o domingo. Se bem entendi não podem existir dois dias sem informativos correto ??? é assim, tenho que comparar sempre o dia anterior, mas isso não se aplica aos domingos, onde preciso comparar com o sabado. A grosso modo seria basicamente isso: O informativo enviado na segunda a tarde, irei fazer a captação na terça, o enviado na terça, faço na quarta e assim por diante. Porém os informativos do sabado, que deveriam ser captado no domingo, só são captados na segunda, por isso, quando a data de leitura cair em uma segunda, devo comparar com a data de sabado. Será que consegui explicar?? kobutiii: Como faira isso em Switch Case? Compartilhar este post Link para o post Compartilhar em outros sites