 |
ActiveDelphi .: O site do programador Delphi! :.
|
Exibir mensagem anterior :: Exibir próxima mensagem |
Autor |
Mensagem |
lokasso Aprendiz

Registrado: Terça-Feira, 11 de Abril de 2017 Mensagens: 174
|
Enviada: Seg Nov 06, 2017 11:08 am Assunto: Perguntas referente ao OnValidate [Resolvido] |
|
|
Boa tarde galera.
É o seguinte estava tendo um erro no evento OnExit de um componente DBEdit, pois estava passando reto sem o executar, pois já tinha definido um evento geral, ai estava fuçando o google para achar alguma alternativa ao OnExit, e achei o OnValidade no próprio field, ai veio algumas dúvidas:
1- Eu posso colocar o componente (no caso DBEdit) ou apenas o campo (no caso, exemplo: "CPF") que quero que ele valide?
2- Posso colocar varias validações ou não?
3- Ele daria a mensagem assim que saisse do DBEdit (no caso ele em branco, dando uma mensagem ao usuário que o campo é obrigatório e forçando o usuário a digitar o conteudo) ou ele apenas daria a mensagem se o usuário digitasse algo e após teclar TAB ou ENTER validasse dizendo que já existe um registro cadastro?
4- OnValidade é a melhor opção para fazer essa verificação de preenchimento ou não? Se não, qual seria a melhor opção?
Desde de já agradeço
Grato
Abraços
Editado pela última vez por lokasso em Ter Nov 07, 2017 2:13 pm, num total de 1 vez |
|
Voltar ao Topo |
|
 |
imex Moderador

Registrado: Sexta-Feira, 7 de Janeiro de 2011 Mensagens: 11666
|
Enviada: Seg Nov 06, 2017 7:57 pm Assunto: |
|
|
Boa noite,
1 - Não sei se entendi corretamente, mas você pode colocar código no OnValidate só no field que quiser, e isso não torna obrigatória a colocação do DBEdit ou outro componente ligado ao field
2 - Você pode colocar quantas validações quiser no field, basta adicionar o código
3 - O OnValidate só vai ocorrer quando o conteúdo do campo for alterado; se o usuário passar pelo DBEdit sem modificar o conteúdo esse evento não vai ocorrer
4 - Se você trabalha com Data Controls ou utiliza os métodos Insert (ou Append), Edit e Post, acredito que seja a melhor opção para validar os valores do campos
Espero que ajude
Editado pela última vez por imex em Dom Out 01, 2023 5:15 pm, num total de 1 vez |
|
Voltar ao Topo |
|
 |
lokasso Aprendiz

