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

Selecionar Linha no DBGrid e Ficar Vermelho os registros do outro DBgr


robinhocne

Pergunta

Boa Noite Pessoal,

Estou tentando fazer assim;

No DbGrid1 eu tenho os seguintes registros retornados do banco

Formulario Descricao

PESCAD001 Cadastro de Pessoas

PROCAD006 Cadastro de Produtos

Ai no DbGrid2 eu tenho os seguintes campos

Operacao Descricao Formulario

001 Vendas PESCAD001

002 Troca PESCAD001

002 Troca PROCAD006

003 Condicional PROCAD006

Então quando clicar no registro do dbgrid1 queria que os registros que fosse corresponde ao fomulario que clicou no dbgrid1 ele fique em vemelhor o nome.

tentei fazer assim.....

if dbgrid1.Fields[0].AsString = dbgrid2.Fields[2].AsString then
     begin
       dbgrid2.Canvas.Font.Color:= clRed;
     end;

   dbgrid2.Canvas.FillRect(Rect);
   dbgrid2.DefaultDrawColumnCell(Rect, DataCol, Column, State);

mas ai ele fica vermelho smente quando pesquisa o formulário.

Link para o comentário
Compartilhar em outros sites

8 respostass a esta questão

Posts Recomendados

  • 0
isso só é possivel se houver relacionamento entre as tabelas, depois é só usar o evento OnDrawColumnCell do DBgrid para colorir a celula

abraço

O relacionamento que as tabelas tem é o campo Formulario do Dbgrid1 e o MovForm do Dbgrid2, ambos é o mesmo valor porque é assim quando eu clicar no DbGrid1 ai verificar no DbGrid2 quais registros tem referente ao do DbGrid1.

Link para o comentário
Compartilhar em outros sites

  • 0
veja seu outro post ... a idéia é semelhante usando o evento OnDrawColumnCell

abraço

Então....eu coloquei o codigo abaixo no evento OnDrawColumnCell do DbGrid2, mas não funfou

if dbgrid1.Fields[0].AsString = dbgrid2.Fields[2].AsString then
     begin
       dbgrid2.Canvas.Font.Color:= clRed;
     end;

   dbgrid2.Canvas.FillRect(Rect);
   dbgrid2.DefaultDrawColumnCell(Rect, DataCol, Column, State);

Link para o comentário
Compartilhar em outros sites

  • 0
if dbgrid1.Fields[0].AsString = dbgrid2.Fields[2].AsString then

voce não tem que comparar se o campo do dbgrid1 é igual ao campo do dbgrid2, e sim se o campo do dbgrid1 é o campo que voce quer...

exemplo:

procedure TForm1.DBGrid1DrawColumnCell(Sender: TObject; const Rect: TRect;
  DataCol: Integer; Column: TColumn; State: TGridDrawState);
begin
   if (Column.Field.FieldName = 'TIPO') then
      begin
            DBGrid2.Canvas.Font.Color:= clRed;
            DBGrid2.Canvas.FillRect(Rect);
            DBGrid2.DefaultDrawColumnCell(Rect, DataCol, Column, State);
      end
   else
      begin
            DBGrid2.Canvas.Font.Color:= clBlack;
            DBGrid2.Canvas.FillRect(Rect);
            DBGrid2.DefaultDrawColumnCell(Rect, DataCol, Column, State);
      end;
end;

abraço

Link para o comentário
Compartilhar em outros sites

  • 0
if dbgrid1.Fields[0].AsString = dbgrid2.Fields[2].AsString then

voce não tem que comparar se o campo do dbgrid1 é igual ao campo do dbgrid2, e sim se o campo do dbgrid1 é o campo que voce quer...

exemplo:

procedure TForm1.DBGrid1DrawColumnCell(Sender: TObject; const Rect: TRect;
  DataCol: Integer; Column: TColumn; State: TGridDrawState);
begin
   if (Column.Field.FieldName = 'TIPO') then
      begin
            DBGrid2.Canvas.Font.Color:= clRed;
            DBGrid2.Canvas.FillRect(Rect);
            DBGrid2.DefaultDrawColumnCell(Rect, DataCol, Column, State);
      end
   else
      begin
            DBGrid2.Canvas.Font.Color:= clBlack;
            DBGrid2.Canvas.FillRect(Rect);
            DBGrid2.DefaultDrawColumnCell(Rect, DataCol, Column, State);
      end;
end;

abraço

mas ai não vai dar certo....porque eu tinha que verificar, quando eu clicar na linha do DbGrid1, ai ele tem que ver o o formulario que está selecionado no campo Formulario do DbGrid1 e comparar com o campo MovForm do DbGrid2 para que ai se for igual ao selecionado ele possa pintar e quando mudar para a outra linha do DbGrid1 verificar se tem algum resgistro igual no DbGrid2 para selecionar, dessa maneira ele pinta a celula do registro.

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,3k
×
×
  • Criar Novo...