Forçar um setText

Delphi

09/11/2011

Estou usando Delphi 7, ClientDataSet e DBEdit.
Tenho um ClientDataSet com 3 campos:

Estado, Municipio, Populacao:

O funcionamento do programa é acessar o dbedit do estado, dbedit do municipio e apresentar a populacao.

No evento onSetText do campo municipio eu faço a consulta no banco de dados.
Funcionando sem problema algum.

O problema acontece quando estou no dbedit do municipio, ja coloquei o codigo e retorno para alterar o dbedit do campo estado. Ao passar pelo Dbedit do municipio ele não executa o SetText por que não foi alterado o valor dele.
Ex: Estado : SP
Municio: Sao Paulo
Populacao: 150000

Vou no Campo Estado e mudo para RS por exemplo e passo pelo campo Municipio ele nao executa o metodo SetText.

Alguem conhece alguma maneira de sempre executar o SetText, mesmo que não tenha alterado o valor do campo. (Sem ser pelo OnExit do DBEdit).

Grato

Tone

Tone Costa.

Tone Costa.

Curtidas 0

Respostas

Wilson Junior

Wilson Junior

09/11/2011

Faça uma rotina para validar o Estado e o Município, sendo chamado pelo evento OnSeteText do Estado e do Município.

Espero ter colaborado.
GOSTEI 0
Tone Costa.

Tone Costa.

09/11/2011

Obrigado, era bem isso que nao queria fazer,

na verdade, pelas minhas pesquisas, precisaria alterar o metodo datachange do dbedit, só que ele esta na private, nao conseguindo acessa-lo no meu componente,
vou estudar um pouco mais, para forçar o dbedit a atualizar essa informacao.

GOSTEI 0
Joel Rodrigues

Joel Rodrigues

09/11/2011

Uma possibilidade:
usar o evento AfterScroll dos datasets Estado e Município para calcular a população e exibí-la.

Outra possibilidade:
a população encontra-se em uma tabela relacionada com o município através de uma chave estrangeira? Em caso positivo, você pode ligar o dataset População ao dataset Município através da propriedade DataSource para que sempre que um município for selecionado, a população seja atualizada.

Seria isso...?
GOSTEI 0
Joel Rodrigues

Joel Rodrigues

09/11/2011

É... acho que não respondi bem tua pergunta, né?
Valeu a intenção.
GOSTEI 0
POSTAR