Alterar a cor do DbEdit conforme o texto contido nele
Boa tarde a todos, gostaria de ajuda dos amigos no seguinte sentido:
Em um form tenho um DbEdit e preciso que ele se ele estiver sem preenchimento a cor de fundo seja a normal branco, se ele for preenchido com a palavra "SIM" a cor de fundo seja vermelha e se for "Não" fique na cor amarela. Uso o Delphi 7 e banco de dados em access.
Em um form tenho um DbEdit e preciso que ele se ele estiver sem preenchimento a cor de fundo seja a normal branco, se ele for preenchido com a palavra "SIM" a cor de fundo seja vermelha e se for "Não" fique na cor amarela. Uso o Delphi 7 e banco de dados em access.
Osvaldo Pinto
Curtidas 0
Respostas
Marco Salles
23/10/2015
Bem no evento onChange do Seu Field ( Campo)
Faça
Faça
procedure TSeuForm.SeuDataSet1ValorChange(Sender: TField); begin case AnsiIndexStr(UpperCase(Sender.AsString), ['', 'SIM','NÃO']) of 0:DBEdit1.Color:=clWindow; 1:DBEdit1.Color:=clRed; 2:DBEdit1.Color:=clYellow; else DBEdit1.Color:=clWindow; end;
GOSTEI 0
Osvaldo Pinto
23/10/2015
Deu o seguinte erro:
[img]http://arquivo.devmedia.com.br/forum/imagem/457297-20151023-161538.jpg[/img]
[img]http://arquivo.devmedia.com.br/forum/imagem/457297-20151023-161538.jpg[/img]
GOSTEI 0
Marco Salles
23/10/2015
Declare abaixo da secção Implementation
implementation
{$R *.dfm}
uses StrUtils;GOSTEI 0
Osvaldo Pinto
23/10/2015
Marco Antonio diminuiu a quantidade de erros mas continua dando erro:
[img]http://arquivo.devmedia.com.br/forum/imagem/457297-20151023-174322.jpg[/img]
[img]http://arquivo.devmedia.com.br/forum/imagem/457297-20151023-174322.jpg[/img]
GOSTEI 0
Marco Salles
23/10/2015
Bem no evento onChange do Seu Field ( Campo)
Vc esta colocando Change do Edit .. Tb poderia dar mais é outro código
GOSTEI 0
Osvaldo Pinto
23/10/2015
Marcos Antonio vamos ver se eu entendi direito, fui no meu DataModule (Dados), na minha tabela TblCrim abri o field editor no campo desejado no evento onChange coloquei o código que vc me forneceu, incrementei o uso da unit StrUtils, e também do meu formulário que contém a o DbEdit10, ao digitar o código apenas acrescentei no nome do Form que tem o DbEdit para indicar o caminho, porém ao compilar ele deu erro conforme abaixo:
[img]http://arquivo.devmedia.com.br/forum/imagem/457297-20151023-192450.jpg[/img]
segue cópia da unit UDados:
unit UDados;
interface
uses
SysUtils, Classes, DB, ADODB;
type
TDados = class(TDataModule)
ConId: TADOConnection;
TblCrim: TADODataSet;
TblCrimApelido: TWideStringField;
TblCrimData_Nascimento: TDateTimeField;
TblCrimDataCadastro: TDateTimeField;
TblCrimIdCrim: TAutoIncField;
TblCrimLinkFotoCrim: TWideStringField;
TblCrimMae: TWideStringField;
TblCrimNacionalidade: TWideStringField;
TblCrimNaturalidade: TWideStringField;
TblCrimNome: TWideStringField;
TblCrimPai: TWideStringField;
TblCrimProcurado: TWideStringField;
TblCrimRG: TWideStringField;
TblCrimUF: TWideStringField;
DsCrim: TDataSource;
TblAnt: TADODataSet;
TblAntBOPC: TWideStringField;
TblAntBOPM: TWideStringField;
TblAntCrime: TWideStringField;
TblAntData: TDateTimeField;
TblAntFaccao: TWideStringField;
TblAntIdAntec: TAutoIncField;
TblAntIdCrim: TIntegerField;
TblAntInquerito: TWideStringField;
TblAntProcesso: TWideStringField;
TblAntQualFaccao: TWideStringField;
DsAnt: TDataSource;
TblDbPr: TADODataSet;
TblDbPrBairroDbPrisao: TWideStringField;
TblDbPrBOPCDbPrisao: TWideStringField;
TblDbPrBOPMDbPriso: TWideStringField;
TblDbPrDataDbPrisao: TDateTimeField;
TblDbPrEndDbPrisao: TWideStringField;
TblDbPrFlagrante: TWideStringField;
TblDbPrHistDbPrisao: TMemoField;
TblDbPrHoraDbPrisao: TDateTimeField;
TblDbPrIdCrim: TIntegerField;
TblDbPrIdDbPrisao: TAutoIncField;
TblDbPrLogDbPrisao: TWideStringField;
TblDbPrMotivoDbPrisao: TWideStringField;
TblDbPrMunDbPrisao: TWideStringField;
TblDbPrNumDbPrisao: TIntegerField;
TblDbPrPoliciaisDbPrisao: TWideStringField;
TblDbPrUFDbPrisao: TWideStringField;
TblDbPrVitDbPrisao: TWideStringField;
DsDbPr: TDataSource;
TblCp: TADODataSet;
TblCpDataCadParsa: TDateTimeField;
TblCpIdComparsa: TAutoIncField;
TblCpIdCrim: TIntegerField;
TblCpLinkFotoParsa: TWideStringField;
TblCpNomeParsa: TWideStringField;
TblCpRGParsa: TWideStringField;
TblCpVulgoParsa: TWideStringField;
DsCp: TDataSource;
TblEnd: TADODataSet;
TblEndBairroEndCrim: TWideStringField;
TblEndDataCadEndCrim: TDateTimeField;
TblEndEndEndCrim: TWideStringField;
TblEndIdCrim: TIntegerField;
TblEndidEndCrim: TAutoIncField;
TblEndLogEndCrim: TWideStringField;
TblEndMunicEndCrim: TWideStringField;
TblEndNumEndCrim: TWideStringField;
TblEndObsEnd: TMemoField;
TblEndUFEndCrim: TWideStringField;
DsEnd: TDataSource;
TblMod: TADODataSet;
DsMod: TDataSource;
TblModIdCrim: TIntegerField;
TblModIdModus: TAutoIncField;
TblModModus: TMemoField;
TblSp: TADODataSet;
TblSpDataFotoTatu: TDateTimeField;
TblSpDescricaoTatu: TWideStringField;
TblSpIdCrim: TIntegerField;
TblSpIdTatu: TAutoIncField;
TblSpLinkFotoTatu: TWideStringField;
TblSpLocalTatu: TWideStringField;
DsSp: TDataSource;
procedure TblCrimProcuradoChange(Sender: TField);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Dados: TDados;
implementation
uses UCad, StrUtils;
{$R *.dfm}
procedure TDados.TblCrimProcuradoChange(Sender: TField);
begin
case AnsiIndexStr(UpperCase(Sender.AsString), ['', 'SIM','NÃO']) of
0:FrmCad.DBEdit10.Color:=clWindow;
1:FrmCad.DBEdit10.Color:=clRed;
2:FrmCad.DBEdit10.Color:=clYellow;
else
FrmCad.DBEdit10.Color:=clWindow;
end;
end;
end.
[img]http://arquivo.devmedia.com.br/forum/imagem/457297-20151023-192450.jpg[/img]
segue cópia da unit UDados:
unit UDados;
interface
uses
SysUtils, Classes, DB, ADODB;
type
TDados = class(TDataModule)
ConId: TADOConnection;
TblCrim: TADODataSet;
TblCrimApelido: TWideStringField;
TblCrimData_Nascimento: TDateTimeField;
TblCrimDataCadastro: TDateTimeField;
TblCrimIdCrim: TAutoIncField;
TblCrimLinkFotoCrim: TWideStringField;
TblCrimMae: TWideStringField;
TblCrimNacionalidade: TWideStringField;
TblCrimNaturalidade: TWideStringField;
TblCrimNome: TWideStringField;
TblCrimPai: TWideStringField;
TblCrimProcurado: TWideStringField;
TblCrimRG: TWideStringField;
TblCrimUF: TWideStringField;
DsCrim: TDataSource;
TblAnt: TADODataSet;
TblAntBOPC: TWideStringField;
TblAntBOPM: TWideStringField;
TblAntCrime: TWideStringField;
TblAntData: TDateTimeField;
TblAntFaccao: TWideStringField;
TblAntIdAntec: TAutoIncField;
TblAntIdCrim: TIntegerField;
TblAntInquerito: TWideStringField;
TblAntProcesso: TWideStringField;
TblAntQualFaccao: TWideStringField;
DsAnt: TDataSource;
TblDbPr: TADODataSet;
TblDbPrBairroDbPrisao: TWideStringField;
TblDbPrBOPCDbPrisao: TWideStringField;
TblDbPrBOPMDbPriso: TWideStringField;
TblDbPrDataDbPrisao: TDateTimeField;
TblDbPrEndDbPrisao: TWideStringField;
TblDbPrFlagrante: TWideStringField;
TblDbPrHistDbPrisao: TMemoField;
TblDbPrHoraDbPrisao: TDateTimeField;
TblDbPrIdCrim: TIntegerField;
TblDbPrIdDbPrisao: TAutoIncField;
TblDbPrLogDbPrisao: TWideStringField;
TblDbPrMotivoDbPrisao: TWideStringField;
TblDbPrMunDbPrisao: TWideStringField;
TblDbPrNumDbPrisao: TIntegerField;
TblDbPrPoliciaisDbPrisao: TWideStringField;
TblDbPrUFDbPrisao: TWideStringField;
TblDbPrVitDbPrisao: TWideStringField;
DsDbPr: TDataSource;
TblCp: TADODataSet;
TblCpDataCadParsa: TDateTimeField;
TblCpIdComparsa: TAutoIncField;
TblCpIdCrim: TIntegerField;
TblCpLinkFotoParsa: TWideStringField;
TblCpNomeParsa: TWideStringField;
TblCpRGParsa: TWideStringField;
TblCpVulgoParsa: TWideStringField;
DsCp: TDataSource;
TblEnd: TADODataSet;
TblEndBairroEndCrim: TWideStringField;
TblEndDataCadEndCrim: TDateTimeField;
TblEndEndEndCrim: TWideStringField;
TblEndIdCrim: TIntegerField;
TblEndidEndCrim: TAutoIncField;
TblEndLogEndCrim: TWideStringField;
TblEndMunicEndCrim: TWideStringField;
TblEndNumEndCrim: TWideStringField;
TblEndObsEnd: TMemoField;
TblEndUFEndCrim: TWideStringField;
DsEnd: TDataSource;
TblMod: TADODataSet;
DsMod: TDataSource;
TblModIdCrim: TIntegerField;
TblModIdModus: TAutoIncField;
TblModModus: TMemoField;
TblSp: TADODataSet;
TblSpDataFotoTatu: TDateTimeField;
TblSpDescricaoTatu: TWideStringField;
TblSpIdCrim: TIntegerField;
TblSpIdTatu: TAutoIncField;
TblSpLinkFotoTatu: TWideStringField;
TblSpLocalTatu: TWideStringField;
DsSp: TDataSource;
procedure TblCrimProcuradoChange(Sender: TField);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Dados: TDados;
implementation
uses UCad, StrUtils;
{$R *.dfm}
procedure TDados.TblCrimProcuradoChange(Sender: TField);
begin
case AnsiIndexStr(UpperCase(Sender.AsString), ['', 'SIM','NÃO']) of
0:FrmCad.DBEdit10.Color:=clWindow;
1:FrmCad.DBEdit10.Color:=clRed;
2:FrmCad.DBEdit10.Color:=clYellow;
else
FrmCad.DBEdit10.Color:=clWindow;
end;
end;
end.
GOSTEI 0
Marco Salles
23/10/2015
Calma o evento é este mesmo
O que vc esta fazendo não é certo .. Mas vai funcionar
O Correto é vc deixar o DataSouce cuidar disse no Formulário que esta o Dbedit e não
dar uses no Formulário no DataModulo que tem o DataSet ...
Mas como eu disse , vai funcionar porém não é correto
No caso ele esta reclamando que as cores não estão definidas
Tem que dar uses
porém se vc quiser fazer o correto tem que fazer o seguinte
mais trabalhoso , porém mais correto
No Private do Form
implemente
No Oncreate do form defina
Agora vai né ??
O que vc esta fazendo não é certo .. Mas vai funcionar
O Correto é vc deixar o DataSouce cuidar disse no Formulário que esta o Dbedit e não
dar uses no Formulário no DataModulo que tem o DataSet ...
Mas como eu disse , vai funcionar porém não é correto
No caso ele esta reclamando que as cores não estão definidas
Tem que dar uses
Vcl.Graphics;
porém se vc quiser fazer o correto tem que fazer o seguinte
mais trabalhoso , porém mais correto
No Private do Form
private
{ Private declarations }
procedure OnValorChange(sender:TField);implemente
procedure TForm1.OnValorChange(sender: TField); begin case AnsiIndexStr(UpperCase(Sender.AsString), ['', 'SIM','NÃO']) of 0:DBEdit1.Color:=clWindow; 1:DBEdit1.Color:=clRed; 2:DBEdit1.Color:=clYellow; else DBEdit1.Color:=clWindow; end; end;
No Oncreate do form defina
procedure TForm1.FormCreate(Sender: TObject);
begin
DataSource1.DataSet.FieldByName('Valor').OnChange:=Self.OnValorChange;
end;Agora vai né ??
GOSTEI 0
Marco Salles
23/10/2015
Desculpe .. O Nome do campo Valor tem que substituir pelo Campo que vc quer ..
GOSTEI 0