Fórum Mudar fonte de uma palavra no dbgrid #298639
06/10/2005
0
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
Curtir tópico
+ 0Posts
06/10/2005
Marco Salles
tb não é dificil... Veja vou te dar um exemplo que deve ser adaptado para o seu caso... Também existem outras maneiras..
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;
Gostei + 0
07/10/2005
Lelê
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+
Lê
Gostei + 0
07/10/2005
Marco Salles
Lele Acho que isso ele sabe
Porque , mudar a fonte ou a dar o efeito de zebrado o raciocineo é o mesmo...
Gostei + 0
10/10/2005
Flaviosan
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
Gostei + 0
10/10/2005
Flaviosan
T+
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)