Fórum Mudar fonte de uma palavra no dbgrid #298639

06/10/2005

0

Olá pessoal.
Eu tenho um form de busca de clientes em meu sistema que é composto por um edit, um botão e um dbgrid. Eu queria que quando eu digitasse algo no edit e clicasse no botão, se fosse encontrado algum registro, a palavra que eu digitei no edit ficasse destacada(fonte, cor, tamanho) nos registros da dbgrid. Mudar a fonte de uma linha a celula inteira é facil, mas de uma palavra somente eu não sei como.
Agradeço antecipadamente.


Flaviosan

Flaviosan

Responder

Posts

06/10/2005

Marco Salles

Mudar a fonte de uma linha a celula inteira é facil, mas de uma palavra somente eu não sei como. Agradeço antecipadamente.


tb não é dificil... Veja vou te dar um exemplo que deve ser adaptado para o seu caso... Também existem outras maneiras..

Como exemplo usei o [b:496a34e3fc]Aliase DBDEMOS [/b:496a34e3fc]e a tabela [b:496a34e3fc]country.db [/b:496a34e3fc]do Delphi 5.0 e também usei um [b:496a34e3fc]table[/b:496a34e3fc] e a function [b:496a34e3fc]FindKey [/b:496a34e3fc]para Localizar o Registro. O Campo a ser pesquisado é o [b:496a34e3fc]campo Name[/b:496a34e3fc] que por definição é chave [b:496a34e3fc]primária[/b:496a34e3fc] nesta tabela

Apos localizado o Registro que contem o Campo a ser pesquisado , ai sim eu desenho na grade...

var
Achou:Boolean=False;


{$R *.DFM}

procedure TForm1.Button1Click(Sender: TObject);
begin
  if table1.FindKey([edit1.text]) then
    achou:=True
  else
    achou:=False;
end;


procedure TForm1.DBGrid1DrawColumnCell(Sender: TObject; const Rect: TRect;
  DataCol: Integer; Column: TColumn; State: TGridDrawState);
begin
if achou Then
  if (Column.Field = table1.FieldByName(´name´))and(table1.FieldByName(´name´).Value=Edit1.Text) then
    DBGrid1.Canvas.Font.Color := clRed;
  // default drawing
  DBGrid1.DefaultDrawDataCell (Rect, Column.Field, State);
end;



Responder

Gostei + 0

07/10/2005

Lelê

Não sei se funciona porque não tive oportunidade de testar, a fonte era pra ser confiável...Acho que vale a pena arriscar

O exemplo abaixo mostra como deixar cada linha do componente DBGrid de uma cor diferente, dando assim um efeito zebrado. O controle é feito no evento OnDrawColumnCell.

unit Unit1;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, Db, DBTables, Grids, DBGrids, StdCtrls;

type
TForm1 = class(TForm)
Button1: TButton;
DBGrid1: TDBGrid;
Table1: TTable;
DataSource1: TDataSource;
procedure DBGrid1DrawColumnCell(Sender: TObject; const Rect: TRect; DataCol: Integer; Column: TColumn; State: TGridDrawState);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;

implementation
{$R *.DFM}

procedure TForm1.DBGrid1DrawColumnCell(Sender: TObject; const Rect: TRect; DataCol: Integer; Column: TColumn; State: TGridDrawState);
begin
If odd(Table1.RecNo) then
begin
DBGrid1.Canvas.Font.Color:= clWhite;
DBGrid1.Canvas.Brush.Color:= clGreen;
end
else
begin
DBGrid1.Canvas.Font.Color:= clBlack;
DBGrid1.Canvas.Brush.Color:= clWhite;
end;
DBGrid1.Canvas.FillRect(Rect);
DBGrid1.Canvas.TextOut(Rect.Left+2,Rect.Top,Column.Field.AsString);
end;


T+




Responder

Gostei + 0

07/10/2005

Marco Salles

citação de Lelê
O exemplo abaixo mostra como deixar cada linha do componente DBGrid de uma cor diferente, dando assim um efeito zebrado.


Lele Acho que isso ele sabe
Mudar a fonte de uma linha a celula inteira é facil


Porque , mudar a fonte ou a dar o efeito de zebrado o raciocineo é o mesmo...


Responder

Gostei + 0

10/10/2005

Flaviosan

Valew gente pela força, mas acho que vcs nao entenderam direito o que eu quero.
Eu quero destacar no dbgrid a palavra digitada no edit, e nao o a celula.
Ex.: Digitei ´Santos´ no edit e se for encontrado algum registro somente a palavra ´Santos´ aparece destacada: Flavio Oliveira e [b:8ad0f6d1d2]Santos[/b:8ad0f6d1d2], Carlos [b:8ad0f6d1d2]Santos[/b:8ad0f6d1d2] Silva, etc.
Espero ter explicado melhor a situaçao.
Agradeço antecipadamente


Responder

Gostei + 0

10/10/2005

Flaviosan

eae gente, alguem pode me ajudar
T+


Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar