Exibir mensagem anterior :: Exibir próxima mensagem |
Autor |
Mensagem |
fbnois Membro Junior
Registrado: Quinta-Feira, 10 de Abril de 2008 Mensagens: 364 Localização: Na frente do Computador
|
Enviada: Qui Jan 22, 2009 8:30 pm Assunto: alterar conteudo de celula do Dbgrid |
|
|
Ola Pessoal!
Estou desenvolvendo um sistema de controle de mensalidade, onde há um lugar q eu listo todas as mensalidades do aluno selecionado em um dbgrid. Constriu da seguinte maneira:
-Mensalidade Que foi paga aparece em cor de fonte verde.
-Mensalidade q está em atraso aparece em fonte vermelha.
mas o cliente pediu q além de em cor verde ele quer q aparece escrito tbm em cada uma das linhas; "PAGO"; "ATRASADO".
Eu tentei o seguite código:
Código: |
procedure Tfrmsituacao.DBGrid1DrawColumnCell(Sender: TObject;
const Rect: TRect; DataCol: Integer; Column: TColumn;
State: TGridDrawState);
var
hoje:TDateTime;
begin
if (dbgrid1.DataSource.DataSet.FieldByName('estado').asString = 'P')then
begin
dbgrid1.Canvas.Font.Color := clGreen;
dbgrid1.DefaultDrawDataCell(Rect,tdbgrid(Sender).Columns[datacol].field, state);
dbgrid1.Canvas.FillRect(Rect);
dbgrid1.Canvas.TextOut(Rect.Left+3,Rect.Top+3,'PAGO');
end;
if (dbgrid1.DataSource.DataSet.FieldByName('estado').asString = 'A')then
begin
hoje:=Date;
if(dbgrid1.DataSource.DataSet.FieldByName('datavencimento').AsDateTime<hoje)then
begin
dbgrid1.Canvas.Font.Color := clRed;
dbgrid1.DefaultDrawDataCell(Rect,tdbgrid(Sender).Columns[datacol].field, state);
dbgrid1.Canvas.FillRect(Rect);
dbgrid1.Canvas.TextOut(Rect.Left+3,Rect.Top+3,'EM ATRASO');
end;
end;
end;
|
mas quando eu rodo ele da o seguinte resultado:
eu queria q apenas na ultima coluna fica escrito "PAGO"ou "ATRASADO"
O q eu fiz de errado alguém pode me dizer??
Editado pela última vez por fbnois em Sex Jan 23, 2009 1:24 am, num total de 1 vez |
|
Voltar ao Topo |
|
|
MARCZEWSKI Membro Junior
Registrado: Terça-Feira, 9 de Dezembro de 2008 Mensagens: 337
|
Enviada: Qui Jan 22, 2009 10:25 pm Assunto: |
|
|
Vc inverteu coluna com linha!!!
Linha esta no lugar da coluna e coluna no lugar da linha!!
Espero estar ajudando!!! _________________ Estarei um pouco ausente do forum por um tempo!!!
Caso seja importante, mande MP(duvidas somente no forum)
grato, |
|
Voltar ao Topo |
|
|
MARCZEWSKI Membro Junior
Registrado: Terça-Feira, 9 de Dezembro de 2008 Mensagens: 337
|
Enviada: Qui Jan 22, 2009 10:34 pm Assunto: |
|
|
So uma pergunta: onde vc arrumou esse visual pro XP????? _________________ Estarei um pouco ausente do forum por um tempo!!!
Caso seja importante, mande MP(duvidas somente no forum)
grato, |
|
Voltar ao Topo |
|
|
mestrehurricane Mestre
Registrado: Domingo, 14 de Janeiro de 2007 Mensagens: 984 Localização: Belo Horizonte - MG
|
Enviada: Qui Jan 22, 2009 10:43 pm Assunto: |
|
|
Amigo tenta dar um distinct no seu select. |
|
Voltar ao Topo |
|
|
fbnois Membro Junior
Registrado: Quinta-Feira, 10 de Abril de 2008 Mensagens: 364 Localização: Na frente do Computador
|
Enviada: Sex Jan 23, 2009 1:31 am Assunto: |
|
|
MARCZEWSKI escreveu: | Vc inverteu coluna com linha!!!
Linha esta no lugar da coluna e coluna no lugar da linha!!
Espero estar ajudando!!! |
Não entendi onde me desculpe! |
|
Voltar ao Topo |
|
|
MARCZEWSKI Membro Junior
Registrado: Terça-Feira, 9 de Dezembro de 2008 Mensagens: 337
|
Enviada: Sex Jan 23, 2009 3:37 am Assunto: |
|
|
Complementando oq coloquei na MP, qual é a "organizaçao" desse grid!!
O que cada coluna deve exibir??
Espero estar ajudando!!! _________________ Estarei um pouco ausente do forum por um tempo!!!
Caso seja importante, mande MP(duvidas somente no forum)
grato, |
|
Voltar ao Topo |
|
|
gilsonnrodrigues Moderador
Registrado: Quinta-Feira, 14 de Abril de 2005 Mensagens: 9009 Localização: Governador Valadares-MG
|
Enviada: Sex Jan 23, 2009 9:04 am Assunto: |
|
|
pra usar sua idéia e funcionar.
Código: | procedure Tfrmsituacao.DBGrid1DrawColumnCell(Sender: TObject;
const Rect: TRect; DataCol: Integer; Column: TColumn;
State: TGridDrawState);
var
hoje:TDateTime;
begin
if Column.Field = dbgrid1.DataSource.DataSet.FieldByName('estado') then
begin
if Column.Field.asString = 'P' then
begin
dbgrid1.Canvas.Font.Color := clGreen;
///dbgrid1.DefaultDrawDataCell(Rect, Column.Field, state); não entendi para q?
dbgrid1.Canvas.FillRect(Rect);
dbgrid1.Canvas.TextRect(Rect, Rect.Left + 3, Rect.Top + 3, 'PAGO');
end else if Column.Field.asString = 'A' then
begin
hoje:=Date;
if dbgrid1.DataSource.DataSet.FieldByName('datavencimento').AsDateTime < hoje then
begin
dbgrid1.Canvas.Font.Color := clRed;
//dbgrid1.DefaultDrawDataCell(Rect,tdbgrid(Sender).Columns[datacol].field, state); mesma coisa
dbgrid1.Canvas.FillRect(Rect);
dbgrid1.Canvas.TextRect(Rect, Rect.Left + 3, Rect.Top + 3, 'EM ATRASO');
end;
end;
end;
end; |
|
|
Voltar ao Topo |
|
|
Brunog3 Aprendiz
Registrado: Domingo, 16 de Dezembro de 2007 Mensagens: 206
|
Enviada: Sex Jan 23, 2009 9:17 am Assunto: |
|
|
O lance é que você mudou todas as colunas da linha,
faz um teste antes, checando se é determinada coluna, caso positivo Coloca Pago ou atrasado.
Por Exemplo
Código: | procedure Tfrmsituacao.DBGrid1DrawColumnCell(Sender: TObject;
const Rect: TRect; DataCol: Integer; Column: TColumn;
State: TGridDrawState);
begin
if Column.Field = dbgrid1.DataSource.DataSet.FieldByName('estado') then
begin
if Column.Field.Asstring = 'P' then
begin
dbgrid1.Canvas.Font.Color := clGreen;
dbgrid1.Canvas.FillRect(Rect);
dbgrid1.Canvas.TextOut(Rect.Left+3,Rect.Top+3,'PAGO');
end
else
if Column.Field.asString = 'A' then
begin
if dbgrid1.DataSource.DataSet.FieldByName('datavencimento').AsDateTime < Date then
begin
dbgrid1.Canvas.Font.Color := clRed;
dbgrid1.Canvas.FillRect(Rect);
dbgrid1.Canvas.TextOut(Rect.Left+3,Rect.Top+3,'EM ATRASO');
end;
end;
end;
end; |
|
|
Voltar ao Topo |
|
|
|