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

Text não asusme valor quando sobra apenas 1 registro


Gafanhoto

Pergunta

É o seguinte . . . Quando clico em algum registro do DBGRID, um campo TEXT abaixo assume o valor daquele campo. Está abaixo o código:

procedure TForm2.DBGrid1CellClick(Column: TColumn);
begin
   link.Text := DataModule2.ADOQuery1.FieldValues['titulo'];
end;
Estou usando um text com evento OnChange que filtra o DBGRID.
procedure TForm2.contemChange(Sender: TObject);
begin

begin
  if contem.Text <> '' then begin
  chave.Text := '';
  DataModule2.ADOQuery1.Active := False;
  DataModule2.ADOQuery1.SQL.Clear;
  DataModule2.ADOQuery1.SQL.Add('select titulo, link, conteudo from boletins_conteudo where titulo like "%'+contem.Text+'%" and idCategoria<>9 and idCategoria<>10 and idCategoria<>11');
  DataModule2.ADOQuery1.Active := true;
  end
  else
  begin
  DataModule2.ADOQuery1.Active := False;
  DataModule2.ADOQuery1.SQL.Clear;
  DataModule2.ADOQuery1.SQL.Add('select titulo, link, conteudo from boletins_conteudo order by titulo');
  DataModule2.ADOQuery1.Active := true;
  end;
end;
end;

Mas, quando dou uma filtrada no DBGRID e sobra apenas 1 registro, quando eu clico no registro que sobrou o text de nome LINK não assume o valor do título.

O que faço?

Editado por Micheus
Adicionada a tag [CODE] para melhor visualização do código. Lembre-se de utilizá-la. ;-)
Link para o comentário
Compartilhar em outros sites

4 respostass a esta questão

Posts Recomendados

  • 0

Olá Gafanhoto!

Dexa ver se eu entendi... você ta afim de mostrar num campo o registro selecionado num grid certo?

Com certeza este grid está linkado em algum componente que se refira a uma tabela, ou seja, uma ADOQuery, por exemplo.

O que você pode fazer o seguinte:

Usar um DBEdit (TDBEdit) linkado no mesmo componente que esta sendo usado no grid para trazer os registros. A partir daí basta atribuir o campo, do qual você quer mostrar os registros, ao DBEdit. Com isto, ao "andar" no grid, consequentemente serão mostrados os registros no DBEdit.

por exexmplo... você possui um componente que se refere a tabela Clientes, uma ADOQuery, por exexmplo, o grid esta linkado a este componente e exibe os campos Nome, Codigo e Fone. Para mostrar o Campo Nome, por exemplo, no DBEdit, basta linka-lo ao mesmo componente que o grid está linkado e atribuir o campo nome a ele. Ao "Andar" no grid, os registros referentes ao campo nome aparecerão no DBEdit.

Espero ter ajudado.

Abraço :D

Editado por K!ko
Link para o comentário
Compartilhar em outros sites

  • 0
O fato é que não é ao "andar" no DBGrid, e sim ao CLICAR no registro...

O fato de você estar "andando" ou clicando no grid daria na mesma, de qualquer forma você estária selecionando um registro específico na sua query.

Fazendo isso, o TEXT assume o valor do campo.
esste TEXT que você se refere é oque exatamente? que componente?

Funciona perfeitamente quando tem 2 ou mais registros.

Mas quando tem um, nada feito...

você chegou a testar da forma que sugeri?

abraço

Link para o comentário
Compartilhar em outros sites

  • 0
Mas, quando dou uma filtrada no DBGRID e sobra apenas 1 registro, quando eu clico no registro que sobrou o text de nome LINK não assume o valor do título.

Gafanhoto, você está não está usando o meio mais apropriado, porque ele depende de um click para funcionar.

Se você quer que a cada movimentação no seu dataset ligado ao DBGrid (quando você move a linha selecionada no DBGrid, você está mudando a seleção corrente no dataset), então você deve usar o componente TDataSource que está conectando o TDBGrid ao TDataset e o evento a ser utilizado é OnDataChange.

Como você trabalha com datamodule, você terá que adicionar um componente TDataSource no seu Form2 e ligar a propriedade Dataset ao dataset usado no seu DBGrid (ADOQuery1). Depois, você implementa o evento OnDataChange assim:

procedure TForm2.DSPerfilDataChange(Sender: TObject; Field: TField);
begin
   link.Text := DataModule2.ADOQuery1.FieldValues['titulo'];
end;

Abraços

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...