ActiveDelphi - Índice do Fórum ActiveDelphi
.: O site do programador Delphi! :.
 
 FAQFAQ   PesquisarPesquisar   MembrosMembros   GruposGrupos   RegistrarRegistrar 
 PerfilPerfil   Entrar e ver Mensagens ParticularesEntrar e ver Mensagens Particulares   EntrarEntrar 

alterar conteudo de celula do Dbgrid

 
Novo Tópico   Responder Mensagem    ActiveDelphi - Índice do Fórum -> Delphi
Exibir mensagem anterior :: Exibir próxima mensagem  
Autor Mensagem
fbnois
Membro Junior
Membro Junior


Registrado: Quinta-Feira, 10 de Abril de 2008
Mensagens: 361
Localização: Na frente do Computador

MensagemEnviada: Qui Jan 22, 2009 8:30 pm    Assunto: alterar conteudo de celula do Dbgrid Responder com Citação

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
Ver o perfil de Usuários Enviar Mensagem Particular Enviar E-mail MSN Messenger
MARCZEWSKI
Membro Junior
Membro Junior


Registrado: Terça-Feira, 9 de Dezembro de 2008
Mensagens: 337

MensagemEnviada: Qui Jan 22, 2009 10:25 pm    Assunto: Responder com Citação

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
Ver o perfil de Usuários Enviar Mensagem Particular MSN Messenger
MARCZEWSKI
Membro Junior
Membro Junior


Registrado: Terça-Feira, 9 de Dezembro de 2008
Mensagens: 337

MensagemEnviada: Qui Jan 22, 2009 10:34 pm    Assunto: Responder com Citação

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
Ver o perfil de Usuários Enviar Mensagem Particular MSN Messenger
mestrehurricane
Mestre
Mestre


Registrado: Domingo, 14 de Janeiro de 2007
Mensagens: 983
Localização: Belo Horizonte - MG

MensagemEnviada: Qui Jan 22, 2009 10:43 pm    Assunto: Responder com Citação

Amigo tenta dar um distinct no seu select.
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular Enviar E-mail MSN Messenger
fbnois
Membro Junior
Membro Junior


Registrado: Quinta-Feira, 10 de Abril de 2008
Mensagens: 361
Localização: Na frente do Computador

MensagemEnviada: Sex Jan 23, 2009 1:31 am    Assunto: Responder com Citação

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
Ver o perfil de Usuários Enviar Mensagem Particular Enviar E-mail MSN Messenger
MARCZEWSKI
Membro Junior
Membro Junior


Registrado: Terça-Feira, 9 de Dezembro de 2008
Mensagens: 337

MensagemEnviada: Sex Jan 23, 2009 3:37 am    Assunto: Responder com Citação

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
Ver o perfil de Usuários Enviar Mensagem Particular MSN Messenger
gilsonnrodrigues
Moderador
Moderador


Registrado: Quinta-Feira, 14 de Abril de 2005
Mensagens: 8876
Localização: Governador Valadares-MG

MensagemEnviada: Sex Jan 23, 2009 9:04 am    Assunto: Responder com Citação

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
Ver o perfil de Usuários Enviar Mensagem Particular
Brunog3
Aprendiz
Aprendiz


Registrado: Domingo, 16 de Dezembro de 2007
Mensagens: 206

MensagemEnviada: Sex Jan 23, 2009 9:17 am    Assunto: Responder com Citação

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
Ver o perfil de Usuários Enviar Mensagem Particular MSN Messenger
Mostrar os tópicos anteriores:   
Novo Tópico   Responder Mensagem    ActiveDelphi - Índice do Fórum -> Delphi Todos os horários são GMT - 3 Horas
Página 1 de 1

 
Ir para:  
Enviar Mensagens Novas: Proibido.
Responder Tópicos Proibido
Editar Mensagens: Proibido.
Excluir Mensagens: Proibido.
Votar em Enquetes: Proibido.


Powered by phpBB © 2001, 2005 phpBB Group
Traduzido por: Suporte phpBB