Array
(
)

override de classe

Osocram
   - 30 set 2004

Salve galera...

Vou explicar primeiro o prob:
Tenho campos no meu BD (IB) do tipo Varchar(1), por ex: Status do cliente = A - Ativo, I - Inativo
Dae qdo eu coloco isso num dbcombobox p o usuario escolher, mas em vez d escolher A ou I eu mostro p ele Ativo ou Inativo

Fazendo o seguinte:
- no CDS dou um clique duplo e seleciono o campo Status,
- Vou no evento OnGetText

Citação:
procedure TCadCliente.CDSStatusGetText(Sender: TField; var Text: String;
DisplayText: Boolean);
begin
inherited;
if Sender.AsString=´A´ then
Text:=´Ativo´
else
if Sender.AsString=´I´ then
Text := ´Inativo´



Citação:
procedure TCadCliente.CDSStatusSetText(Sender: TField; const Text: String);
begin
inherited;
if Text=´Ativo´ then
Sender.AsString:=´A´
else
if Text=´Inativo´ then
Sender.AsString:=´I´


Pronto isso faz oq eu quero... so q p Status saum apenas 2 opcoes... mas imagina se for p as siglas de Estados... eu jah fiz aqui... mas gostaria d mudar pois ocupa mto espaco d codigo q non eh necessario...

*-*-*-*-*-*-*-*-*-*
Solucao
Estive verificando.... isto esta na classe TStringsFields no na unit DB
esta classe possui os eventos OngetText e OnSetText

Gostaria d saber se tem como eu fazer algum tipo de override (q nem nos componentes p herdar td e acrescentar, mas ae vem outro problema, como eh q eu vou fazer os DBComponentes pegarem esse Novo tipo em vez do antigo?

Alguma solucao mais viavel? (eu non queria instalar componentes d terceiros... nem sei se tem algum q faz isso.)

Vlw


Osocram
   - 01 out 2004

sobe


Afarias
   - 01 out 2004

bom, eu diria q uma solução mais simples seria ter esse código q vc já escreveu (para sigla dos estados) em uma função -- a parte -- q vc poderia usar sempre q precisar. Todo campo estado vc faria::

Text := myUtils.DescricaoEstados(Sender.AsString);



T+


Osocram
   - 04 out 2004

Afarias...

Eu tinha pensando nisso... mas tava querendo tentar fazer um componente ou algo assim... Mas acho q vou fazer isso mesmo...

Vlw