Registrado: Terça-Feira, 11 de Abril de 2017 Mensagens: 174
|
Enviada: Seg Nov 06, 2017 9:29 pm Assunto: |
|
|
imex escreveu: | Boa noite,
1 - Não sei se entendi corretamente, mas você pode colocar código no OnValidate só no field que quiser, e isso não torna obrigatória a colocação do DBEdit ou outro componente ligado ao field
2 - Você pode colocar quantas validações quiser no field, basta adicionar o código
3 - O OnValidate só vai ocorrer quando o conteúdo do campo for alterado; se o usuário passar pelo DBEdit sem modificar o conteúdo esse evento não vai ocorrer
4 - Se você trabalha com Data Controls ou utiliza os métodos Insert (ou Append), Edit e Post, acredito que seja a melhor opção para validar os valores do campos
Espero que ajude
|
imex entendi perfeitamente, tipo o OnValidade só vai validar algo se o usuário digitar algo no campo, por exemplo o CPF, mas ele não obriga o usuário digitar no campo. Correto?
Bom brother é o seguinte, eu queria colocar uma restrição do tipo:
Citação: | if edit1.text = '' then
begin
showmessage:= ('caro usuario esse campo é obrigatório, por opseguio preenche-lo');
if edit1.canfocus then
edit1.setfocus;
(colocar aqui a validação do cpf, por exemplo)
end
else
if edit2.canfocus then
edit2.setfocus
end; |
Esse código é apenas um exemplo e ele iria no evento OnExit do edit1, o código está até pronto, porém eu tinha uma outra condição atribuida para o OnExit, o de mudar a cor quando em foco, porém se eu deixar, ele passa reto pelo código do componente, ai tive que retirar, fui fuçando pela net por uma alternativa e vi que estavam falando que o OnValidade era melhor por não dar problemas futuros, ai fiquei meio confuso sobre a explicação que encontrei em outros foruns, por isso das perguntas, posso deixar no OnExit mesmo, pois não quero que depois de n's edits na hora do usuario salvar dar a mensagem que tal campo seja obrigatório, pois vamos a um possivel evento 'fulano, vai a uma loja e deseja abrir uma conta (vamos dizer aqui que essa loja é de uma cidade media onde a loja fica em um bairro que tudo mundo conhece todo mundo) ai o atendente da loja vai abrir o cadastro do cidadao e o mesmo nao levou o cpf', imagina agora a frustração tanto do atendente quanto do cliente que perderam tempo ali um cadastrando e o outro esperando, para só depois na hora de salvar vir uma mensagem "opaaa, campo obrigatório, se fu....atendente" KKKKKKKKKKKKKKKKKKKK
Bom, enfim imex, não sei você, mas eu no lugar do atendente iria xingar um pouco o programador kkkkkkkkkkkkkkkkkkkkk
E vi esse seu post a respeito:
imex escreveu: | Boa tarde,
Acho melhor você utilizar o evento OnValidate do Field para validar o seu conteúdo.
E se o conteúdo for inválido execute a procedure Abort abaixo da exibição da mensagem. Ex:
Código: | IF DataSet1.FieldByName('NomeDoCampo').AsString = EmptyStr then
begin
ShowMessage('O preenchimento deste campo é obrigatório.');
Abort;
end; |
Espero que ajude.
|
Por isso queria a opnião ou uma luz de vocês para o melhor metodo a ser utilizado
Desculpe o pequeno livro kkkkkkkkkk
Grato |
|
Voltar ao Topo |
|
 |
imex Moderador

Registrado: Sexta-Feira, 7 de Janeiro de 2011 Mensagens: 11666
|
Enviada: Ter Nov 07, 2017 9:01 am Assunto: |
|
|
Sim, o OnValidate só vai ser executado se o usuário digitar algo.
Mas acho que você pode ter problema ao verificar se o campo foi preenchido somente no OnExit, pois o usuário pode "pular" um determinado Edit, por exemplo clicando direto em outro Edit com o mouse ou até mesmo no botão para salvar. Muitas vezes colocamos os componentes em uma ordem que acreditamos que seja a ideal, mas o usuário nem sempre segue essa ordem.
Por isso acredito que seja comum verificar o preenchimento dos campos obrigatórios no final. Se você utiliza o método Post para gravar pode utilizar o evento BeforePost do DataSet.
E para amenizar a questão com o usuário você talvez possa indicar para ele de alguma forma quais campos são obrigatórios.
Espero que ajude |
|
Voltar ao Topo |
|
 |
lokasso Aprendiz

Registrado: Terça-Feira, 11 de Abril de 2017 Mensagens: 174
|
Enviada: Ter Nov 07, 2017 2:09 pm Assunto: |
|
|
imex escreveu: | Sim, o OnValidate só vai ser executado se o usuário digitar algo.
Mas acho que você pode ter problema ao verificar se o campo foi preenchido somente no OnExit, pois o usuário pode "pular" um determinado Edit, por exemplo clicando direto em outro Edit com o mouse ou até mesmo no botão para salvar. Muitas vezes colocamos os componentes em uma ordem que acreditamos que seja a ideal, mas o usuário nem sempre segue essa ordem.
Por isso acredito que seja comum verificar o preenchimento dos campos obrigatórios no final. Se você utiliza o método Post para gravar pode utilizar o evento BeforePost do DataSet.
E para amenizar a questão com o usuário você talvez possa indicar para ele de alguma forma quais campos são obrigatórios.
Espero que ajude |
Boa tarde imex também concordo com isso, por isso que coloquei as mensagens antes de fazer o post no botao salvar de todos os formularios.
Obrigado pelos exclarecimentos, estarei fechando esse topico
Grato |
|
Voltar ao Topo |
|
 |
|
|
Enviar Mensagens Novas: Proibido. Responder Tópicos Proibido Editar Mensagens: Proibido. Excluir Mensagens: Proibido. Votar em Enquetes: Proibido.
|
|