Ir para conteúdo
Fórum Script Brasil
  • 0

(Resolvido)Destacar Linha DBGrid


João Paulo Taraciuk

Pergunta

Olá pessoal, estou tentado realizar um procedimento para destacar uma linha do dbgrid, assim

EU tenho duas tabelas, pedidos e contas à receber, quando um pedido é finalizado ele é adicionado no contas à receber, e aí vai o código do pedido, mas todos aparecem em um dbgrid, independente de terem sido finalizados ou não, o que eu quero fazer é mais ou menos assim, quero fazer um select verificando o código do pedido nas duas tabelas, e, se o record count for maior que Zero, aí destaca a linha do produto que tem o código nas duas tabelas, acredito que o select ficaria assim:

Select c.id_pedido,p.pedido_id from contas_receber c, pedidos p where (c.id_pedido=p.pedido_id)

Aí, se o número existisse nas duas tabelas, destaca a linha do pedido.

Utilizo Delphi 7 e MySql3.23

Qualquer dica eu agradeço!!

Editado por João Paulo Taraciuk
Link para o comentário
Compartilhar em outros sites

4 respostass a esta questão

Posts Recomendados

  • 0
o que eu quero fazer é mais ou menos assim, quero fazer um select verificando o código do pedido nas duas tabelas, e, se o record count for maior que Zero, aí destaca a linha do produto que tem o código nas duas tabelas

Select c.id_pedido,p.pedido_id from contas_receber c, pedidos p where (c.id_pedido=p.pedido_id)

A select neste caso trara somente os registros que forem iguais e neste caso destacaria todas as linhas, ou voce pode destacar apenas os registros em que um campo numerico seja maior que zero

exemplo: Usando o evento OnDrawColumnCell do DBgrid

procedure TForm1.DBGrid1DrawColumnCell(Sender: TObject;
  const Rect: TRect; DataCol: Integer; Column: TColumn;
  State: TGridDrawState);
begin

   if (Column.Field.FieldName = 'CAIXA') then
      begin
         if CDS_CaixaP.FieldByName ('CAIXA').Value > 0 then
            begin
               //DBGrid1.Canvas.Brush.Color:= clRed;
               //DbGrid1.Canvas.Font.Style := [fsBold];
               DBGrid1.Canvas.Font.Color:= clRed;
               DBGrid1.Canvas.FillRect(Rect);
               DBGrid1.DefaultDrawColumnCell(Rect, DataCol, Column, State);
            end
         else
            begin
               DBGrid1.Canvas.Font.Color:= clBlack;
               DBGrid1.Canvas.FillRect(Rect);
               DBGrid1.DefaultDrawColumnCell(Rect, DataCol, Column, State);
            end;
      end;

end;

abraço

Link para o comentário
Compartilhar em outros sites

  • 0
A select neste caso trara somente os registros que forem iguais e neste caso destacaria todas as linhas

Bem lembrado, aí ele trará somente os registros que estiverem nas duas tabelas, então, teria como eu fazer um select que traga todos os valores que estiverem na tabela pedidos, e destaque somente os que estiverem nas duas tabelas.

Tipo, pega um registro da tabela pedidos e compara para ver se ele existe na tabela Contas_Receber se sim, destaca a linha ou disable ela, caso contrário se existe na tabela pedidos e não na tabela contas_receber, apenas mostra no dbgrid.

O Objetivo disso é o seguinte, a tabela pedidos é composta dos pedidos que já foram finalizados e podem ser entregues aos clientes, mas alguns já foi realizado o faturamento e outros não, então preciso que os pedidos que ainda não foi realizado o faturamento esteja habilitado para ser faturado a qualquer momento(O usuário dá dois cliques no registro e abre a tela de faturamento), já os que foi realizado o faturamento seja destacado ou até, que não realize evento nenhum ao ser clicado no grid.

Editado por João Paulo Taraciuk
Link para o comentário
Compartilhar em outros sites

  • 0

Bem lembrado, aí ele trará somente os registros que estiverem nas duas tabelas, então, teria como eu fazer um select que traga todos os valores que estiverem na tabela pedidos, e destaque somente os que estiverem nas duas tabelas.

Voce pode usar o < Left Outer Join >

exemplo

http://db.apache.org/derby/docs/dev/pt_BR/...fsqlj18922.html

então preciso que os pedidos que ainda não foi realizado o faturamento esteja habilitado para ser faturado a qualquer momento(O usuário dá dois cliques no registro e abre a tela de faturamento), já os que foi realizado o faturamento seja destacado ou até, que não realize evento nenhum ao ser clicado no grid.

mas sugiro utilizar um campo de controle para isto, que ficaria muito simples

abraço

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,4k
×
×
  • Criar Novo...