Se você tem um objeto que grava suas propriedades no banco de dados e quer embutir no próprio objeto todas as regras para validar seus dados antes que eles possam ser persistidos no bd, você pode valer-se do modelo deste projeto (objfrm.zip) para estabelecer o relacionamento do objeto com o formulário usado para coletar seus dados. Neste projeto, a classe Class1 controla o Form1. Form1 possui a propriedade Objeto para conter uma instância de Class1 criada no evento Load. No Form1 o usuário digita os dados que irão para as propriedades de Class1. No evento Validate dos controles, os dados são atribuídos às propriedades do objeto Class1, que faz a validação dos dados chamando o método Validar. Quando ocorre um erro, o método Validar retorna False e dispara um evento que é tratado em Form1. Neste evento, é passado como argumento a mensagem de erro a ser exibida numa caixa de mensagem. Se validar retornar false (dados inválidos), a propriedade dispara um erro que é tratado no evento Validate do controle para manter o foco no controle. O objeto Class1 possui a propriedade BrokenRules (regras quebradas), que contém um objeto da classe CBrokenRules. À medida que método Validar é executado, todas as descrições de irregularidades nos dados vão sendo adicionadas ao objeto CBrokenRules. Quando a validação de um dado não encontra irregularidade, a descrição do erro é removida de CBrokenRules. No evento click do botão Ok do Form1, é chamado o método Validar do objeto para uma conferência total e silenciosa (não são disparados eventos de erro). Se o método Validar retornar False, é exibida a lista das irregularidades pendentes para o usuário.
Para validações mais complexas, que exigem alterações nos estados da interface gráfica, você pode fazer com que Class1 dispare outros eventos durante a execução do método Validar. Estes eventos podem ser tratados dentro do formulário, pois a variável usada no formulário para conter o objeto de Class1 é declarada com a cláusula WithEvents.