colorir palavras pesquisadas em um dbgrid
Boa tarde pessoal, ai estou precisando de uma ajuda com um codigo aqui.
tenho um dbgrid e um banco de dados em firebird. preciso fazer uma consulta no banco de dados, pegando todas as palavras digitadas, independente se forem maiusculas ou minusculas. bem consegui fazer isto indo no banco de dados e colacando o charset como 1252 e no collate win_ptbr, outra coisa é o campo se for do tipo blobo , não tem como fazer pois ele não contem o win_ptbr pelo menos no firebird. então tenho o seguinte .
primeiro criei uma procedure (localizar)
procedure TFrm_localizar.localizar;
begin
with DM.qry_localizar do
begin
close;
sql.Clear;
sql.Add(_sql);
open;
end;
end; depois no on chance do edit coloquei este codigo abaixo procedure TFrm_localizar.Edit1Change(Sender: TObject);
var
tipo:string; // declare esta variavel
begin if rbcomeca.Checked then // este é um radio button que faz com que se localize as palavras começadas porletra //digitada no edit
tipo:=Edit1.text + '%'
else if rbcontem.Checked then // este radio button localiza as palavras que contem as letras digitadas no edit // em seu meio.
tipo:= '%' + Edit1.text + '%'; _sql:= 'select * from biblia where texto LIKE' + quotedstr(tipo); localizar; // aqui a procedure criada
end; ----------------------------------------------------------------- bem esta funcionando bem, quando localiza a palavra digitada ela traz todas as linhas que contem a palavra, ficou bem legal, agora o problema é : como conserto este codigo para ao trazer a linha na pesquisa, ela traga a palavra destacada em uma cor diferente, digamos vermelho, azul etc. se alguém puder ajudar agradeço, e aproveitem o codigo acima, pois está funcionando legal. sucesso a todos geraldo leal
begin
with DM.qry_localizar do
begin
close;
sql.Clear;
sql.Add(_sql);
open;
end;
end; depois no on chance do edit coloquei este codigo abaixo procedure TFrm_localizar.Edit1Change(Sender: TObject);
var
tipo:string; // declare esta variavel
begin if rbcomeca.Checked then // este é um radio button que faz com que se localize as palavras começadas porletra //digitada no edit
tipo:=Edit1.text + '%'
else if rbcontem.Checked then // este radio button localiza as palavras que contem as letras digitadas no edit // em seu meio.
tipo:= '%' + Edit1.text + '%'; _sql:= 'select * from biblia where texto LIKE' + quotedstr(tipo); localizar; // aqui a procedure criada
end; ----------------------------------------------------------------- bem esta funcionando bem, quando localiza a palavra digitada ela traz todas as linhas que contem a palavra, ficou bem legal, agora o problema é : como conserto este codigo para ao trazer a linha na pesquisa, ela traga a palavra destacada em uma cor diferente, digamos vermelho, azul etc. se alguém puder ajudar agradeço, e aproveitem o codigo acima, pois está funcionando legal. sucesso a todos geraldo leal
Geraldo Leal
Curtidas 0
Respostas
Leandro Costa
27/07/2010
procedure TForm5.DBGrid1DrawColumnCell(Sender: TObject; const Rect: TRect;
DataCol: Integer; Column: TColumn; State: TGridDrawState);
begin
With DBGrid1 do begin
if Column.FieldName = NomeDoSeuCampodePesquisa then begin
Canvas.Brush.Color := clBlack;
Canvas.Font.Color := clRed;
end;
DefaultDrawColumnCell(Rect,DataCol,Column,state);
end;
end; Vc pode procurar na internet: Como Colorir DbGrid, Pintar DbGrid, Pintar Célular de DbGrid... Mas deste jeito que eu to te mostrando funciona...se vc quiser um programa de exemplo posso postar depois... Att.
DataCol: Integer; Column: TColumn; State: TGridDrawState);
begin
With DBGrid1 do begin
if Column.FieldName = NomeDoSeuCampodePesquisa then begin
Canvas.Brush.Color := clBlack;
Canvas.Font.Color := clRed;
end;
DefaultDrawColumnCell(Rect,DataCol,Column,state);
end;
end; Vc pode procurar na internet: Como Colorir DbGrid, Pintar DbGrid, Pintar Célular de DbGrid... Mas deste jeito que eu to te mostrando funciona...se vc quiser um programa de exemplo posso postar depois... Att.
GOSTEI 0
Geraldo Leal
27/07/2010
Leandro, obrigado pelo retorno, mais não é o que estou precisando, colorir a linha toda ou a fonte, eu já faço, o que preciso é destacar uma palavra pesquisada, dentro do campo, exemplo;
preciso destacar esta palavra aqui dentro desta linha.
entendeu, vamos dizer que procurei a palavra dentro , então ela retorna destacada,
sucesso
geraldo leal
GOSTEI 0
Geraldo Leal
27/07/2010
Leandro, obrigado pelo retorno, mais não é o que estou precisando, colorir a linha toda ou a fonte, eu já faço, o que preciso é destacar uma palavra pesquisada, dentro do campo, exemplo;
preciso destacar esta palavra aqui dentro desta linha.
entendeu, vamos dizer que procurei a palavra dentro , então ela retorna destacada,
sucesso
geraldo leal
Alguém para dar uma ajuda aqui.
obrigado
geraldo leal
GOSTEI 0
Carlos Mazzi
27/07/2010
Deu certo amigao?
GOSTEI 0
Geraldo Leal
27/07/2010
[quote ] Olá Carlos, infelizmente não consegui ainda, a linha toda ou as letras eu faço , o problema, é a palavra pesquisada. se puder ajudar ai agradeço
sucesso
geraldo leal
GOSTEI 0