Passando valores de variáveis para formulários com classe.

Uma das diretrizes da programação orientada a objetos - POO - diz que os objetos devem manter seus próprios valores internamente(localmente). O formulários também são objetos. Como tratamos as passagens de valores de variáveis para formulários ?

Como você passa valores de variáveis para formulários carregados ? Declarando as variáveis como sendo Globais ? Saiba que além de ferir a diretriz da POO isto não é nada elegante e pode induzir a erros de difícil localização. Como fazer então ?

O Visual Basic fornece uma maneira de fazer isto dentro das regras da OOP : usar as propriedades Let() e Get().

Obs: Leia o artigo : Criando Classes no Visual Basic

Para tornar mais claro o assunto vamos usar um exemplo: O caso é o seguinte:

Usando o método antigo você iria criar uma variável pública com o escopo a nível de aplicação. Iria armazenar o valor presente no formulário form1 nesta variável e a seguir iria ler o conteúdo da variável no formulário form2.

Como eu disse , pode funcionar , mas seu código estará mais propenso a erros.

Qual a outra alternativa ? A alternativa POO .

Vejamos como implementar esta solução:

No formulário form2 vamos incluir as seguintes propriedades/declarações :

Private myVar as Variant

Public Property Get PassVar() As Variant
   PassVar = myVar
End Property

Public Property Let PassVar(ByVal vNovoValor As Variant)
   myVar = vNovoValor
End Property
Private Sub Form_Load()
    Label1.Caption = myVar
End Sub
código do formulário form2

Agora podemos atribuir o valor para a propriedade usando o seguinte código no formulário form1:

 Private Sub Command1_Click()
    form2.PassVar = text1.text
    form2.Show vbmodal
 End Sub
Código do formulário - form1

Veja abaixo o resultado do processamento:

Funciona assim:

  1. Quando o usuário clica no botão de comando o conteúdo da caixa de texto - text1.text é passado para a variável Passvar
  2. A seguir , usando a propriedade Let definida em form2 o valor é atribuido a variável myvar
  3. A seguir o formulário é carregado e o conteúdo de myvar é atribuido a label de form2

Mais elegante não é mesmo?. Até a próxima...