Fórum Alguem que entenda de DbGrid #162545
26/05/2003
0
O usuario preenche a tabela e se ele preencher o campo da observação queria deixar algo nessa linha que ele pudesse saber que o campo da observação esta preenchido naquele registro. Obrigado
Isaac Cavalcanti
Curtir tópico
+ 0Posts
26/05/2003
Ma_cunhado
assim
if Trim(query1.fieldbyname(´observacao´).asString)<>´´ then
//tá preenchido
else
// nao esta
Gostei + 0
27/05/2003
Cruz
[b:7e4bdd3184]Como criar uma coluna neutra em um TDBGrid.[/b:7e4bdd3184]
Por José Cruz.
Se vc possui um campo longo, do tipo memo por exemplo, e quer indicar em um DBGrid que este campo não está vazio. Usando, por exemplo, um sinal de que aquele registro possui uma observação. Vc
pode usar a técnica descrita abaixo.
1) De duplo clique sobre o DBGrid onde quer criar a coluna neutra.
2) Na caixa ´Editing DBG... Columns´ clique no ícone ´New item´
3) Selecione o item criado. (obs: não atribua nenhum campo à esta coluna.
Deixe a propriedade FieldName em branco)
4) Clique na propriedade Title para expandi-la e mude a sub-propriedade ´Caption´
para o que vc quiser. (Ex. ´*´, ou ´#´)
5) Mude a proprieade ´Width´ para 15.
Selecione novamente o DBGrid em questão.
No evento OnDrawColumnCell do DBGrid em questão escreva o código abaixo.
//inicio do código
with DBGrid1.DataSource.DataSet,DBGrid1 do {troque dbgrid1 pelo nome do seu
dbgrid}
begin
if(Trim(FieldByName(´obs´).Text) <> ´´) then {troque ´obs´ pelo campo
que vd quer verificar}
if(Column.Index = 0) then
begin
Canvas.Font.Color:= clRed;
Canvas.TextOut(Rect.Left+2,Rect.Top+2,´#´);
end;
end;
//fim do código
Veja abixo o exempo completo. Para usá-lo crie uma nova aplicação.
Coloque um ClientDataset, um DataSource e um DBGrid no form. Deixe o nome do form como Form1.
Substitua o bloco entre ´Interface e end.´ pelo código abaixo.
//inicio do bloco ->
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, DB, DBClient, Grids, DBGrids;
type
TForm1 = class(TForm)
ClientDataSet1: TClientDataSet;
DataSource1: TDataSource;
DBGrid1: TDBGrid;
ClientDataSet1nome: TStringField;
ClientDataSet1obs: TStringField;
ClientDataSet1temp: TStringField;
procedure FormCreate(Sender: TObject);
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.FormCreate(Sender: TObject);
var
s:string;
begin
s:= ExtractFilePath(Application.ExeName)+´tmp.cds´;
ClientDataSet1.FileName:= s;
if(not FileExists(s)) then
begin
ClientDataSet1.CreateDataSet;
ClientDataSet1.SaveToFile(s);
end;
ClientDataset1.Open;
end;
procedure TForm1.DBGrid1DrawColumnCell(Sender: TObject; const Rect: TRect;
DataCol: Integer; Column: TColumn; State: TGridDrawState);
begin
with DBGrid1.DataSource.DataSet,DBGrid1 do {troque dbgrid1 pelo nome do seu
dbgrid}
begin
if(Trim(FieldByName(´obs´).Text) <> ´´) then {troque ´obs´ pelo campo
que vd quer verificar}
if(Column.Index = 0) then
begin
Canvas.Font.Color:= clRed;
Canvas.TextOut(Rect.Left+2,Rect.Top+2,´#´);
end;
end;
end;
//fim do bloco
[b:7e4bdd3184][/b:7e4bdd3184]
Gostei + 0
23/02/2008
Robusto
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)