MaxLength em campo tipo Float do ClientDataSet
Bom dia Galera, estou com o seguinte problema, tenho ClientDataSet > DataSource > DBGrid.
No meu ClientDataSet possue um campo do tipo float, estou dando manutenção neste campo através do DBGrid.
Este campo deve aceitar no máximo 3 caracteres(MaxLength de 3 (999)).
Existe alguma propriedade no DBGrid ou ClientDataSet para configurar o mesmo?
Obs.: O MaxValue do campo deixa que eu digite quantos caracteres quizer, ele só consiste a quatidade de caracteres na sáida do campo, oque eu quero é que não deixe o usuário digitar mais de 3 caracteres.
Agradeçoo a ajuda!
Abraçooo
No meu ClientDataSet possue um campo do tipo float, estou dando manutenção neste campo através do DBGrid.
Este campo deve aceitar no máximo 3 caracteres(MaxLength de 3 (999)).
Existe alguma propriedade no DBGrid ou ClientDataSet para configurar o mesmo?
Obs.: O MaxValue do campo deixa que eu digite quantos caracteres quizer, ele só consiste a quatidade de caracteres na sáida do campo, oque eu quero é que não deixe o usuário digitar mais de 3 caracteres.
Agradeçoo a ajuda!
Abraçooo
Rafael Pimenta
Curtidas 0
Respostas
Marco Salles
11/06/2010
Bom dia Galera, estou com o seguinte problema, tenho ClientDataSet > DataSource > DBGrid.
No meu ClientDataSet possue um campo do tipo float, estou dando manutenção neste campo através do DBGrid.
Este campo deve aceitar no máximo 3 caracteres(MaxLength de 3 (999)).
Existe alguma propriedade no DBGrid ou ClientDataSet para configurar o mesmo?
Obs.: O MaxValue do campo deixa que eu digite quantos caracteres quizer, ele só consiste a quatidade de caracteres na sáida do campo, oque eu quero é que não deixe o usuário digitar mais de 3 caracteres.
Agradeçoo a ajuda!
Abraçooo
Rafael , este é o preço que sepaga ao utilizar o RAD do Delphi. Vc tem que jogar as Regras de quem
criou e definiu essas classes digamos assim . Usar DataControls é prático mas se precisamos de algo
mais esbarramos com as caracteristicas internas dos controles. Mas a maioria dos problemas existem
soluções . Umas menos piores do que as outras ( Digamos assim , pq a solução mais propicia apesar
de dar um efeito indesejável é esta mesma que vc esta usando MaxValue ). Porém existe solução
utilizando Classes Hack
A Property > property EditMask foi publicada no Tipo TStringField mas no TFloatField os engenheiros da
Borland ( Hj embarcadeiro) não Definiu .. Ficando oculta na Classe Base ( TFloat .. de Onde todas Herdam)
Ora Vamos acessar e definir essa Propriedade
Então ...
No seu Formulário defina Algo aparentemente inutil ( Servira apenas para Visualizar , Enxergar
Violando diga-se de passagem o mecanismo de Proteção de Classe e isto opõem a boa tecnica
de Programação Orientada a Objeto )
No meu ClientDataSet possue um campo do tipo float, estou dando manutenção neste campo através do DBGrid.
Este campo deve aceitar no máximo 3 caracteres(MaxLength de 3 (999)).
Existe alguma propriedade no DBGrid ou ClientDataSet para configurar o mesmo?
Obs.: O MaxValue do campo deixa que eu digite quantos caracteres quizer, ele só consiste a quatidade de caracteres na sáida do campo, oque eu quero é que não deixe o usuário digitar mais de 3 caracteres.
Agradeçoo a ajuda!
Abraçooo
TMyClassHack = class(TField) property EditMask; end;
procedure TForm3.FormShow(Sender: TObject);
begin
TMyClassHack(clientDataSet1.FieldByName('SeuCampoSeiLa')).EditMask:='999;0;_'
end;
GOSTEI 0
Marco Salles
11/06/2010
Eu respondi a duvida á noite e cometi um erro . Um erro não Um ERRÃO
A Property > property EditMask foi publicada no Tipo TStringField mas no TFloatField os engenheiros da
Borland ( Hj embarcadeiro) não Definiu .. Ficando oculta na Classe Base ( TFloat .. de Onde todas Herdam)
Mas ai que esta o Erro..
Ela não esta Protegida na Classe Base (TFloat .. de Onde todas Herdam) , mas sim ela esta Definida com
a visibilidade Publica , so não esta Publicada na Classe TFloatField
Portanto é so acessar diretamente esta Propriedade ( Não precisa da Classe HACK )
Faça direto
Simples assim
procedure TForm3.FormShow(Sender: TObject);
begin
clientDataSet1.FieldByName('SeuCampoSeiLa')).EditMask:='999;0;_'
end;
GOSTEI 0
Rafael Pimenta
11/06/2010
Desculpe a demora, respondendo ao Salles, eu acadei de acertar minha tela para utilizar sua sugestão e deu certo como esperado.
Obrigado pela ajuda e fica ae a dica do Salles para os engenheiros da embarcadeiro...
Obrigado pela ajuda e fica ae a dica do Salles para os engenheiros da embarcadeiro...
GOSTEI 0